
1) 【一句话结论】
针对快手TB级短视频的存储与检索需求,设计分层分布式系统,通过对象存储(冷热分离)+ 块存储(低延迟写)+ 分布式索引(倒排+时间)+ 多级缓存(CDN+本地),实现快速检索(关键词、标签、时间)与低延迟访问(延迟<100ms)。
2) 【原理/概念讲解】
老师解释关键概念:
3) 【对比与适用场景】
存储方案:
| 类型 | 定义 | 特性 | 使用场景 | 注意点 |
|---|---|---|---|---|
| 对象存储(冷) | 存储大文件,高并发读 | 适合冷数据,成本较低 | 历史视频、低频访问视频 | 写操作延迟较高 |
| 块存储(热) | 低延迟随机写,高吞吐 | 适合热数据,频繁读写 | 近期热门视频、视频编辑 | 成本较高,写密集场景 |
索引方案:
| 类型 | 定义 | 特性 | 使用场景 | 注意点 |
|---|---|---|---|---|
| 倒排索引 | 关键词/标签→视频ID列表 | 快速关键词检索 | 关键词/标签搜索 | 需定期增量更新 |
| 时间索引 | 按时间范围组织视频 | 快速时间范围检索 | 时间范围查询 | 按时间粒度划分(如日/月/年) |
缓存方案:
| 类型 | 定义 | 特性 | 使用场景 | 注意点 |
|---|---|---|---|---|
| CDN | 内容分发网络,就近节点缓存 | 降低用户访问延迟 | 用户访问热门视频 | 需动态更新缓存内容 |
| 本地缓存 | 应用服务器缓存热门内容 | 减少后端压力 | 高频访问视频 | 需定期清理过期数据 |
4) 【示例】
用户查询“2023年春节#家庭”标签的视频,流程:
GET /videos?keyword=春节&tag=家庭&time=2023-01-01%20%3E%3D&time=2023-02-28%20%3C%3D5) 【面试口播版答案】
“面试官您好,针对快手TB级短视频的存储与检索需求,我的核心设计思路是构建分层分布式系统,通过对象存储(冷热分离)、块存储(低延迟写)、分布式索引(倒排+时间)和多级缓存(CDN+本地),实现快速检索与低延迟访问。具体来说:底层存储采用对象存储(如S3)存储TB级视频,冷数据(7天内访问量<100次)迁移至对象存储,热数据(近期热门)用块存储(如Ceph)低延迟读写;中间层是分布式索引,倒排索引处理关键词/标签检索,时间索引处理时间范围查询,两者结合快速定位;缓存层用CDN就近节点缓存视频,本地缓存应用服务器缓存热门视频,降低用户访问延迟;通过负载均衡确保高可用。这样设计既能处理TB级数据,又能实现关键词、标签、时间的快速检索(延迟<100ms),满足低延迟需求。”
6) 【追问清单】
7) 【常见坑/雷区】