微服务知识3

Gateway核心概念

路由(route)

网关中最基础的部分,路由信息包括一个ID,一个目的URI,一组谓词工厂,一组Filter组成。如果谓词为真,则说明请求的URL和配置的路由匹配

谓词(preducates)

即java.util.function.Predicate,Spring Cloud Gateway使用Predicate实现路由的匹配条件

过滤器(filter)

filter分为Gateway Filter 和 Global Filter。Filter可以对请求和响应进行处理。

路由是转发规则,谓词是判断是否走这个路径的条件,过滤器可以为路由添加业务逻辑,修改请求及响应

微服务知识3_第1张图片

微服务知识3_第2张图片 

客户端向Gateway发出请求,如果请求与网关程序定义的路由匹配,则该请求就会被发送到网关Web处理程序,此时处理程序运行特定的请求过滤器链

过滤器可能会在发送代理请求的前后执行逻辑,所有pre过滤器逻辑先执行。然后执行代理请求;代理请求完成后,执行post过滤器逻辑

Gateway实现服务平滑迁移

使用weight路由的断言工厂进行服务权重的配置,并将配置放到Nacos配置中心进行动态迁移

weight路由断言工厂

该断言工厂中包含两个参数,分别用于表示组group,与权重weight。对于同一组中的多个uri地址,路由器会根据设置的权重,按比例将请求转发给相应的uri。实现负载均衡

group组,权重根据组来计算

weight权重值,是一个int值

微服务知识3_第3张图片

Zull

微服务知识3_第4张图片

Zuul 就是一个servlet和一堆过滤器的组成。请求进入过滤器,然后进入ZullFilter Runner中会选择一个filter进行调用,这里面有前置路由过滤器,路由中过滤器,后置路由过滤器

Serlvet是非线程安全的,zull使用RequestContext来在过滤器之前传递数据,数据存于每个request的ThreadLocal,包含请求路由到哪里,错误,HtttpServletRequest,HttpServletResponse等这些数据都存储与RequestContext中。RequestContext扩展了ConcurrentHashMap,所以我们可以根据需要将信息存于context中进行传递

一般引入@EnableZullPrixy 引入的类继承了@EnableZuulServer对应的类,并且对其功能进行了增加

 

你可能感兴趣的:(微服务,java,spring,cloud)