热点隔离与在线人数

为什么要隔离

一个爆火直播间(如顶流开播)可能瞬间涌入几十万人。如果不做隔离,这个热点会拖垮全站:

  • 占满消息队列。
  • 占满网关资源。
  • 影响其他普通房间。

隔离的目标是让一个爆火直播间不会影响其他房间。

热点隔离手段

手段作用
大房间使用独立频道和资源池资源隔离
单房间设置最大入站消息率上限保护
单用户、单设备、单 IP 限流防刷
网关发送队列过长时丢弃低优先级弹幕队列保护
礼物和系统消息走高优先级通道重要消息保命

资源池隔离

  • 大房间消息走独立队列 / 独立消费组。
  • 避免大房间积压把全站队列塞满。
  • 可以给热点房间动态分配更多网关分片。

在线人数允许近似

在线人数不能每个连接变化都实时写数据库。常见做法:

网关定期上报本机房间连接数
  -> 聚合服务计算近似在线人数
  -> 展示给用户
  • 上报周期(如 5~10 秒)内允许误差。
  • 用户展示的在线人数可以短时间不准。
  • 对外的结算、统计、审计要以后端校验为准。

在线人数的两种口径

  • 展示口径:近似即可(周期性聚合)。
  • 结算口径:要准确(以事件为准,单独统计)。

两条口径分开,避免为了展示准确而实时写库。

一句话

热点隔离 = 独立资源池 + 上限 + 优先级保命;在线人数 = 展示近似 + 结算准确。保护核心体验,允许非关键的短暂误差。

下一章引入消息队列,把发送、审核、分发、落库解耦。

发现内容有问题?

告诉我们哪里需要改进。