ITBEAR科技资讯
网站首页 科技资讯 财经资讯 分享好友

环信:基于大规模边缘计算的千万级聊天室技术实践

时间:2023-03-06 15:32:30来源:互联网编辑:汪淼

当前直播成为一种流行趋势,带货直播,网红带货,明星在线演唱会等,进一步使得直播聊天室变成了一个当前必备的能力,面向大型,超大型的直播场景,技术上也在不断的进行迭代更新。相对于集中式,单中心的方案,不仅仅在服务的稳定性,承载的用户量级上有了显著的提升,而且在成本上也能有大幅的降低,同时用户体验也变得更好。至于业界一直尝试的CDN的聊天室方案同样存在着本身的局限性,不同于音视频消息单个内容相对较小,瞬时性访问量较大,重复访问的概率几乎没有等特定,使得CDN的实践方案无法满足该场景的需求。

1、大规模边缘聊天室如何工作?

大型边缘聊天室的工作过程非常的简单,用户 UserA 加入聊天室 X,用户 UserB 也加入聊天室 X,此时用户 UserA 向聊天室发送消息 hello,服务端接收到该消息后,会向 UserA 发送一个接收成功的回应,服务端同时会将消息进行扩散到所有在同一个聊天室中的人,此示例中为 UserB。

2、场景简单化但制作不简单

每个环节都需要额外关注

1.如何稳定,高效的保持住百万甚至千万的长连接

2.如何进行聊天室成员状态的维护

3.如何进行消息路由的选择

3、如何稳定超大规模的连接?

主要通过两个方向来解决这个问题,单机的连接数和集群的规模。

1.单机负载

关于单机连接的提升上,单机的连接数支撑虽然可以达到很高的数值,但是也要考虑是否为有效连接,因为高负载的连接和低负载的连接是完全不同的概念,且不说其他的业务逻辑,单纯其中的心跳保持逻辑,就会造成 CPU 和 IO 非常大的负担,这些还是完全没有谈及业务逻辑的基础上,故而在单机负载上,一般采用的是不超过 10W 的单机负载。

2.集群规模

集群的水平扩展能力决定了集群的规模,下图是服务端的整体部署结构:

上图中绿色的区域为负责客户端长连接的区域,所有的 IMS(IM Server)提供的服务完全相同,而且相互之间完全没有任何的依赖关系;上图中的黄色是部署在 IDC 中,主要服务聊天室的路由管理以及消息的路由分发。IMS 可以认为是可以无限水平扩展的架构设计,所以集群的规模可以认为是无限的。集群的规模上来了,尤其是在边缘侧的负载调度又称为了一个新问题,基于公司稳定而高效的边缘调度方式,通过客户端和服务端的完美配合实现高效,用户无感的连接体验。

4、关键:连接承载的瞬时数量

对于长连接的场景,连接保持固然重要,连接能够承载的瞬时数量也是非常关键的指标。而这个点也同样的是单机和集群的两个不同维度的问题,集群的角度则和上面的连接保持大致相同,而针对单机的连接创建和断开,则比单纯的保持住连接要复杂一些,需要考虑到登录时的鉴权问题,聊天室的特定场景,还需要考虑退出时的聊天室清理工作。

简单介绍一下整体的策略,主要将创建和断开时发生的事情分成了两大类,一类是需要同步去执行的动作,另外一类是可以进行异步处理的,则放入到异步队列进行处理。策略本身比较简单,但是真正在执行的过程中能够做到,而且能够随着版本的迭代一直保持策略则显的比较困难,为了达到该目标,我们坚持着一个原则,凡是要添加到同步逻辑中的内容,需要给明相应的理由,并且需要团队内部同步讨论,否则只能采用异步队列的方式,这里并不是说异步队列的事情不需要审核或者讨论,而且同步的需要明确的针对性的处理,这样才能保证同步逻辑的清晰以及策略的可持续性。

5、如何进行成员状态的维护?

