- 快召唤伙伴们来围观吧
- 微博 QQ QQ空间 贴吧
- 文档嵌入链接
- 复制
- 微信扫一扫分享
- 已成功复制到剪贴板
爱奇艺 帅伟良 - 《爱奇艺十亿全网视频仓库建设》
展开查看详情
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 .未来的路