Why?
Zuul作为SpringCloud全家桶微服网关,可以帮助我们实现防刷,限流,安全权限校验,过滤,路由等重要的功能。
What?
zuul具体可以帮助我们实现的功能以及如何实现的呢,现在我们就来分析一下
动态路由:
传统互联网架构:
在nginx中直接配置的是路由到的具体服务的地址,,当前端发送请求后,通过nginx直接路由到具体的服务实例上。
缺点:nginx中配置的服务实例是需要运维人员手动维护的,如果我们有成千上万个实例,这次我们把服务发布到了81,82,下次扩展了83,需要手动修改nginx配置,使得维护成本很大,很麻烦,具体解决办法,就是可以通过zuul动态路由来解决。
什么是动态路由?
首先画出动态路由的一个架构图:(手绘)
讲解一下:前端静态资源部署在nginx上,nginx上配置的后端路由是转发到具体的zuul所在的服务上的
Zuul单独启动一个服务,注册进eureka,并从Eureka集群根据服务名称获取已发布的微服务访问地址,根据配置的路由规则把请求代理到相应的微服务去,内嵌ribbon 做负载均衡访问具体的应用实例。
动态路由需要达到可持久化配置,动态刷新的效果,如果修改具体的服务实例,zuul会自动从eureka获取修改后的服务实例,这样我们就可以不用修改nginx了,减少了运维成本。
zuul:
routes:
myProduct:
path: /myProduct/**
serviceId: product
##禁用某些路由
ignored-patterns:
- /**/product/findList
过滤原理:
通过实现ZuulFilter,根据我们的请求路径进行过滤,token 验证,请求路径中有token信息的可以访问服务,否则无法访问服务
/**
* TOKEN验证
*
* @author 李娜
* @version 0.0.1
* @since 0.0.1 2019-08-23
*/
@Component
public