"我们下一场活动预计十万人同时在线,系统扛得住吗?"这是客户技术负责人最爱问的问题,也是直播系统开发里最硬核的问题。这篇文章把我们做高并发直播系统的架构思路拆开讲,既是开发方案框架,也是一份"评估厂商技术实力"的参照物——敢把架构讲透的厂商,通常真的扛过。
一、总思路:两条流分开设计
直播系统的流量本质是两条流:
- 视频流和互动流。视频流(音视频数据)体量最大,但方案成熟——推流到云直播,分发交给CDN,应用服务器不碰视频数据;
- 互动流。(弹幕、点赞、礼物、在线人数、下单通知)体量小但连接多、扇出复杂,这才是自研部分的核心。
很多系统一上来就崩,是因为把视频流也往自己服务器上扛。架构第一原则:视频走CDN,服务器只扛互动和业务。
二、接入层:WebSocket网关集群
互动流的基础是长连接。网关层用WebSocket维持客户端连接,设计上注意三点:
①无状态化,网关不存业务状态,连接信息放Redis,这样才能横向扩容;②按房间路由,同一房间的连接尽量落在可调度范围内,便于广播;③单机连接数压测到位,调优后单机数万到十几万长连接是合理预期,达不到就先查文件描述符、内存和事件循环。
三、消息扇出:跨节点广播与大房间降频
单房间用户必然分布在多个网关节点上,所以消息要"发布-订阅"扇出:房间消息发到Redis pub/sub或Kafka,各节点订阅自己持有连接的房间,再做本地广播。
真正的难点在大房间:一个房间几万人同时发弹幕,如果每条都全量扇出,带宽和客户端渲染都会爆。标准解法是“合并降频”:服务端按时间窗口(比如200ms)攒批,弹幕采样下发,点赞礼物合并计数推送。用户感知不到差异,系统压力下降一个数量级。这一层做不做,是"玩具架构"和"生产架构"的分水岭。

四、业务层与数据层
下单、礼物账务这类强一致业务,走独立的服务和数据库,与IM链路解耦——弹幕可以降频,钱不能丢。数据库层面:读写分离是标配,热数据(在线状态、房间计数)全部放Redis,落库异步化。峰值活动前做全链路压测,按峰值1.5倍准备资源,配合弹性伸缩。
五、带宽:真正的成本大头
架构评审时别忘了算带宽账:10万人看720P,下行带宽是Gbps级别,这部分成本在云直播和CDN侧,按流量或95计费。架构上能做的优化是:清晰度自适应、P2P辅助分发(视场景)、静态资源全部对象存储化。记住:服务器成本是小头,带宽才是大场的主要账单。
高并发直播系统的核心不是堆机器,而是四个设计决策:视频与互动分离、网关无状态横向扩展、大房间合并降频、带宽成本前置规划。这套架构我们在自己的大场实战中反复验证过。智辉云私域直播系统源码交付,含架构文档与二开支持,也承接高并发直播模块的定制开发。想聊你们的架构方案,欢迎随时联系智辉云。我们的技术顾问很乐意为您提供一份演示账号或专属的定制化建议,帮您少走弯路。
