zuul的作用
过滤请求、对过滤器进行动态的加载、编译、运行
验证与安全:识别面向各类资源的验证要求并拒绝那些与要求不符的请求。
审查与监控:在边缘位置追踪有意义数据及统计结果,从而为我们带来准确的生产状态结论。动态路由:以动态方式根据需要将请求路由至不同后端集群处。
压力测试:逐渐增加指向集群的负载流量,从而计算性能水平。
负载分配:为每一种负载类型分配对应容量,并弃用超出限定值的请求。静态响应处理:在边缘位置直接建立部分响应,从而避免其流入内部集群。
其核心是一系列的filters,定义了四套标准
PRE:路由之前调用,实现身份验证
ROUTING:将请求路由到微服务
POST,微服务以后执行,响应header
ERROR,错误时执行
Filter有四个方法,分别为
filterType():过滤器的类型,它决定过滤器在请求的哪个生命周期中执行。
fiterOrder:过滤器的执行顺序。当请求在一个阶段中存在多个过滤器时,需要根据该方法返回的值来依次执行。通过数字指定,数字越大,优先级越低。
shouldFiter:判断该过滤器是否需要被执行。直接返回true,则该过滤器对所有请求都会生效。实际运用中我们可以利用该函数来指定过滤器的有效范围。 r
un():过滤器的具体逻辑。
gateway使用了高性能框架Netty,由三部分组成
1、filter过滤器:拦截和修改请求
2、route路由:断言为真,则路由匹配,目标URI会被访问
3、predicate断言:匹配HTTP请求的任何内容
zuul与spring-cloud-gateway的区别
不同点:
gateway吞吐率比zuul高,耗时比zuul少,性能比zuul高倍左右,
gateway对比zuul多依赖了spring-webflux,
zuul仅支持同步,gateway支持异步。
gateway具有更好的扩展性
相同点:
1、底层都是servlet
2、两者均是web网关,处理的是http请求