聊天室属于多人聊天的一种特定的形态,消息仅仅扩散到在线的用户,用户离线则自动退出聊天室,并且再次上线后也不会接收到离线时的消息。至于像是一些断网了重新连接后还能继续观看直播的场景,进去时能够看到一些历史消息的情况,则是通过其他的手段实现自动订阅,拉取历史的能力。

成员的分级管理

上图中的左侧为聊天室与用户直接对应的关系表,也就是图中的用户聊天室信息,同步会产生聊天室成员信息,后续在消息路由的情况下,会高频的使用该结构查询聊天室的人员,进一步进行消息的扩散。分层的核心点在于节点聊天室的维护,只在当前节点的聊天室列表发生变化时才会修改节点聊天室信息,并且将该变更同步到 IDC,也即是上一次路由表中。这里只有第一个人加入聊天室和最后一个人退出聊天室时才会触发相应的逻辑。

上面是进一步抽离了关于分级注册的逻辑,由每一级将当前层级的聊天室对应关系注册,保活到上一级的聊天室关系中,我们也仅仅验证了 3 层,至于更多的层级理论上是可行的,但是不推荐使用,每增加一层复杂度和对异常情况的处理就会翻倍,对于后续介绍的消息投递则必须是所有的层级都正常工作才能将消息正常投递下来。

成员的心跳保持

本节点上的聊天室信息由于都是内存级别的操作,所以一般出问题的概率比较小。保障其一致性比较简单,但是跨节点,尤其是跨机房的,跨地区的网络交互,很难保证每次都是正常的,所以在同步相关的信息的时候,添加了类似的保活机制,异步队列机制,重试机制等来进一步保障业务的稳定性,当然还有及时异常处理机制,毕竟不能让用户进入了聊天室,但是确一直不能接收消息,还不能恢复当前的状态。

6、如何进行消息路由的选择?

多级路由

基于上面的分级注册的逻辑,可以看出消息的下发也是分级进行下发的,这种设计上减少了每层的下发的难度,举个例子如果有 200IMS,10 个 Edge,则极端情况下 IDC 需要分发的数量为 10 个,每个 Edge 的分发数量为 20 个,如果只有一级的话,则 IDC 需要分发 200 个请求,这个看着不是一个很大的数字,但是不要忘记这个仅仅为一条消息的分发量,而如果有 5000 请求则是 200*5000=1,000,000 则有百万级别的分发量,通过分级的方式能够有效的降低各个层级的复杂度,同时也能尽量减少跨机房,跨地区的调用,进一步降低风险。分级分发虽然带来了好处,也使得路径的维护变得相对复杂很多。

消息推拉结合


聊天室的场景,大部分场景下是采用直接推送消息的方式。大型的聊天室消息的过滤,筛选以及丢弃的策略的方式也是非常复杂的问题。至于消息到投递阶段之后,直接推消息给客户端,这样消息的即时性确实得到了保证,但是客户端的情况是不同的,机器的配置不同,机器当时的运行状态不同,网络状况也是不同的,所以在这种情况,需要支持客户端能够根据自己的情况进行拉取一定数量的消息,这样能够更加灵活的适应不同的场景。这些策略虽然说这简单,但是真正的落实到线上的服务,还是有很多的细节点需要考虑,真正做到稳定还是比较困难的,毕竟这种特定的场景期望很好的监控也是比较困难的。我们也是先从简单的固定模式的推拉方式进行处理,后续根据具体的情况进行更加细节性的调优。

固定路由

针对一些明确大型直播的场景需求,也提供了一种简单的路由方式,从上述的聊天室路由管理,可以看出出问题的情况还是可能存在的,所以针对已知特别大的聊天室场景,该场景的话,可以认为能够覆盖到所有的 IMS 服务,所以聊天室的分级注册就显得有点多余,所以聊天室级别的注册变更为节点的注册,依赖系统的服务注册发现默认就完成相关的内容,这样整个事情就变得非常的简单高效了。

这种方式有其在这种超大型聊天室的优势,也存在其自身的瓶颈点,所以的消息不管是否在本节点有用户加入了该聊天室,消息都会投递到该节点,故而每个 IMS 都要处理所有的消息,尽管很多的消息是没有下发投递的需求。方案没有万能的,所以这两种处理方式是互补的,并不是互斥的。

