微服务实战-从零开始,35SpringCloud Gateway

是什么?

 

Cloud全家桶中有个很重要的组件就是网关,在1.x版本中都是采用的Zuul网关;
但在2.x版本中,zuul的升级一直跳票,SpringCloud最后自己研发了一个网关替代Zuul,
那就是SpringCloud Gateway一句话:gateway是原zuul1.x版的替代

微服务架构中,网关所处位置:

微服务实战-从零开始,35SpringCloud Gateway_第1张图片

Spring Cloud Gateway 具有如下特性:
 
基于Spring Framework 5, Project Reactor 和 Spring Boot 2.0 进行构建;
动态路由:能够匹配任何请求属性;
可以对路由指定 Predicate(断言)和 Filter(过滤器);
集成Hystrix的断路器功能;
集成 Spring Cloud 服务发现功能;
易于编写的 Predicate(断言)和 Filter(过滤器);
请求限流功能;
支持路径重写。

Spring Cloud Gateway 与 Zuul的区别
在SpringCloud Finchley 正式版之前,Spring Cloud 推荐的网关是 Netflix 提供的Zuul:
 
1、Zuul 1.x,是一个基于阻塞 I/ O 的 API Gateway
 
2、Zuul 1.x 基于Servlet 2. 5使用阻塞架构它不支持任何长连接(如 WebSocket) Zuul 的设计模式和Nginx较像,每次 I/ O 操作都是从工作线程中选择一个执行,请求线程被阻塞到工作线程完成,但是差别是Nginx 用C++ 实现,Zuul 用 Java 实现,而 JVM 本身会有第一次加载较慢的情况,使得Zuul 的性能相对较差。
 
3、Zuul 2.x理念更先进,想基于Netty非阻塞和支持长连接,但SpringCloud目前还没有整合。 Zuul 2.x的性能较 Zuul 1.x 有较大提升。在性能方面,根据官方提供的基准测试, Spring Cloud Gateway 的 RPS(每秒请求数)是Zuul 的 1. 6 倍。
 
4、Spring Cloud Gateway 建立 在 Spring Framework 5、 Project Reactor 和 Spring Boot 2 之上, 使用非阻塞 API。
 
5、Spring Cloud Gateway 还 支持 WebSocket, 并且与Spring紧密集成拥有更好的开发体验

gateway的工作流程:

路由转发+执行过滤链

微服务实战-从零开始,35SpringCloud Gateway_第2张图片

1、客户端向gateway发出请求

2、通过gateway Handler mapping 中找到与请求相匹配的路由,并发送到gateway web handler

3、web handler通过指定的过滤器链来将请求(代理请求)发送到实际的服务来执行业务逻辑,然后返回。

执行业务逻辑前可以进行过滤处理,也可以执行之后进行过滤处理。

执行前:参数校验,权限校验,流量监控,日志输出,协议转换

执行后:对响应内容,响应头进行修改,日志输出,流量监控

微服务实战-从零开始,35SpringCloud Gateway_第3张图片 

 

你可能感兴趣的:(java,javascript,c++)