Spring Cloud Gateway
程序员文章站
2022-06-27 21:08: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
上一篇: 大数据基础-重新聊聊路由分片
下一篇: 百度大数据面试题汇总
推荐阅读
-
Spring Cloud Gateway全局通用异常处理的实现
-
Spring Cloud OAuth2 实现用户认证及单点登录
-
Spring Boot使用@Scheduled 实现定时任务
-
初见Spring
-
Java Maven:spring boot + Mybatis连接MySQL,通用mapper的增删改查,映射实现多表查询
-
Spring Boot 设置项目名后静态文件相对路径问题
-
Spring 加载项目外部配置文件
-
策略模式、工厂模式以及Spring的InitializingBean消除IfElse
-
Spring-Cloud-GateWay
-
Spring Cloud下OAUTH2注销的实现示例