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年的即时通讯行业经验。


更多热门内容
贝壳董事会主席拟捐赠股票投入居住领域并长期运营
4月17日,贝壳最新公告显示,贝壳董事会主席、首席执行官及控股股东彭永东拟捐赠9,000,000股A类贝壳普通股。在承担相应的纳税义务后,此次捐赠股票将50%税后资金用于居住行业服务者及其家庭成员的医疗健康福利、50%税后资金用于应届毕业生等租客群体的租房帮扶。据悉,

2025-04-17

心所想AI所向,2025凯度品牌日暨春季新品发布会盛大举行
面对厨电行业智能化、品质化升级趋势。4月16日,凯度成功举办了以“心所想·AI所向”为主题的2025凯度品牌日暨春季新品发布会。凯度CEO柯漫、董事长傅平及明星生活家王真儿依次登场,通过理念分享、技术解读、场景演绎,全面诠释“高端新厨电”;重磅推出首个AI数字生命体“

2025-04-17

FF为股民而战:五大举措启动“非法做空阻击战”,打赢梦想实现战
4月17日,Faraday Future(简称“FF”)今日宣布,为捍卫股东价值与信心,公司正式启动五大核心举措,标志着“梦想实现战之潜在非法做空反击战”的正式打响。在公司昨日提交Form D文件后,市场上迅速传播出一系列谣言——包括错误声称Form D表明高管正在出售股份;股价跌破

2025-04-17

Mureka火爆海外,今日正式开放国内登陆入口和API
2024年4月,昆仑万维发布了第一代音乐生成模型Mureka V1(SkyMusic)。2024年8月14日,昆仑万维推出AI音乐商用创作平台Mureka。2025年3月26日,正式发布Mureka O1模型与Mureka V6模型。自Mureka上线以来,在海内外获得了非常好的市场反响,成为全球AI音乐界现象级产品。

2025-04-16

问界M8正式发布:车载小艺一路聊,随时随地问问小艺
4月16日,家庭智慧旗舰SUV鸿蒙智行问界M8正式发布上市,据悉其搭载的鸿蒙座舱重塑家庭出行交互新范式,车载智慧助手小艺能力再升级,展现出卓越的语音交互能力,有问题随时随地都可以问问小艺。全新的小艺搜歌功能,仅需告诉小艺歌词与背景信息,即可“搜”听到想听的歌

2025-04-16

掘金AI千亿赛道 金山云获战略股东持续增持
2025年4月16日,金山云(NASDAQ:KC,HKEX:3896)宣布,将公开发行18,500,000股美国存托股(ADS),每ADS代表该公司15股普通股。同时,金山云还授予ADS承销商购买额外美国存托股的30天选择权。并且,为了方便港美股两地投资者认购,投资者可以选择在此次发行中以普通股代替AD

2025-04-16

昂瑞微客户到底是谁,招股说明书闪烁其词
2025年3月28日,北京昂瑞微电子技术股份有限公司(下称“昂瑞微”)科创板IPO申请获受理,成为今年首家未盈利企业申报案例。作为射频前端芯片领域的“国产替代先锋”之一,昂瑞微凭借20.67亿元募资计划、50.88%的营收复合增长率引发市场关注。然而,对于其招股书中客户信

2025-04-16

昂瑞微靠低端产品增收,5G增长乏力,上市之路能走多远?
3月28日,北京昂瑞微电子技术股份有限公司(以下简称“昂瑞微”)向上交所递交IPO申请。作为主营射频前端芯片、射频SoC芯片的集成电路设计企业,其招股书披露的财务数据看似亮眼:2022-2024年累计营收47.19亿元,复合增长率达50.88%。但穿透数据表象可见,公司增长动能过

2025-04-16

小刀电动车怎么样?以科技、美学重构时尚标杆,三登“Ray时尚”TOP榜
凭借卓越的综合实力与对市场需求的精准洞察,近日,小刀电动车产品再次登上“Ray时尚”电动自行车TOP榜,以及“Ray时尚”可持续时尚企业。这是小刀电动车连续三年(2023-2025年)斩获殊荣。这一成就不仅体现了其产品在设计、性能、品质上的持续突破,更印证了品牌“科技

2025-04-15

京东新品成长“百千亿”计划:2025年将打造600款销售亿级新品
4月15日,2025京东新品年度盛典在北京举行,正式推出京东新品成长“百千亿”计划,即在2025年加码百亿流量和百亿资金,并围绕营销能力与数字能力全面升级,实现60000款新品年销售破百万、6000款新品年销售破千万、600款新品年销售破亿。在此次盛典活动上,京东宣布“京

2025-04-15