Gateway 服务网关
1、gateway概述
什么是gateway
- gateway是在spring生态上构建的API网关服务,基于spring5、spring boot 2和 project reactor等技术。
- gateway旨在提供一种简单而有效的方式来对API进行路由,是的后台的服务不需暴露自己的地址,gateway提供了一些强大的功能,例如:
熔断
、限流
、重试
等。 - gateway是基于WebFlux框架实现的,而WebFlux框架的底层则使用了高性能的Reactor模式通信框架Netty。
- gateway基于异步非阻塞模型上进行开发的,高并发。
- gateway的目标提供统一的路由方式且基于Filter链的方式提供了网关的基本功能,例如:
安全
、监控
、日志
和限流
。 - 对后台服务的保护,即安全。
- 官网:Spring Cloud Gateway
**作用:**反向代理、鉴权、流量监控、熔断、日志监控等等。
架构图示:
gateway的三大核心:
-
**动态路由:**地址映射
-
**Predicate 【断言】:**是否符合条件
-
**Filter 【过滤器】:**转发前后的过滤
gateway的工作流程:
- 客户端向gateway发出请求,然后在Gateway Handler Mapping 中找到与请求相匹配的路由,将其发送到Gateway Web Handler。
- Handler再通过指定的过滤器来将请求发送到实际的服务执行业务逻辑,然后返回。
- 过滤器在其中进行必要的处理,在“pre”类型的过滤器有功能,如:参数校验、权限校验、流量监控等;在“post”类型的过滤器中可以做响应内容、响应头修改、日志的输出等等。
- 核心逻辑:路由转发+执行过滤器链。
2、配置gateway网关
为了方便包管理创建一个父工程
- pom
<dependencyManagement>
<dependencies>
<!--spring-boot-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.6.5</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!--spring-cloud-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>2021.0.1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!--spring-cloud-alibaba-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2021.0.1.0</version>