作者回复: 一方面,我们的文章是按设计文档的规范写作的,设计文档一般只描述设计结果,不描述为什么这么设计,否则设计文档就变成一篇论文了,设计文档的目的是为了开发落地实现,不是为了讨论架构的优劣。 另一方面,架构方案很多时候本身也没有优劣之分,几种方案其实都可以,短视频用HDFS或者Ceph这样块存储哪个好?根据公开资料,快手用了HDFS,YouTube早期用了Amazon S3,都可以。 但是,用了不同的技术方案,因为不同技术方案特点不同,相关系统设计也有很大不同,我们这个案例用了HDFS,就要关注文件合并存储,存储格式,索引方式这些问题,文章想展示的也正是这些。 也许我们可以专门写一些文章讲架构方案的取舍,以及取舍后落地实现的差异。大家有什么想法,欢迎一起交流讨论。
作者回复: 不错
作者回复: 1 我们这个场景需要进行两种转码,一种是用户上传的不同的视频编码格式需要统一转码成平台格式;一种是转码成不同清晰度的视频文件,根据用户带宽和会员等级进行传输。 2 视频搜索也是按照关键词进行搜索,我们需要按照标题,视频简介等内容进行搜索,本质是文本搜索。 3 手机端是App,是自己开发的,不存在不支持 4 视频上传可以支持多种协议,根据用户网络状况选择 6 AI检查为主,人工检查为辅 7 文中这个例子,支持20亿用户,100亿成本应该是远远不够的
作者回复: 赞
作者回复: 文中的搜索引擎子系统就是用ES实现的。你的意思是不经过MySQL,数据直接写入ES?这个不合适吧,事务怎么保证,可用性怎么保证?
作者回复: 是的,不删除物理文件
作者回复: HDFS适合海量大文件,典型场景:机器学习等大数据场景。 Ceph适合海量中小文件,典型场景:云相册。
作者回复: 视频并不是压缩,而是视频文件协议本身就是自带压缩,OpenCV之类的工具可以从视频文件中提取任何一帧的图片,OpenCV也提供缩略图片的函数。 我们不需要把每一帧都存储成缩略图,缩略图的用途是做视频的封面,一张就够了。我们提取多张缩略图是为了推荐引擎挑选最能吸引用户的哪一张,有十几张或者几十张也够了。 另外,4K视频的每一帧图片大概是几M,不是4K,缩略图大概几十K
作者回复: CDN提供短视频95%以上的响应带宽,不能不考虑CDN
作者回复: 合并一个文件主要是为了减少HDFS block碎片,看下这两个数字:block缺省大小64MB,视频文件不超过100MB。 大文件控制在每秒上传的视频存在一个文件较合适,也就是55GB