[Spring] WebSocket 怎么做到集群?

2024-01-11 07:08:08 +08:00
 nnegier
4309 次点击
所在节点    Java
31 条回复
pengtdyd
2024-01-11 12:02:04 +08:00
那当然是单独的服务啦,无状态和有状态架构上个人认为不能混用(纯个人理解)。
kuituosi
2024-01-11 12:23:16 +08:00
要看具体实现的功能,即使是 websocket 也可以当作临时接入点,所以连接到任意一台就可以
如果是需要持续状态,比如有游戏服务器,就需要保持 session
这种可以采用客户端路由,也可以采用网关 session 路由
imokkkk
2024-01-11 14:52:20 +08:00
Redis 发布订阅
imokkkk
2024-01-11 14:56:02 +08:00
gitrebase
2024-01-11 15:34:07 +08:00
如果要做服务端推送的话,可以考虑使用 Server-Sent Events ,这是种不用维护 WebSocket 的方案,我前几天刚好写了 demo 来用 SSE + NATS 来做轻量级的聊天室服务( NATS 就是用来做集群间的即时 pubsub 的,用 Redis 的 pubsub 应该也行) https://zhuanlan.zhihu.com/p/676561818
salmon5
2024-01-11 16:14:03 +08:00
会话保持,植入 cookie 。
AWS/阿里云 ALB 都支持。
salmon5
2024-01-11 16:15:42 +08:00
AWS 叫 Sticky sessions(粘性会话) Stickiness
l0wkey
2024-01-11 16:16:41 +08:00
换 MQTT 吧
salmon5
2024-01-11 16:22:35 +08:00
https://socket.io/docs/v4/using-multiple-nodes/#nginx-configuration
nginx 社区版不支持基于植入 cookie 的,商业版支持
社区版支持基于源 IP 的,缺点是可能会负载不均匀
ZeroDu
2024-01-11 16:26:27 +08:00
上面说的 mq 发广播这个就是最佳方案了;
或者 redis 保存一份 client 跟 server 的对应关系,后续就可以操作了
F7TsdQL45E0jmoiG
2024-01-12 09:55:14 +08:00
本质是会话保持,另外现在还有什么场景非要用 websocket 的集群

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1007675

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX