1. 概述:说明目标:提升CDN视频检索速度与监控准确度。
- 输出:可检索的元数据集、统一标签体系、实时告警机制。
- KPI示例:检索RT < 200ms、标签召回率>95%、关键异常告警误报率<5%。
2. 明确范围:列出要管理的资源类型(直播/HLS、VOD、DRM)。
- 指标定义:检索场景(按标题/标签/时间/地域)、监控场景(缓存命中率、热度突增、回源失败)。
- 输出文档:需求矩阵与示例查询。
3. 字段设计:基础字段(video_id, title, duration, codec, format, create_time)。
- 衍生字段:popularity_score、last_played、tag_list。
- 示例JSON Schema:{"video_id":"string","title":"string","duration":"int","tags":["string"],"cdn_status":{"edge_hit_rate":"float"}}。
4. 标签策略:分层标签(类别->子类->场景)、受控词表与自由词并行。
- 示例:category:体育/娱乐; scene:片段/预告; auto-tags:face_detected/contains_ad。
- 版本化:标签表维护版本号,变更需审批。
5. ID规范:采用全局唯一ID(如UUID或雪花ID),并记录版本号与checksum。
- 命名规则:video_id=serviceCode_YYYYMMDD_unique;文件名与manifest内metadata一致。
6. 存储方案:元数据主库(关系型或NoSQL)+ 搜索引擎(Elasticsearch)索引。
- 表结构示例:videos(id PK, title, duration, tags JSON, cdn_meta JSON, updated_at)。
- ES Mapping示例:title:text+keyword, tags:keyword, popularity:float, edge_hit_rate:float。
7. 流水线步骤:采集->校验->丰富(转码信息/人脸/语义)->入库->索引。
- 校验规则:必填字段、时间格式、大小限制。
- API示例:POST /api/v1/videos {video_id,title,duration,tags,cdn_meta},响应包含task_id以便追踪。
8. 集成要点:把必要元数据放在边缘可读位置以减少回源:
- HTTP Header:X-Video-ID, X-Video-Tags(短)。
- Manifest内嵌:在HLS/DASH manifest添加EXT-X-CUSTOM标签或侧车JSON。
- Edge缓存策略:按tag或版本设置缓存键。
9. 检索实现:采用ES做全文+标签过滤,设置合理分词器与keyword字段。
- 查询示例:按tags过滤并按popularity排序;使用bool must+filter减少评分成本。
- 性能优化:建立常用组合的聚合索引、热数据放内存,使用doc_values加快聚合。
10. 监控清单:缓存命中率(edge_hit_rate)、回源QPS、404/5xx率、索引延迟。
- 指标采集:在边缘收集Prometheus指标:cdn_edge_hit_total, cdn_origin_fail_total。
- 告警示例:当edge_hit_rate<80%且origin_fail_rate>1%时发高优先级告警并自动创建工单。
11. 自动标注流程:离线模型(batch)和在线模型(stream)并行部署;模型输出带置信度。
- 质量控制:低置信度进入人工审核队列;定期抽样计算精召回。
- 回滚机制:支持标签回滚与批量修正API。
12. 治理要点:标签变更需审批、保留历史版本、定期清理过期元数据。
- 文档与接口:提供SDK与API文档、示例请求。
- 备份与灾备:元数据每日增量备份,ES快照每12小时。
13. 答:先做需求与场景梳理,定义最小可行字段集合(MVP),搭建一条从采集到索引的流水线并在小范围内试点,收集检索与监控指标再迭代扩展。
14. 答:将热元数据缓存在边缘或CDN header/manifest中,搜索端用ES做轻量化索引与常用组合缓存;对高请求路径使用缓存层与预计算聚合。
15. 答:定义关键SLA指标(命中率、回源失败、索引延迟),用Prometheus+Grafana建仪表盘并配置告警规则,结合自动化Runbook与告警抑制减少误报。
