Netty集群如何做到Channel共享,考虑使用SpringCloudAlibaba体系架构,希望有做过高并发聊天系统的,来解答一下
个人初步方案,但Channel共享方面没有解决!
我曾经实现过基于Netty集群的IM,功能已实现,但是遗憾的是未能在大规模的生产环境进行验证。
首先,netty的channel是一个连接,是和机器的硬件绑定的,无法序列化;
其次,要想实现基于Netty的集群,其关键点在于连接信息路由。我把聊天服务划分应分为Server端和Client端。用户与Client端连接,我们把Client端当成连接器,借助Redis记录不同用户登录的是哪一台Client服务器。
另外,Client端与Server端连接,Server端是真正的消息处理服务,根据Redis记录的用户登录信息实现消息转发。