探索图论在IM集群环境下的应用

我在工作中遇到了IM集群环境下消息路由问题,当集群数小时可以用内存共享的方案,当集群结点变多时,共享的数据同步会成为系统的瓶颈,为此我从网络中TCP报文的路由原理得到灵感,想了一个不用共享内存的方案,而且理论上支持大规模的集群。

应用场景如下,红色与蓝色是服务结点,橙色代表客户端结点:

当一个橙色结点要给另一个橙色结点发消息时,我们应该如何设计消息的路由策略?

上图是我们理想的消息路由路径,这时我们可以看出,红色结点是负责管理客户端的连接,而蓝色结点负责路由消息,因此我做了以下的区分:

这时我们可以把整个系统看成一个大的图,A给B消息就成了A与B的通路,理想的应该是最短路径,当然整个系统还没有这么简单,还有非常的复杂的搜索算法在里面。

这种设计对路由服务结点的性能要求较高,路由节点可能要维护自己的一张路由表,而且还要及时更新,对于每条消息也要有自己的轨迹表,记录走过的节点,这样可以解决内存共享与同步面临的问题,每个接入管理服务节点(图中的S节点)之间就可以不用相互感知,这样增加大量的节点才能成为可能。现在我对QQ和微信的解决方案很敬仰,不知道他们是否用内存共享,如何解决大量节点的集群中的Session共享,还是像我猜测的与网络中的报文路由类似的方案。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值