前言
一个IM产品,如果要支持亿级用户在线,集群是没法绕过的坎,三年前就在思考这个IM集群的事儿,也一直在等待某位大神能提供一颗开源银弹来解决这个问题,左等右等,没等到其它大神的答案,倒是等来了自己的灵光闪现,今年夏天自己耗时20天编码完成了心中的集群构想。
IM集群的难点
IM集群的难点主要由以下两个场景导致
群发消息时,这个群的用户会分散在不同的IM服务器上
给某用户发消息时,这个用户的PC、App端可能分布在不同的服务器上
以上两个问题,归根到底就是消息路由的问题,有一个简单暴力的做法是用topic来绕开路由算法的问题,但topic对服务器性能影响太大了,因为所有消息都要走一下消息中心服务器,消息中心服务器然后再分发到其它IM服务器
IM集群的两件事
集群的完整实现,归纳起来就两件事
为客户端选择IM服务器
客户发消息时,把消息路由到对应的IM服务器,再由IM服务器分发消息给指定的客户端
看昵称遭到我~!!!!!可!!接!!!!