Netty如何做负载均衡(集群)架构

p2ng 发布于 06/21 21:32
阅读 500
收藏 0

背景:

通过SpringBoot + Netty搭建应用作为IM服务,SpringBoot提供IM业务接口,启动SpringBoot的时候另外起一条线程启动Netty框架,作为WebSocket链接地址。

 

现在问题是:

例如A客户端跟www.im.xxx.com/ws创建WebSocket链接的时候,与A服务端进行长链接。B客户端跟B服务端进行长链接。

那么在A与B之间发送文本信息(聊天内容,Hello World),A服务端无法转发到B服务端...因为他们的Channel没有共享...

 

那么通过什么方式可以使应用HA(高可用,集群,非单点)???

 

 

加载中
0
kakai
kakai

zk做集群,服务器之间的数据交互用消息队列的发布订阅模式也是可行的。

汀雨小吉
汀雨小吉
我现在也在这边考虑集群,觉得这个方案可以,有详细的方案或者demo吗?大神
0
kakai
kakai

或者参考redis的架构模式自己写一套,再一个方案也是自己写,各个服务器独立,再单独写个中央服务器,各服务器必须与中央服务器建立socket信道进行数据交互,集群和负载均衡也基本依赖中央服务器或者在登录时基于无状态http集群分析各个socket服务的负载,然后返回客户端指定连接哪个服务器。

kakai
kakai
第二种方案高度依赖中央服务器的稳定性。
0
开源中国首席聊天玩家
开源中国首席聊天玩家

微服务要做到无状态就可以满足,就是不要让客户端直接跟服务建立连接,应该有一个连接层专门负责和客户端的连接,连接层再和IM服务交互,在连接层做高可用处理,最简单的直接就软负载均衡

0
年少爱追梦
年少爱追梦

nginx 是可以负载 websocket的,你要应用重启连接丢掉没事,客户端支持重连就行了

返回顶部
顶部