WebSocket 广播风暴抑制:万人在线群发通知?合并小包+二进制压缩,带宽节省 70%!
做过实时消息推送的同学肯定都遇到过这个问题:当有大量用户在线时,频繁的小消息广播会导致带宽急剧上升,甚至引发广播风暴。特别是在直播弹幕、实时通知、多人协作等场景,这个问题尤为突出。 我之前就遇到过这样一个案例:一个直播平台在搞活动时,同时在线人数突破了 10 万。运营人员发了一条弹幕抽奖消息,结果瞬间产生了 10 万条 WebSocket 消息推送,导致服务器带宽直接跑满,部分用户出现消息延迟甚至断线重连。 今天我们就来聊聊 WebSocket 广播风暴的抑制方案,让您的系统轻松应对万人在线的消息推送场景。 广播风暴的根本原因 1. 小消息频繁发送 这是最常见的情况: 场景:10 万在线用户 + 每秒 10 条小消息 每条消息大小:100 bytes 每秒发送量:10 万 × 10 = 100 万条 每秒带宽消耗:100 万 × 100 bytes = 100MB/s ≈ 800Mbps 如果每条消息有 50 字节的协议开销: 实际带宽消耗:100 万 × 150 bytes = 150MB/s ≈ 1.2Gbps 2. TCP 小包问题 TCP 小包的问题: ┌──────────....