您现在的位置是:首页 >技术教程 >微服务知识3网站首页技术教程
微服务知识3
Gateway核心概念
路由(route)
网关中最基础的部分,路由信息包括一个ID,一个目的URI,一组谓词工厂,一组Filter组成。如果谓词为真,则说明请求的URL和配置的路由匹配
谓词(preducates)
即java.util.function.Predicate,Spring Cloud Gateway使用Predicate实现路由的匹配条件
过滤器(filter)
filter分为Gateway Filter 和 Global Filter。Filter可以对请求和响应进行处理。
路由是转发规则,谓词是判断是否走这个路径的条件,过滤器可以为路由添加业务逻辑,修改请求及响应
客户端向Gateway发出请求,如果请求与网关程序定义的路由匹配,则该请求就会被发送到网关Web处理程序,此时处理程序运行特定的请求过滤器链
过滤器可能会在发送代理请求的前后执行逻辑,所有pre过滤器逻辑先执行。然后执行代理请求;代理请求完成后,执行post过滤器逻辑
Gateway实现服务平滑迁移
使用weight路由的断言工厂进行服务权重的配置,并将配置放到Nacos配置中心进行动态迁移
weight路由断言工厂
该断言工厂中包含两个参数,分别用于表示组group,与权重weight。对于同一组中的多个uri地址,路由器会根据设置的权重,按比例将请求转发给相应的uri。实现负载均衡
group组,权重根据组来计算
weight权重值,是一个int值
Zull
Zuul 就是一个servlet和一堆过滤器的组成。请求进入过滤器,然后进入ZullFilter Runner中会选择一个filter进行调用,这里面有前置路由过滤器,路由中过滤器,后置路由过滤器
Serlvet是非线程安全的,zull使用RequestContext来在过滤器之前传递数据,数据存于每个request的ThreadLocal,包含请求路由到哪里,错误,HtttpServletRequest,HttpServletResponse等这些数据都存储与RequestContext中。RequestContext扩展了ConcurrentHashMap,所以我们可以根据需要将信息存于context中进行传递
一般引入@EnableZullPrixy 引入的类继承了@EnableZuulServer对应的类,并且对其功能进行了增加