这是 Beta 探索课程,内容结构、实验步骤和示例可能会继续调整。
弹幕基础
第一版弹幕系统可以从三个核心对象开始:房间、用户和消息。
用户 -> 发送弹幕 -> 房间 -> 推送给在线观众消息模型
一条弹幕消息至少包含:
| 字段 | 含义 |
|---|---|
| message_id | 消息唯一 ID |
| room_id | 直播间 |
| user_id | 发送者 |
| content | 文本内容 |
| type | 普通弹幕、系统消息、礼物、管理员消息 |
| status | 待审核、可见、拦截、删除 |
| created_at | 发送时间 |
不要只存文本。消息类型和状态会影响后续审核、分发、落库和回放。
基础发送流程
最小可用流程如下:
- 用户进入房间,建立连接。
- 用户发送弹幕。
- 服务端鉴权,检查是否登录、是否被禁言。
- 内容经过敏感词和频率校验。
- 消息推送给房间内在线用户。
- 异步写入存储,用于回放和审核。
这里已经出现两个链路:实时链路和异步链路。实时链路追求低延迟,异步链路负责存储、统计和复盘。
消息分级
不同消息不能一视同仁:
- 普通弹幕:低延迟优先,可以采样落库。
- 系统公告:必须送达,优先级高。
- 礼物消息:必须和支付状态一致。
- 管理消息:禁言、踢人等需要尽快生效。
消息分级后,后续才能设计不同的队列、限流和重试策略。
基础治理
早期也要加入最基本的治理:
- 用户发送频率限制。
- 房间级刷屏限制。
- 敏感词过滤。
- 黑名单和禁言状态检查。
这些规则不必一开始很复杂,但必须预留扩展点。下一章我们会把 HTTP 轮询升级为 WebSocket 长连接,让消息真正实时到达。