这是 Beta 探索课程,内容结构、实验步骤和示例可能会继续调整。
热点隔离与在线人数
为什么要隔离
一个爆火直播间(如顶流开播)可能瞬间涌入几十万人。如果不做隔离,这个热点会拖垮全站:
- 占满消息队列。
- 占满网关资源。
- 影响其他普通房间。
隔离的目标是让一个爆火直播间不会影响其他房间。
热点隔离手段
| 手段 | 作用 |
|---|---|
| 大房间使用独立频道和资源池 | 资源隔离 |
| 单房间设置最大入站消息率 | 上限保护 |
| 单用户、单设备、单 IP 限流 | 防刷 |
| 网关发送队列过长时丢弃低优先级弹幕 | 队列保护 |
| 礼物和系统消息走高优先级通道 | 重要消息保命 |
资源池隔离
- 大房间消息走独立队列 / 独立消费组。
- 避免大房间积压把全站队列塞满。
- 可以给热点房间动态分配更多网关分片。
在线人数允许近似
在线人数不能每个连接变化都实时写数据库。常见做法:
网关定期上报本机房间连接数
-> 聚合服务计算近似在线人数
-> 展示给用户
- 上报周期(如 5~10 秒)内允许误差。
- 用户展示的在线人数可以短时间不准。
- 对外的结算、统计、审计要以后端校验为准。
在线人数的两种口径
- 展示口径:近似即可(周期性聚合)。
- 结算口径:要准确(以事件为准,单独统计)。
两条口径分开,避免为了展示准确而实时写库。
一句话
热点隔离 = 独立资源池 + 上限 + 优先级保命;在线人数 = 展示近似 + 结算准确。保护核心体验,允许非关键的短暂误差。
下一章引入消息队列,把发送、审核、分发、落库解耦。
发现内容有问题?
告诉我们哪里需要改进。
