SpringCloud-05-Zuul网关

关于zuul网关,它所做的就是为所有服务提供一个唯一的入口,通过配置的路由分和路由映射发从而实现请求获取真实服务!

1.什么是Zuul

Zull包含了对请求的路由(用来跳转的)和过滤两个最主要功能:

  • 路由功能负责将外部请求转发到具体的微服务实例上,是实现外部访问统一入口的基础,
  • 而过滤器功能则负责对请求的处理过程进行干预,是实现请求校验,服务聚合等功能的基础。Zuul和Eureka进行整合,将Zuul自身注册为Eureka服务治理下的应用,同时从Eureka中获得其他服务的消息,也即以后的访问微服务都是通过Zuul跳转后获得。
    在这里插入图片描述
    注意:Zuul尽管起着过滤器和路由的功能,但是它仍然是一个客户端的服务,注册在Eureka当中!

2.Zuul的使用

  • 导入依赖
需要导入两个依赖:首先EurekaClient和Zuul的依赖
    <!--Hystrix熔断机制-->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-hystrix</artifactId>
        <version>1.4.6.RELEASE</version>
    </dependency>
    
    <!--Zuul网关-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-zuul</artifactId>
            <version>1.4.6.RELEASE</version>
        </dependency>
        我们需要在yaml配置文件当中进行一些相关的配置!1,将zuul作为一个客服端服务注册在Eureka当中 2,对Zuul配置相关的路由和需要隐藏的服务名字,

  • 编写配置

我们需要在yaml配置文件当中进行一些相关的配置!首先将zuul作为一个客服端服务注册在Eureka当中,其次是对Zuul配置相关的路由和需要隐藏的服务名字

server:
  port: 9527

spring:
  application:
    name: springcloud-zuul

eureka:
  client:
    service-url:
      defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/  #指定注册中心的地址
  instance:
    instance-id: zuul9527.com
    prefer-ip-address: true  #真实ip地址隐藏,显示当前服务的ip

info:
  app.name: SQX-SpringCloud
  company.name: Alibaba

zuul:
  routes:   #将服务名和映射地址以<k,v>键值对的方式配置
    SPRINGCLOUD-PROVIDER-DEPT: /mydept/**
    SPRINGCLOUD-04: /mydept02/**

    #mydept.serviceId: springcloud-provider-dept
    #mydept.path: /mydept/**
  #ignored-services: springcloud-provider-dept  #不能使用springcloud-provider-dept路径访问
  ignored-services: "*"   #忽略所有的微服务名称访问路径访问
  • 开启功能
    在主启动类当中开启网关功能,开启客户端服务功能
@SpringBootApplication
@EnableEurekaClient
@EnableZuulProxy
public class ZuulApplication_9527 {
    public static void main(String[] args) {
        SpringApplication.run(ZuulApplication_9527.class,args);
    }
}

总结:

首先是就就是网关开启后,网关会以服务的身份代理注册中心的所有服务,然后就是所有的请求过来之后,都会经过网关,去调用服务(此时我们可以修改c盘的host文件去表示网关),调用真实服务就是以服务名字调用网关下的服务,此时才可以获取到我们的真实服务,但是在此时尽管我们的入口实现了统一,但是我们的真实服务名字已经暴露,我们可以在zuul中去通过路由配置隐藏我们的真实服务名字,从而以映射的名字去访问真实服务,但是我们此时还是可以通过服务名字去调到真实服务,我们在zuul去配置所有服务名字不可调用即可,这是我们的情况就是,请求通过网关,按照网关的路由配置去访问对应的真实服务!

posted @ 2022-01-23 20:36  爪洼ing  阅读(32)  评论(0编辑  收藏  举报