tio - IM集群方案设计

本文介绍了构建支持亿级用户在线的IM集群的难点与解决方案。主要难点在于群发消息和用户分布的不确定性,核心在于消息路由。作者提出了选择IM服务器和消息路由作为集群实现的两大关键,并分享了自己的架构设计,强调了内部算法的复杂性。文章适合对socket编程、多线程、锁有深入理解的读者,提供了简化复杂架构的思想。
摘要由CSDN通过智能技术生成

前言

一个IM产品,如果要支持亿级用户在线,集群是没法绕过的坎,三年前就在思考这个IM集群的事儿,也一直在等待某位大神能提供一颗开源银弹来解决这个问题,左等右等,没等到其它大神的答案,倒是等来了自己的灵光闪现,今年夏天自己耗时20天编码完成了心中的集群构想。

IM集群的难点

IM集群的难点主要由以下两个场景导致

  • 群发消息时,这个群的用户会分散在不同的IM服务器上
  • 给某用户发消息时,这个用户的PC、App端可能分布在不同的服务器上

以上两个问题,归根到底就是消息路由的问题,有一个简单暴力的做法是用topic来绕开路由算法的问题,但topic对服务器性能影响太大了,因为所有消息都要走一下消息中心服务器,消息中心服务器然后再分发到其它IM服务器

IM集群的两件事

集群的完整实现,归纳起来就两件事

  1. 为客户端选择IM服务器
  2. 客户发消息时,把消息路由到对应的IM服务器,再由IM服务器分发消息给指定的客户端

谭聊的集群架构和流程

1. 选择IM服务器

2. 消息路由

结束语

有的设计师能把复杂的事简单化,有的设计师能把简单的事复杂化,希望各位读者看完本篇文章后,能豁然开朗。当然啦,架构图虽然简洁明了,但内部算法还是相对复杂的,对socket编程、多线程、锁不熟练的同学,不建议将本架构图落地为代码(低调地提示:企业版t-io的集群版已经在框架层实现了集群)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值