一、简介
Spring Gateway是一个基于Spring Framework 5,Project Reactor和Spring Boot 2的反应式API网关,可以在微服务架构中用于路由、过滤和转换请求。当某些情况下,我们可能没有部署注册中心,如nacos。这时候该如何配置Spring Gateway?本文主要就是介绍在无注册中心的情况下如何配置代理后端websocket服务,并实现负责均衡。
二、配置文件
spring:
main:
allow-circular-references: true
application:
name: gateway
cloud: #配置SpringCloudGateway的路由
gateway:
default-filters:
- name: RequestSize
args:
maxSize: 100000000
httpclient:
websocket:
max-frame-payload-length: 104857600
connect-timeout: 3000
response-timeout: 30s
pool:
max-connections: 5000 #最大连接数
#max-life-time: 45000 #最大连接时间
acquire-timeout: 15000 #返回时间
max-idle-time: 10000 #最大空闲时间
routes:
#情况截图1
discovery:
locator:
enabled: true
lower-case-service-id: true # 服务名小写
discovery:
client:
simple:
instances:
#请看截图2
loadbalancer:
health-check:
path:
load-ws-service: /api/check #服务提供一个健康检查的请求做健康检查
load-http-service: /api/check
initial-delay: 0 #运行状况检查计划程序的初始延迟值。
interval: 5s # 重新运行运行状况检查计划程序的时间间隔。
configurations: health-check #启用预定义的负载平衡器配置
server:
port: 19900 #网关端口
因为不合格字符拦截原因部分代码只能截图
1、截图1
2、截图2
三、配置文件解释
1、上面的配置文件中,我们定义了2个路由,分别代理了http和websocket服务,其中ws load-ws-service就是websocket服务,lb代表需要负载均衡,Path代表要拦截转发的请求路径
请看截图1
2、discovery.client.simple.instances则定义了上面路由对应的后端服务,如果要加多个服务,加多uri,加多一行即可
请看截图2
四、总结
配置文件大体已经说明了配置的作用,通过上述配置,我们可以使用Spring Gateway在无注册中心的情况下来代理websocket服务。配置简单明了,同时具有灵活性和可扩展性,适用于各种微服务架构的场景。在实际应用中,可以根据具体需求进一步定制和扩展配置,以满足业务需求。
五、备注
文中采用spring相关版本如下:
<spring-boot.version>2.6.3</spring-boot.version>
<spring-cloud.version>2021.0.3</spring-cloud.version>