爱奇艺 帅伟良 - 《爱奇艺十亿全网视频仓库建设》

爱奇艺十亿全网视频仓库建设
展开查看详情

1.《爱奇艺十亿全网视频仓库建设》 帅伟良

2. 目录 • 项目背景 • 视频仓库实战 • 长视频仓库建设 • 短视频仓库建设 • 未来的路

3.项目背景

4.长视频版权大战

5. 短视频消费量爆发 短视频UV、VV 350000000 50000000 45000000 300000000 40000000 250000000 35000000 30000000 200000000 25000000 150000000 20000000 100000000 15000000 10000000 50000000 5000000 0 0 VV UV

6. 视频仓库主要任务 • 全网版权剧仓库构建 • 覆盖主流版权剧网站 • 聚合相同版权内容 • 全网短视频仓库构建 • 覆盖主流短视频网站 • 数据量大

7.视频仓库实战

8.全网长视频采集

9. 全网长视频采集 完成方式 优点 缺点 上线时间 阶段1: 1. 开发简单 1. 更新频率依赖聚合 到2015年中,我们一 抓搜索聚合页 2. 去重简单 站点 直通过抓取聚合页完 2. 站点源依赖聚合站 成 点 3. 永远都是跟随者 阶段2: 1. 可灵活配置 1. 工作量大 2015年中,我们完成 抓各网站详情页 2. 站点源不受限制 2. 维护成本高 了第一版云爬虫的开 发,对版权剧的采集 进行迁移

10.全网长视频采集 我们的站点效果已经超过友商

11.全网长视频去重

12. 全网长视频去重 找特征 定公式 升效率 标题 相似度计算公式: 快速收敛候选集大小 描述 启发式 主演 机器学习 导演 主持人 频道 发行日期

13. 找特征 标题 英文名 别名 描述 频道 地区 语言 总集数 发行时 导演 演员 间 南方有 Only 浑身散 电视剧 内地 普通话 40 2018 林妍 陈伟霆 乔木 side by 发着科 白百合 side 学禁 秦海璐 with you 欲… 李现

14. 定公式 特征类型 特征 样例 季、期 第一季、第二季 决定性特征 语言 粤语、普通话、英语 版本 OVA、剧情版 接受一定偏差特征 发布时间 2018 ee(-0.1 * distanceYear) – 1 地区 内地、香港、台湾、美国 导演 王晶、周星驰 演员 刘德华 一般特征 总集数 40 描述 标签 搞笑、经典 Sim(a, b) = Dete(a, b) * Perti(a, b) * ∑Wj*P(a, b)

15.升效率 70,000 • 加载全部meta到内存,线性比对全部专辑,最坏比对140000 次,平均耗时 1 min 14,000 • Meta按照频道分桶(电影、电视剧、综艺、动漫、其它), 最坏需要比对桶中最大数,耗时平均降低到 20s 10 • 利用meta关键词建立倒排,按照相关性初排序,选举出相关 性最高的10个meta,从而达到近实时的效果

16.全网短视频采集

17.全网短视频采集

18. 挑战 • 下载 • 站点多 • 防爬虫问题 • 下载量大 • 分布式QPS控制 • 数据全覆盖 • 数据量大

19. 解决下载问题 开发平台 Debug平台 站点多 防爬虫问题 下载量大 运行平台 云爬虫 数据清洗平台 分布式QPS控制 报表平台 告警平台

20. 解决全覆盖问题 定义种子 高效收敛 • 主页 • 定义递归层级 数据清洗 • 列表页 • robots的sitemap • 自定义收敛目标 传统爬虫问题: 1. 整站抓取,收敛太慢 2. 自定义收敛,数据抓取不全 3. 信息流推荐场景无法整站抓取

21. 基于up主的抓取 Video DB 5 Video Extractor User Extractor Seed Extractor User Videos HTML User Crawler User Watchers DB 1 DB 2 3 4

22.解决数据量大问题 य़9೵യ Ꭸᥤ᷇೵യ Ꭸᥤ݄᷇᯿ Ꭸᥤ᷇ᔱ୚ MapReduce Realtime Hbase HDFS

23. 全量覆盖实时问题解决 Table A Row1V1 Row1V2 Row1V3 timeline Table B Row1 V1 Row1 V2 Row1 V3 Table A Row1V1 Row1V2 Row1V3 Row1V timeline TableARow1V4 !7DEOH$5RZ9 Table B Row1 V1 Row1 V2 Row1 V3 TableARow1V1 7DEOH$5RZ9 TableARow1V2 TableARow1V3 • Version选择Cell的timestamp • 比较使用CAS checkAndPut

24. 实时更新原理 Row Key Column family:C Column family:D youku|url1 column d, column s column update youku|url2 column d, column s column update qq|url1 column d, column s column update qq|url2 column d, column s column update d for normal data Column Family D is in s for statistic data memory, and the data is Site prefix for site scan very small to mark the state of the row for good performance

25. 实时更新原理 ֺইғ Ԇ᷌ฎහഝๅෛ $FWLRQฎ᭗Ꭳӥ჋ๅෛጱහഝ ਧԎԆ᷌޾Ԇ᷌$FWLRQ Row Key Column family:C Column family:D youku|url1 column d, column s column update Ԇ᷌ᵋහഝ3XW඙֢Ӟٟ᩸ ‫҅ف‬Ԇ᷌ਂනࣁ&)'Ӿ youku|url2 column d, column s column update qq|url1 column d, column s column update qq|url2 column d, column s column update ScanԆ᷌ ӞӻԆ᷌ • 相比于写入数据后发送一个消息到MQ Ӟӻ$FWLRQ 此方案充分利用Hbase put操作在某行的 完整性,解决单行事务的问题 ᥶‫ݎ‬Ԇ᷌$FWLRQ 问题:数据量大,Region变得非常多, $FWLRQᦡᗝԆ᷌҅ ၾ௳ḝۖཛྷࣳ Region server的不稳定,如何减少这种不 ᦡᗝԆ᷌ 稳定对系统的影响

26. 实时更新原理 Region Server 1 Region Server 2 Region 1 Region 2 Region 3 Region 4 Region 5 顺序Scan Region Scan 假设region的异常概率是p,前者的概率𝑛 ∗ 𝑝,后者𝑝 $

27. 实时更新-后续的路 • 高可用建设 • 平台化,业务只需要关心定义主题和主题绑定的Action,分布式执行 和性能调优交给平台

28. 视频仓库实战总结 通过中间件快速 实现业务,业务 ᇇ๦‫ۂ‬᯻ᵞ Ꭸᥤ᷇᯻ᵞ ࢶ෈᯻ᵞ ๢࢏਍ԟ 发展又不断推进 හഝრ᯻ᵞ 中间件功能升级 通过开源,快速 ᆻᡩ୏‫ݎ‬ଘ‫ݣ‬ 'HEXJଘ‫ݣ‬ ᬩᤈଘ‫ݣ‬ හഝႴ။ଘ‫ݣ‬ ಸᤒଘ‫ݣ‬ ‫ᦄޞ‬ଘ‫ݣ‬ ‫ݍ‬ᆻଘ‫ݣ‬ 构建新的中间件 Hbase Redis MQ GRPC Spring Grails 感谢和致敬开源 Elastic Java Groovy Mysql Druid Search

29.未来的路