使用Gatewayworker分布式架构搭建直播间 joinGroup 时需要分割分组吗?

minghui

问题描述

直播间人数3-10万 目前是4个gateway服务(最大可扩展6个服务) 16核32G服务器部署 有大量的sendToGroup的场景 请问需要分割分组进行推送消息吗?单个分组向10万人推送信息会造成阻塞吗?

为此你搜索到了哪些方案及不适用的原因

老代码中将直播间固定分割了10个分组,例如:roomid_1 roomid_2 这样的形式
推送的时候直接for循环推送十次 最近发现出现丢包和超时的问题 排查觉得是这个造成的原因。
又担心如果只用一个分组的话sendToGroup会非常慢造成阻塞

142 1 4
1个回答

这种高在线直播场景,要控制广播频率,要控制广播频率,要控制广播频率,重要的事情说三遍

假设你们10万在线,每秒广播十几条消息,上G的带宽可能都不够用(会大量超时)。
不限制广播量的另外一个副作用就是消息会刷屏,谁都看不清消息。
抖音等直播间,不管是1万还是10万的在线直播间里每秒也就广播发1-2条消息。

所以只要控制好每个直播间里的广播消息量,那么什么问题都解决了。
控制方法例如每个直播间设置一个每秒的定时器,然后从这一秒内产生的消息中选出1-2条广播出去。
这样整个系统每秒的广播量非常可控,带宽也非常可控,接口调用量也可控,就基本没什么问题了。

最后
sendToGroup 直接调用就行,千万不要再分多个小组,否则内部会裂变成多次gateway调用,对性能影响也很大。

🔝