普通群里发消息,服务器推给几百人,压力不大。但群里有一万个人呢?一条消息要发到一万个终端,还要保证顺序、去重、不卡顿,背后的架构没那么简单。这篇文章把 SafeW 万人群的消息链路拆开讲。
核心思路:推拉结合
万人群不可能让每个成员都和服务器保持一条长连接然后逐条推送——一万条连接对服务器是巨大负担。SafeW 的做法是「推拉结合」:在线成员通过长连接接收增量通知,离线成员上线时再拉取未读消息。这样服务器的推送压力从 O(群人数) 降到了 O(在线人数)。
消息分片与广播
一条群消息会先落库(密文存储),然后进入调度队列。调度器把消息按成员分片,交给多个推送节点并行下发。分片的好处是:某一片失败不影响其他片,重试的成本也小。这就是「毫秒级调度」的来源——不是单台服务器硬扛,而是集群分摊。
顺序与去重
群消息多了,顺序不能乱。SafeW 为每条消息生成全局递增序号,客户端按序号排序展示。网络抖动导致的重复消息,靠消息 ID 去重。这两件事做不好,大群里就会出现「消息乱序、重复轰炸」的灾难现场。
高峰期怎么办
直播、活动期间,万人群的消息量可能暴涨几十倍。架构上靠弹性扩容扛,运营上靠频率限制兜底。作为群主,你可以设置发言频率限制、全员禁言,这些设置是给架构减负,也是在保护群体验,具体见 SafeW万人超级群搭建。

理解了调度架构,你就明白为什么万人群要「管」着用:架构能扛,但运营不做限制,任何架构都会被打爆。技术和管理,在大群里从来都是两条腿。
