Spring Cloud Gateway
程序员文章站
2022-03-26 19:03:19
Spring Cloud Gateway与Zuul的区别在SpringCloud Finchley正式版之前,Spring Cloud推荐的网关是Netlix提供的Zuul:Zuul 1.x,是一个基于阻塞I/ 0的API GatewayZuul 1.x基于Servlet 2. 5使用阻塞架构它不支持任何长连接(如WebSocket) Zul的设计模式和Nginx较像,每次I/ 0操作都是从工作线程中选择一 个执行,请求线程被阻塞到工作线程完成,但是差别是Nginx用C++实现,Zuul用Java实...
Spring Cloud Gateway与Zuul的区别
在SpringCloud Finchley正式版之前,Spring Cloud推荐的网关是Netlix提供的Zuul:
- Zuul 1.x,是一个基于阻塞I/ 0的API Gateway
- Zuul 1.x基于Servlet 2. 5使用阻塞架构它不支持任何长连接(如WebSocket) Zul的设计模式和Nginx较像,每次I/ 0操作都是从工作线程中选择一 个执行,请求线程被阻塞到工作线程完成,但是差别是Nginx用C++实现,Zuul用Java实现,而JVM本身会有第次加载较慢的情况,使得Zuul的性能相对较差。
- Zuul 2.x理念更先进, 想基于Netty非阻塞和支持长连接, 但SpringCloud目前还没有整合。 Zuul 2.x的性能较Zuul 1.x有较大提升。在性能方面,根据官方提供的基准测试, Spring Cloud Gateway的RPS (每秒请求数)是Zuul的1.6倍。
- Spring Cloud Gateway建立在Spring Framework 5、 Project Reactor和Spring Boot2之上, 使用非阻塞API。
- Spring Cloud Gateway还支持WebSocket, 诅与Spring紧密集成拥有更好的开发体验`
Getway 三大核心概念
Route(路由)
路由是构建网关的基本模块,它由ID,目标URI, -系列的断言和过滤器组成,如果断言为true则匹配该路由
Predicate(断言)
开发人员可以匹配HTTP请求中的所有内容(例如请求头或请求参数),如果请求与断言相匹配则进行路由
Filter(过滤)
指的是Spring框架中GatewayFilter的实例,使用过滤器,可以在请求被路由前或者之后对请求进行修改。
web请求,通过-些匹配条件, 定位到真正的服务节点。并在这个转发过程的前后,进行-些精细化控制。predicate就是我们的匹配条件;而filter, 就可以理解为一个无所不能的拦截器。有了这两个元素,再加上目标uri,就可以实现一个具体的路由了
Gateway 工作流程
- 客户端向Spring Cloud Gateway发出请求。然后在Gateway Handler Mapping中找到与请求相匹配的路由,将其发送到Gateway Web Handler.
- Handler再通过指定的过滤器链来将请求发送到我们实际的服务执行业务逻辑,然后返回。 过滤器之间用虚线分开是因为过滤器可能会在发送代理请求之前( "pre” )或之后( “post” )执行业务逻辑。
- Filter在"pre" 类型的过滤器可以做参数校验、权限校验、流量监控、日志输出、协议转换等,在"post"类型的过滤器中可以做响应内容、响应头的修改,日志的输出,流量监控等有着非常重要的作用。
核心逻辑-----路由转发+执行过滤器链
本文地址:https://blog.csdn.net/qq_43959546/article/details/107375565
上一篇: 【新书推荐】【2019.10】构建微服务:设计细粒度系统(第二版)
下一篇: Redis主从复制
推荐阅读
-
Spring Cloud分布式微服务实战,养成应对复杂业务的综合技术能力
-
Spring Boot 实战 入门
-
Spring Boot特性
-
SpringBoot+Spring Security无法实现跨域的解决方案
-
spring+mybatis利用interceptor(plugin)兑现数据库读写分离
-
Spring boot 通用配置文件模板
-
浅谈如何在项目中使用Spring Cloud Alibaba Sentinel组件
-
Spring Cloud OAuth2中/oauth/token的返回内容格式
-
07点睛Spring MVC4.1-ContentNegotiatingViewResolver
-
05点睛Spring MVC 4.1-服务器端推送