什么是网关
所有的客户端都通过网关统一接入微服务,在网关层处理所有的非业务功能。API 网关还提供了一些更高级的功能,例如:身份验证、监控、负载均衡、缓存、多协议支持、限流、熔断等等。
网关请求流程
- 客户端向Spring Cloud Gateway发出请求。
- 如果 Gateway Handler Mapping 检测到请求与路由相匹配,则将其发送到 Gateway Web Handler 进行处理。
- Gateway Web Handler 处理程序会将请求发送到过滤器链(filter chain)中。
Filter 有两条执行路径的原因,是因为这些filter可能在代理请求发送之前执行,这些过滤器称为“pre”过滤器,也会在代理请求发送之后执行,这些过滤器称为“post”过滤器。
基本知识点
-
路由(Route):网关的基本功能组件,由一个唯一的ID,目标URI,断言集合和过滤器集合组成。
-
断言(Predicate):Java8中的Predicate 接口,可以匹配HTTP请求中的任何数据,比如headers和parameters,如果某个路由中的所有的断言都返回true,说明匹配到了这个路由。
-
过滤器(Filter):使用特定工厂构造的Spring Framework GatewayFilter的实例,在这里面可以拦截修改请求数据和响应数据。
搭建入门
1、pom 引入 spring-cloud-starter-gateway 依赖
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.0.RELEASE</version>
<relativePath/>
</parent>
<properties>
<java.version>1.8</java.version>
<spring-cloud.version>Hoxton.SR9</spring-cloud.version>
</properties>
<dependencyManagement&