目录
一、服务网关-spring cloud zuul
1.理解zuul
1.1.为什么要zuul
试想一下如果我们有很多的微服务,他们都需要登录之后才能访问,那么我需要在每个微服务都去做一套登录检查逻辑,这样是不是会存在大量重复的代码和工作量,我们希望的是把登录检查这种公共的逻辑进行统一的抽取,只需要做一套检查逻辑即可,而zuul就可以用来干这类事情,我们可以把zuul看做是微服务的大门,所有的请求都需要通过zuul将请求分发到其他微服务,根据这一特性我们就可以在zuul做统一的登录检查,下游的微服务不再处理登录检查逻辑。
1.2.什么是zuul
Zuul 是netflix开源的一个API Gateway 服务器, 本质上是一个web servlet(filter)应用。Zuul 在云平台上提供动态路由(请求分发),监控,弹性,安全等边缘服务的框架。Zuul 相当于是设备和 Netflix 流应用的 Web 网站后端所有请求的前门,也要注册入Eureka,用一张图来理解zuul在架构中的的角色:
需要注意的是,zuul本身是一个独立的服务,默认集成了Ribbon,zuul通过Ribbon将客户端的请求分发到下游的微服务,所以zuul需要通过Eureka做服务发行,同时zuul也集成了Hystrix。
根据上图理解 ,我们需要建立独立的工程去搭建Zuul服务,同时需要把Zuul注册到EurekaServer,因为当请求过来时,zuul需要通过EurekaServer获取下游的微服务通信地址,使用Ribbon发起调用。
2.zuul的搭建
搭建zuul工程springcloud-zuul-server-1060 ,搭建好的工程模块如下:
<modules>
<module>springcloud-netflix-eureka</module>
<module>springcloud-netflix-server-user</module>
<module>springcloud-netflix-server-order</module>
<module>springcloud-netflix-common</module>
<module>springcloud-netflix-server-pay</module>
<module>springcloud-netflix-server-zuul</module>
</modules>
2.1.导入依赖
因为Zuul需要通过Eureak做服务发现,所以我们导入了eureka-client基础依赖,和Zuul自身的基础依赖:netflix-zuul
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-zuul</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
2.2.配置开开启Zuul
配置类通过 @EnableZuulProxy 注解开启zuul服务功能。
@SpringBootApplication
//开启zuul服务功能--代理
@