
1) 【一句话结论】
针对海量短视频,采用“分层存储(对象存储+S3冷存储)+内容感知检索(Elasticsearch+OCR/人脸识别)”架构,通过倒排索引、分片优化及内容特征索引,实现高效存储与多维度(文本+内容)检索,平衡成本与性能。
2) 【原理/概念讲解】
老师口吻解释关键概念:
3) 【对比与适用场景】
| 技术名称 | 定义 | 特性 | 使用场景 | 注意点 |
|---|---|---|---|---|
| HDFS | Hadoop分布式文件系统 | 数据本地性高,适合本地计算,高吞吐;跨区域访问延迟高(数百毫秒),最终一致性 | 本地集群计算(视频处理、日志分析) | 跨区域业务访问慢,不适合云上跨地域访问 |
| S3 | AWS对象存储服务 | 海量非结构化数据存储,跨区域访问灵活(延迟<50ms),高可用;读取延迟较高,写入成本(如对象存储的写入费用) | 海量视频存储,跨地域业务 | 适合存储原始视频,冷数据归档 |
| Elasticsearch | 基于Lucene的分布式搜索引擎 | 倒排索引,分片/副本,实时索引;支持多维度查询(文本+内容特征) | 海量文本检索(视频标题、标签),内容特征检索(OCR、人脸) | 查询复杂度,索引更新延迟(异步),需额外资源(如集群) |
| OCR/人脸识别 | 视频内容分析技术 | 提取文字/人脸特征,作为检索元数据 | 视频内容(画面文字、人物特征)检索 | 计算成本高,需GPU加速,需与存储分离部署 |
4) 【示例】
视频上传与检索流程:
video_123.mp4),文件存储到S3(bucket: video-store,key: video_123.mp4)。facedata_abc)。video-index),示例请求:
PUT /video-index/_doc/{video_id}
{
"title": "搞笑段子视频",
"tags": ["搞笑", "短视频"],
"upload_time": "2023-10-01T12:00:00Z",
"ocr_text": "搞笑段子",
"face_features": "facedata_abc"
}
GET /video-index/_search
{
"query": {
"bool": {
"must": [
{ "match": { "title": "搞笑" } },
{ "match": { "ocr_text": "搞笑段子" } }
]
}
}
}
5) 【面试口播版答案】
面试官您好,针对海量短视频的存储和检索问题,我的核心方案是“分层存储+内容感知检索”架构。原始视频存入对象存储(如S3),元数据及内容特征(文字、人脸)通过OCR、人脸识别等工具提取后,索引到Elasticsearch。检索时,用户可通过文本(标题、标签)或内容特征(画面文字、人物)查询,ES的倒排索引加速匹配,分片机制平衡负载。冷数据访问频率低时(如<1次/天,时间超过30天),迁移到S3的Glacier(通过Kafka触发数据复制),热数据保留在S3,减少成本。分片数量根据数据量(如每个分片100万条)和QPS(如1000QPS)计算,副本设为3提升可用性。这样既能高效存储海量视频,又能实现多维度检索,满足用户需求。
6) 【追问清单】
7) 【常见坑/雷区】