随着移动互联网的发展,即时通讯服务被广泛应用到各个行业,客户业务快速发展,传统百人或千人上限的群聊已经无法满足很多业务发展需求,因此网易云信IM专属云推出万人群服务。
本篇文章主要介绍网易云信IM万人群的设计方案。
关注网易云信公众号,回复知乎,获取2019技术干货合集>>>
万人群场景需要解决以下问题:
为了解决以上问题,万人群技术方案采用了聚合+分层/组+增量的设计思路:
1、按群维护在线群成员信息,主要包含两部分(可以理解为两个缓存集合)
a)群成员在线信息:即用户在线状态变化(上线、下线)时,更新相应群的在线状态信息(即动态维护群有哪些成员在线);
b)成员IM长连接信息:即用户新登录时,更新用户的Link信息(即登录所在Link的地址信息,消息转发时根据Link地址路由消息)。
2、IMServer收到群消息后,按群ID将消息路由到群消息服务模块;
3、群消息模块检查并预处理消息内容,然后通过群成员在线状态服务获取在线成员,完成消息转发的基础工作。为了减少群消息模块和群在线成员服务之间的网络流量,采用了本地缓存+增量同步的缓存策略,即本地缓存记录最后更新版本号和时间戳,每次同步群在线成员前先检查缓存版本号是否有变更,若有则按最后更新时间增量同步;
4、通过群成员在线服务获取在线群成员的Link链接信息,按Link分组路由消息(分组路由的原因:同一Link上的全部群成员只需要路由一条消息即可)。同样为了减少网络开销,成员Link信息也采用本地缓存+增量同步的方案;
5、群消息采用漫游+历史的存储方案,漫游的消息存储在分布式缓存中,历史消息异步写入HBase。用户登录后可以通过漫游快速的获取到最新消息,并可以通过拉取历史查看更早的消息。
抛开群在线状态管理逻辑,群成员在线状态服务可以简单理解为分布式集中缓存,增量同步技术方案如下:
万人群采用大量本地缓存的方案解决消息处理性能和网络流量的问题,因此本地存储空间成了方案的瓶颈点。因此我们设计了分组路由的技术方案。
消息按群ID和路由策略定向路由到指定分组(集群)上处理,分组由多个计算节点组成,因此方案上可以做到分组内和分组间的水平扩缩容。
由于万人群对计算和存储资源消耗比较高,在实施和运维方案上也有一定的特殊性,为了保证业务的可靠性和稳定性,万人大群仅提供给专属云客户。
网易云信IM专属云以亿级日活的公有云架构为基础,全面升级了业务技术架构和部署、运维方案,旨在为云信客户提供更加稳定的IM服务,采用专属云方案,将获得以下优势:
了解专属云,亿级日活架构,资源独享,弹性扩展,尊享专属服务>>>
立即咨询,立享专属资源以及万人大群>>>
关注网易云信公众号,回复知乎,获取2019技术干货合集>>>
邀请好友使用网易云信,好友下单成功即可获得500元网易考拉/严选无门槛现金券,,点击立即推荐>>>
标签: IM、 云服务、 网易云信、 即时通讯、本文地址: https://yihaiquanyi.com/article/27a5d46041b4ae8b4510.html
上一篇:事情闹大了才能解决事情闹大了外媒转拜登正...