7、大规模边缘聊天室 VS 中心集群

大规模边缘聊天室的方案,相较于传统的中心集群式的聊天室,从技术的大的架构是没有本质的区别,依然是多级路由,消息推拉结合的方式。

不同的点在于部署的形态不同,而恰恰是这些的不同使得很多东西发生了变化。大规模边缘聊天室的方式,增加了边缘的连通性,能够在更加靠近用户的地方进行就近部署,达到解决最后五公里的目的。并且能够利用各个机房的资源,从而达到百万,千万级别甚至更高量级的用户数量。大规模边缘聊天室的方案在实施的过程中,对成本的降低也起到了关键作用,由于中心机房一般保证可用性和稳定性,一般采用的都是 BGP 的网络,成本相对边缘机房的非 BGP 网络要贵很多。系统整体可用性的角度,大规模边缘聊天室相比于中心集群式的聊天室,对于机房故障的容灾性更好。当然这里主要介绍了大规模聊天室的优点,任何一种方案都不是全能的,有其优点就有其自身的劣势。大规模边缘聊天室部署形态复杂,对于运维体系的要求相对较高,服务间网络稳定性也比较难以保障,所以一般适用于对大规模的,公开的聊天室,对于比价多精细玩法的场景,或者小规模不太适合,反而增加了很多的不确定性。

8、大规模边缘聊天室 VS CDN 方式

针对大规模聊天室,曾考虑过是否可以使用业界比较成熟的 CDN 分发技术。在具体的实践过程中发现,针对这种小包,而且不会重复分发的场景,这里指的是同一个消息,不太会被一段时间不断的获取,聊天室的场景一般是当时收到了就收到了,如果没有收到,后续也不太期望需要收到消息。而且 CDN 的方案都是将消息聚合后,客户端定时拉取的方式,消息存在重叠性,延时性等不能满足客户的需求。

技术难度上,加入 1000 万的聊天室,每 10s 重新刷新一次消息,也有将近 100W 的 QPS 请求,这对于 CDN 系统也是一个非常大的调整,而且即使接入多家的 CDN 也会存在比较高比例的超时。更何况 10S 的延时,对于有些场景已经能够明显感知到了。

大规模聊天室相对于集中式,单中心的方案,不仅仅在服务的稳定性,承载的用户量级上有了显著的提升,而且在成本上也能有大幅的降低,同时用户体验也变得更好。至于业界一直尝试的 CDN 的聊天室方案同样存在着本身的局限性,不同于音视频消息单个内容相对较小,瞬时性访问量较大,重复访问的概率几乎没有等特定,使得 CDN 的实践方案无法满足该场景的需求。

8、典型案例:卡特尔世界杯,边缘网络+低时延,支持1800万用户同时在线大规模聊天室,消息下发每秒4000万条;

2022卡塔尔世界杯已经圆满落幕,期间,环信针对运营商客户对于世界杯的直播聊天室进行专业改造,并且帮助客户实现千万级聊天室的技术支持。解决了客户对于世界杯赛事直播海量用户在线的需求,通过架构的调整,能够同时支撑1800万用户同时在线,消息的处理能力达到了5000QPS,消息的下发量达到了4000万+/秒的级别。环信整体方案不仅能够支持到如此大规模的量级,而且成本也能够比肩CDN的方案,机器能够进行高效的扩缩容。


作者:张超  环信即时通讯云后台研发负责人,负责环信IM消息平台的架构设计工作,有超过9年的即时通讯行业经验。


更多热门内容
Ledger中国官方店铺公示:为中国大陆用户提供正品硬件钱包销售与售后服务支持
为方便中国大陆用户识别正规购买渠道,保障购买体验与售后服务权益,现对 Ledger 中国官方店铺及相关服务信息进行公示。一、主体资质与授权说明广州馨潇贸易有限公司为 Ledger 中国大陆相关店铺运营主体,具备合法注册资质,可在中国大陆开展 Ledger 系列硬件钱包销售、

2026-06-01

