一、网关简介
网关是系统唯一对外的入口,介于客户端和服务端之间,用于对请求进行鉴权,限流,路由,监控等功能。
二、gateway简介
这个项目提供了一个建立在Spring生态系统之上的Api网关,包括:spring6,springboot3,和project Reactor。SpringCloud Gateway 旨在提供一种简单有效的方法来路由到Api,并且为他们提供跨领域的关注点,例如:安全性,监控/度量和弹性。
三、Reactor
Reactor是一种完全基于Reactive Stream规范的,全新的库。
(1)响应式编程
响应式编程,Reactive Programming,是一种新的编程范式,编程思想。
响应式编程最早是由.net平台上的Reactive eXtensions(Rx)库来实现的。后来迁移到java平台,产生了著名的RxJava。再次基础上,有产生了Reactive Stream规范。
(2)Reactive Stream
Reactive Stream 是响应式编程规范,定义了响应式编程的相关接口。只要符合该规范库,就称为Reactive相应编程库。
(3)RxJava2
RxJava2是一种响应式编程库,产生于Reactive Stream规范之后。但由于其是在RxJava基础上进行开发的,所以在设计时不仅遵循了Reactive Stream规范,同时也为了兼容RxJava,使得RxJava在使用是不方便。
(4)Reactor
Reactor是一种全新的响应式编程库,完全遵循Reactive Stream规范,又与RxJava没有任何关系,所以,使用时非常方便直观。
四、Zuul
Zuul是Netflix的开源API网关。Zuul是基于Servlet的,使用同步阻塞IO模型,不支持长连接。Zuul是SpringCloud生态中的一员。
Zuul2.x使用Netty实现了异步非阻塞IO,支持长连接,但其为整合到SpringCloud。
五、重要概念
在SpringCloudGateway中有三个重要概念。
(1)route路由
路由是网关的基本组成,由一个路由id,一个目标地址url,一组断言工厂及一组filter组成。如断言为true,则请求将路径有filter被路由到目标url。
(2)predicate断言
断言即是一个条件判断,根据当前的http请求进行指定规则匹配,比如说http请求头请求等待时间等。只有匹配上规则时,断言才为true,此时才会被转发到目标地址,或先路由到某过滤器链,经过过滤器链的层层处理之后,再路由到相应的目标地址。
(3)filter过滤器
对请求进行逻辑处理的部分。当请求断言为true时,会被路由到设置好的路由过滤器,以对请求或者相应做处理。例如,可以为请求添加一个参数,或者对url进行修改,或者为响应式添加到header等。总之,就是对请求或者相应进行处理。
六、使用
1.导入依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
注意:导入后要移除pring-boot-starter-web依赖,否则启动报错
2.配置文件
server:
port: 9000
spring:
cloud:
gateway:
routes: # 路由配置
- id: my_route
uri: https://baidu.com
predicates:
- Path=/**
3.启动测试