spring gateway 配置
引入依赖
<!-- gateway网关 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-gateway</artifactId> </dependency> <!-- nacos服务注册与发现 --> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency>
注意:Spring Cloud Gateway 是由 WebFlux + Netty + Reactor 实现的响应式的 API 网关。它不能在传统的 servlet 容器中工作,也不能构建成 war 包。
配置yml 文件
server: port: 8099 spring: application: name: gateway-server # 配置nacos注册中心地址 cloud: nacos: discovery: server-addr: 127.0.0.1:8848 namespace: 2a57e550-6295-4269-b1b4-268c46021020 gateway: discovery: locator: enabled: true # 是否开启网关 enabled: true
测试,验证 请求 通过网关入口 服务名的方式 进行请求接口
http://localhost:8099/user-server/user/list
user-server 是 用户服务模块的应用名
输出结果
{"msg":"success","code":0,"page":{"totalCount":0,"pageSize":10,"totalPage":0,"currPage":1,"list":[{"id":1,"username":"九歌","age":12},{"id":2,"username":"小武","age":22},{"id":3,"username":"唐三","age":23},{"id":4,"username":"萧炎","age":18},{"id":5,"username":"即舞夜","age":19}]}}
网关的应用配置简单,主要是同一个注册中心的话, 都能通过网关进行调用请求对应的服务
工作原理
Spring Cloud Gateway 的工作原理跟 Zuul 的差不多,最大的区别就是 Gateway 的 Filter 只有 pre 和 post 两种。
客户端向 Spring Cloud Gateway 发出请求,如果请求与网关程序定义的路由匹配,则该请求就会被发送到网关 Web 处理程序,此时处理程序运行特定的请求过滤器链。
过滤器之间用虚线分开的原因是过滤器可能会在发送代理请求的前后执行逻辑。所有 pre 过滤器逻辑先执行,然后执行代理请求;代理请求完成后,执行 post 过滤器逻辑。
更多使用官网走一波
https://docs.spring.io/spring-cloud-gateway/docs/current/reference/html/#gateway-starter