这是 Beta 探索课程,内容结构、实验步骤和示例可能会继续调整。
高并发弹幕
弹幕系统的高并发难点不只是“很多人发消息”,更是广播放大。一条弹幕如果要推给 10 万在线观众,就会变成 10 万次下行推送。
1 条入站消息 -> N 个在线观众出站消息这就是直播弹幕的核心压力。
广播放大
假设一个房间 10 万人在线,每秒 1000 条弹幕。如果每条都推给所有人,理论下行消息就是:
1000 × 100000 = 1 亿条/秒这显然不可接受。系统必须对大房间做策略控制。
房间分片
热门房间可以把观众连接分散到多个网关分片:
room_123_shard_1
room_123_shard_2
room_123_shard_3消息服务把房间消息发布到所有分片,每个网关只负责本机连接。这样可以横向扩展下行能力。
消息降采样
不是每个观众都必须看到每一条普通弹幕。对大房间可以采用:
- 普通弹幕采样展示。
- 高频用户限速。
- 重复内容合并。
- 只保留高质量或高权重消息。
- 礼物、管理员、系统消息优先推送。
这不是偷工减料,而是直播产品的体验取舍:用户需要的是热闹和实时,不是逐字逐条完整接收。
热点隔离
热门房间不能拖垮全站。要做隔离:
- 大房间使用独立频道和资源池。
- 单房间设置最大入站消息率。
- 单用户、单设备、单 IP 限流。
- 网关发送队列过长时丢弃低优先级弹幕。
- 礼物和系统消息走高优先级通道。
隔离的目标是让一个爆火直播间不会影响其他房间。
在线人数
在线人数也不能每个连接变化都实时写数据库。可以由网关定期上报本机房间连接数,再由聚合服务计算近似在线人数。对用户展示的在线人数可以允许短时间误差。
高并发弹幕的关键是承认消息有优先级,并通过分片、采样、限流和隔离保护核心体验。下一章引入消息队列,把发送、审核、分发、落库解耦。