参考:官方文档
Spring Cloud
版本:Hoxton.SR5
Spring Cloud Gateway
版本:2.2.3.RELEASE
1 介绍
Spring Cloud Gateway
的目标是为微服务架构提供简单、有效、统一的API
路由管理方式。作为Spring Cloud
生态系统中的网关,不仅提供统一的路由方式,并且还基于Filer
链的方式提供了网关基本的功能,例如:安全、监控/埋点、限流等。
Spring Cloud Gateway
是基于Spring Boot 2.x
、Spring WebFlux
、Reactor
构建的,需要Netty
运行时环境。它不能在传统的Servlet
容器中工作,也不能作为WAR
构建。
1.1 特性
Spring Cloud Gateway
的特性如下:
- 基于
Spring Framework 5
、Reactor
、SpringBoot 2.x
构建; - 可以根据请求的任何属性匹配路由;
Predicates
(断言)和Filters
(过滤器)作用于特定路由;- 集成
Hystrix
断路器; - 集成
Spring Cloud DiscoveryClient
; - 能够很容易的编写
Predicates
和Filters
; - 提供限流功能;
- 提供重写请求路径的功能。
1.2 术语
Spring Cloud Gateway
中的术语:
Route
(路由):这是网关的基本构建块。它由一个ID
、一个目标URI
、一组断言和一组过滤器来定义。如果断言为真,则匹配路由。Predicate
(断言):这是Java 8
中的Predicate
。输入类型是一个ServerWebExchange
。我们可以利用它来匹配来自HTTP
请求的任何内容,例如headers
或parameters
。Filter
(过滤器):这是GatewayFilter
的实例。我们可以使用它修改request
和response
。
1.3 工作原理
下图展示了Spring Cloud Gateway
的工作原理:
客户端向Spring Cloud Gateway
发出请求,然后在