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去配置所有服务名字不可调用即可,这是我们的情况就是,请求通过网关,按照网关的路由配置去访问对应的真实服务!