SpringCloud Gateway原理

q1871901600 发布于 2024-11-16 18 次阅读


什么是Spring Cloud Gateway

Spring Cloud Gateway 是Spring Cloud官方推出的第二代网关框架,定位于取代 Netflix Zuul。Spring Cloud Gateway 旨在为微服务架构提供一种简单且有效的 API 路由的管理方式,并基于 Filter 的方式提供网关的基本功能,例如说安全认证、监控、限流等等。

Spring Cloud Gateway 是由 WebFlux + Netty + Reactor 实现的响应式的 API 网关。它不能在传统的 servlet 容器中工作,也不能构建成 war 包。

核心概念

  • 路由(route)

路由是网关中最基础的部分,路由信息包括一个ID、一个目的URI、一组断言工厂、一组Filter组成。

  • 断言(predicates)

Java8中的断言函数,SpringCloud Gateway中的断言函数类型是Spring5.0框架中的ServerWebExchange。断言函数允许开发者去定义匹配Http request中的任何信息,比如请求头和参数等。如果断言为真,则说明请求的URL和配置的路由匹配。

  • 过滤器(Filter)

SpringCloud Gateway中的filter分为Gateway FilIer和Global Filter。Filter可以对请求和响应进行处理。

工作原理

Spring Cloud Gateway 的工作原理跟 Zuul 的差不多,最大的区别就是 Gateway 的 Filter 只有 pre 和 post 两种。

断言工厂:

Spring Cloud Alibaba GateWay的路由断言工厂_springcloud断言after-CSDN博客

过滤器工厂:

源码分析

webFlux源码

  1. 标记 ③ 对应的 FilteringWebHandler 是 gateway 对 webflux 的扩展。
  2. 标记 ②③④ 整理对应最上面的 gateway 的工作流程。

简化版本的流程图:

参考文章:

细到不能再细的 Spring Cloud Gateway 原理分析(内含多张图片讲解)_gateway原理-CSDN博客

万字长文带你吃透SpringCloudGateway工作原理+动态路由+源码解析-腾讯云开发者社区-腾讯云

一个会写python的Java工程师
最后更新于 2024-11-16