之前WebSocket解决了在集群下session不互通的问题,链接
背景: 想要实现负载均衡,第一个想法就是加个服务消费者用openfeign做负载均衡,结果实施起来发现问题有点多,先是没想到WebSocket要具体怎么转发,@GetMapping还是@PostMapping咋想都不可以吧,又想着做个客户端,创建个静态map保存客户端对象自己整个负载均衡,刚想没问题,再想想,我在后端通过客户端连接了WebSocket,那页面上的推送咋整…现在想想有点降智。
解决: 以前都是在网关去路由到服务消费者再由服务消费者去调用服务提供者。(我用的gateway做的网关),既然网关也可以负载均衡那直接就在网关进行负载均衡呗。
网关配置
spring:
cloud:
gateway:
discovery:
locator:
enabled: true #开启从注册中心动态创建路由功能,利用微服务名路由
routes:
- id: 服务名 #路由id 可配置多个不同id
uri: lb://服务名 #若匹配则转发的路由地址,lb就是负载均衡的意思
predicates: #断言,所匹配的url规则
- Path=/liaotian/**
WebSocket部分代码
结果
可以看出实现了负载均衡。