2026年大六座混动SUV购车指南:体验好不晕车看这八款就够了
随着多成员家庭出行需求的持续增长,大六座混动SUV凭借独立座椅布局、灵活空间与可油可电的续航优势,成为30-40万混动SUV细分市场中家庭用户关注的焦点。面对层出不穷的新车,很多消费者都在问:哪款家用全尺寸混动SUV安全性能比较高?操控性能好的大六座混动SUV推荐哪个

2026-06-01

从模型到仿真验证,Alpamayo 2 Super 发布,五一视界(HK.6651)基础设施价值进一步强化
北京时间上午 11 点,英伟达创始人兼 CEO 黄仁勋在中国台北发表英伟达 GTC 台北 2026 主题演讲,其中面向智能驾驶领域发布了 Alpamayo 2 Super 车端大模型,并同步推进 DRIVE Hyperion 全球商业化部署计划。业内普遍认为,随着智能驾驶向 Physical AI 阶段加速演进,围

2026-06-01

2026智能数据治理破局:五大主流平台差异化路径与选型指南
一、当数据中台遭遇“治理瓶颈”经过数年大规模投入,国内多数大中型企业已完成数据中台的基础设施搭建——数据湖、数据仓库、计算引擎逐一就位。然而,平台“建起来”与真正“用起来”之间,仍横亘着一道亟待跨越的门槛。这道门槛的核心,正是数据治理。当企业将数十个

2026-06-01

输出中国机器人方案,极智嘉(2590.HK)携手拉美龙头助力区域仓储智能升级
近日,全球智能机器人引领者极智嘉 (Geek+, 股票代码: 2590.HK)与拉丁美洲领先的工业存储系统供应商Mindugar达成战略合作,双方将携手为拉美企业提供一体化、可扩展的智能仓储解决方案,满足区域快速飙升的自动化需求。此次合作不仅赋能拉美下一代智能供应链建设,并进

2026-06-01

30-40万混动SUV怎么选?五款高性价比大六座横评,为你找到全家出游最优解
当家庭购车预算来到30-40万元,消费者关心的早已不是“要不要买混动”,而是“如何在大六座混动SUV里选到让全家人都满意的那一台”。据乘联会数据,这一价位的大六座混动SUV近一年销量同比增长超过35%,成为多孩家庭升级座驾的首选。许多二胎父母反复纠结:30-40万适合

2026-06-01

2026年30W氮化镓充电头终极实测:EAK小冰充凭什么成为综合首选?
副标题:5款主流30W快充头全面对比,数据说话,告别选择困难一、测评前言:为什么做这次30W充电头实测?30W充电头是便携快充的黄金功率段,既能满足iPhone、安卓旗舰的快充需求,又适配iPad、Switch等设备,同时兼顾小巧体积与优秀散热,尤其适合经常出差、需要随身带快

2026-06-01

工控机厂家TOP级有哪些?
在科技飞速发展的今天,工控机在各个行业里那可是扮演着至关重要的角色。大家肯定都好奇,到2026年,行业内TOP级的工控机厂家会是谁呢?今天咱们就来好好聊聊这个事儿。一、工控机市场现状大揭秘先给大家看看一些数据哈。据市场调研机构的数据显示,近年来,全球工控机市

2026-06-01

企业加密软件怎么选?数据安全一体化解决方案提供商精选推荐
企业在数字化转型过程中,核心数据早已成为最重要的资产之一。从研发技术文档、生产工艺配方、客户档案信息,到财务报表、商业合同、内部管理资料,每一类数据都承载着企业的核心竞争力。然而,随着远程办公常态化、跨部门协作频繁化、外部合作增多,数据流转渠道日益多

2026-06-01

创想三维港交所上市:致谢同路人,推出离职员工专属纪念礼
5月29日,创想三维正式登陆香港联合交易所,股份代号:03388.HK,成为港股消费级3D打印第一股。值此里程碑时刻,公司特别推出“上市纪念礼”,向曾参与公司成长的历届创想人表达谢意。创想三维于2014年创立于深圳,历经12年深耕,从一间小小的办公室出发,成长为全球消

2026-06-01