
1) 【一句话结论】直播系统由流媒体服务器(处理视频编码转码推流)、CDN(边缘缓存分发)、数据库(存储业务数据)构成,通过流媒体服务器的高并发策略、CDN的缓存一致性机制及分布式事务/消息队列保障用户观看记录与订单等数据一致性。
2) 【原理/概念讲解】老师口吻解释各组件:
3) 【对比与适用场景】
| 组件 | 定义 | 特性 | 使用场景 | 注意点 |
|---|---|---|---|---|
| 流媒体服务器 | 视频处理与推流设备 | 支持RTMP/HLS等协议,编码转码预编码,推流 | 直播源站,处理高并发视频流 | 需支持实时转码,高并发处理(负载均衡+多实例) |
| CDN | 边缘节点缓存网络 | 边缘节点缓存视频流,就近服务 | 大规模用户访问,降低源站压力 | 缓存更新需及时(TTL+预热),避免内容不一致 |
| 数据库 | 数据存储与管理 | 存储用户信息、观看记录、订单 | 业务数据持久化 | 需事务支持(分布式事务),保证核心数据一致性 |
4) 【示例】用户观看直播流程(含极端情况):
watch:{user_id}:{live_id},TTL=60s),同时异步写入数据库(Kafka消息队列保证顺序);若用户长时间观看(超过TTL),Redis过期后,通过数据库查询补全观看记录。5) 【面试口播版答案】
各位面试官好,关于直播系统的技术组件及数据一致性,我的理解是:直播系统主要由流媒体服务器、CDN和数据库构成。流媒体服务器负责视频的编码(如H.264)、实时转码(预编码生成多码率流,如1080P/720P适配不同设备)、推流;CDN在边缘节点缓存这些流,用户访问时从最近节点获取,提升体验;数据库存储用户信息、观看记录和订单数据。保证数据一致性方面,用户观看记录采用“缓存-数据库”双写,Redis缓存观看状态(TTL=60s),通过Kafka异步写入数据库;订单数据用Seata分布式事务(TCC模式),确保下单时库存减少与订单创建同时完成。同时考虑高并发时流媒体服务器的负载均衡(Nginx多实例)和CDN缓存更新(TTL+缓存预热),以及极端情况(如网络分区)的数据一致性保障(Seata补偿机制)。
6) 【追问清单】
7) 【常见坑/雷区】