组团学

认识微服务网关

阅读 (939975)

1、认识微服务网关

1.1、什么是微服务网关

"网关"它的功能也正如名字一样,具有关卡的作用。在单体应用中,调用服务极其简单。但在微服务中,调用服务就比较麻烦,因为不同的微服务可能使用了不同的开发语言和协议。在微服务生产环境中,用户调用微服务要经过网关。

1.2、为什么要使用微服务网关

微服务网关架构.jpg

从图中可以看出,网关统一向外部系统(如访问者、服务)提供REST API。在Spring Cloud,使用 Zull、Spring Cloud Gateway等作为API Gateway来实现动态路由、监控、回退、安全等功能。

1.3、Spring Cloud Gateway

Spring Cloud Gateway是Spring Cloud生态系统中的网关,旨在为微服务架构提供一种简单有效的、统一的API,并为微服务架构提供安全、监控、指标和弹性等功能,其目标是替代Zuul。

1.3.1、相关概念

Route(路由)

路由是网关的基本单元。它由一个ID、一个目标URI、一组断言(Predicates)和一组过滤器(Filters)来定义,即路由=ID+URI+Predicates+Filters

Predicate(断言)

Predicate的输入类型是ServerWebExchange。ServerWebExchange中包含ServerHttpRequest,Predicate根据输入决定是否匹配路由。

Filter(过滤器):

过滤器用于过滤并处理请求,类似于Spring Web MVC的Web过滤器。

1.3.2、Spring Cloud Gateway的工作流程

Spring Cloud Gateway的工作流程1589199660678.jpg

工作流程:

1、客户端向Spring Cloud Gateway发出请求。

2、DispathcerHandler接收用户请求。

3、RotePredicateHanderMapping进行路由匹配

4、如果网关处理程序发现请求与路由匹配,则将请求发送到FilteringWebHandler(即网关的处理程序)。如果网关发现请求与路由不匹配,则将请求返给DispatcherHandler处理。

5、FilteringWebHandler通过特定过滤器发送请求,先执行所有"PRE逻辑,然后进行代理请求,最后进行“POST”逻辑。

6、FilteringWebHandler将请求转发到具体的服务中。

7、FilteringWebHandler将处理结果返回给用户。

1.3.3、比较Zuul与Spring Cloud Gateway

开源组织:

  • Spring Cloud Gateway是Spring Cloud微服务平台的一个子项目,属于Spring开源社会

  • Zuul是美国最大的视频点播服务商Netflix公司的开源项目

底层实现:

  • Zuul 1.x构建于Servlet2.5,兼容3.x,使用阻塞式的API,不支持长连接和WebSockets

  • Spring Cloud Gateway是基于Spring Boot2.x的, 构建于Spring 5以上的版本,它使用非阻塞式的API,支持WebSockets

请求方式:

  • Zuul 1.x采用的同步请求,数据被封装在RequestContext里

  • Spring Cloud Gateway采用的是异步请求,数据被封装在ServletWebExchange里

需要 登录 才可以提问哦