弹幕基础

第一版弹幕系统可以从三个核心对象开始:房间、用户和消息。

用户 -> 发送弹幕 -> 房间 -> 推送给在线观众

消息模型

一条弹幕消息至少包含:

字段含义
message_id消息唯一 ID
room_id直播间
user_id发送者
content文本内容
type普通弹幕、系统消息、礼物、管理员消息
status待审核、可见、拦截、删除
created_at发送时间

不要只存文本。消息类型和状态会影响后续审核、分发、落库和回放。

基础发送流程

最小可用流程如下:

  1. 用户进入房间,建立连接。
  2. 用户发送弹幕。
  3. 服务端鉴权,检查是否登录、是否被禁言。
  4. 内容经过敏感词和频率校验。
  5. 消息推送给房间内在线用户。
  6. 异步写入存储,用于回放和审核。

这里已经出现两个链路:实时链路和异步链路。实时链路追求低延迟,异步链路负责存储、统计和复盘。

消息分级

不同消息不能一视同仁:

  • 普通弹幕:低延迟优先,可以采样落库。
  • 系统公告:必须送达,优先级高。
  • 礼物消息:必须和支付状态一致。
  • 管理消息:禁言、踢人等需要尽快生效。

消息分级后,后续才能设计不同的队列、限流和重试策略。

基础治理

早期也要加入最基本的治理:

  • 用户发送频率限制。
  • 房间级刷屏限制。
  • 敏感词过滤。
  • 黑名单和禁言状态检查。

这些规则不必一开始很复杂,但必须预留扩展点。下一章我们会把 HTTP 轮询升级为 WebSocket 长连接,让消息真正实时到达。