一、问题解析
短视频通常长度不超过15分钟,主要在移动智能终端上拍摄,经过美化、剪辑或添加特效,可以在网络社交平台上实时分享。短视频时长短、信息量大,非常适合当前互联网用户的手机使用习惯,短视频的用户流量创造了巨大的商机。
我们计划开发一款短视频应用,预计总用户群达20亿人。该应用程序名称为QuickTok。
由于视频文件比其他媒体文件大,存储短视频文件需要更多的存储空间,播放短视频也需要更多的网络带宽。因此,QuickTok面临的主要技术挑战是如何应对大量用户同时访问时的网络带宽压力,以及如何存储大量短视频文件。现在我们来看看QuickTok的需求和技术架构。
10.1 需求分析
QuickTok的核心功能需求非常简单。用户上传视频、搜索视频、观看视频。主要进行非功能需求分析。
QuickTok估计其用户总数为20亿,其中约10亿日活跃用户平均每天观看10个短视频。
\\(\\\\小10亿\\\\10=100亿\\)
平均播放QPS为11万/秒。
\\(\\\\小百亿\\\\div(24\\\\times60\\\\times60)\\\\约110,000/秒\\)
假设每秒有110,000 个用户点击一个视频,则同时观看的视频数量为:
\\(\\\\较小的110,000/秒\\\\times5\\\\time60秒=3000万\\)
假设每个短视频的平均观看次数为200,您需要每秒上传平均数量的视频才能支持该观看次数。
\\(\\\\小110,000/秒\\\\div200=550/秒\\)
每个短视频的平均大小为100MB,每秒上传到服务器的文件大小为:
\\(\\\\小100MB\\\\times550=55GB\\)
(视频不会在1秒内上传到服务器,但是这样计算是没有问题的。)
每年添加的新视频所需的存储空间:
\\(\\\\小55GB\\\\times60\\\\times60\\\\times24\\\\times365=1700PB\\)
事实上,为了保证视频数据的高可用性,防止因硬盘损坏而导致数据丢失,QuickTok要求您对视频文件进行三份备份和存储。将保存视频文件,所需的总存储空间为:
\\(\\\\小1700PB\\\\time3=5200PB\\)
播放视频所需的总带宽:
\\(\\\\小110,000\\\\times100MB\\\\times8bit=88Tb\\)
因此,我们需要设计的短视频应用是一个每秒上传550个视频文件、播放11万次、增加165GB存储、总带宽88Tb的高并发视频应用系统。该系统必须具备高性能,能够快速响应用户的上传和播放操作,同时还要具备高可用性,能够为全球用户提供365天、24小时的稳定服务。
10.2 概要设计
QuickTok的核心部署模型是:
当用户上传视频时,上传请求会经过负载均衡服务器和网关服务器,然后到达视频上传微服务。视频上传微服务需要做两件事。首先是将上传文件的数据流写入视频文件暂存服务器。第二个是将用户名、上传时间、视频长度、视频标题和其他视频元数据写入分布式MySQL数据库。
当视频文件上传完成后,视频上传微服务会生成视频上传完成消息并写入消息队列服务器。视频内容处理器消费该上传完成消息,并根据该消息内容从视频文件暂存服务器中检索视频文件数据进行处理。
在此过程中,用户通过搜索引擎搜索视频。搜索引擎生成搜索结果视频列表后,根据视频ID从缩略图存储器中检索对应的缩略图。
然而,一个视频可能支持大量的缩略图,如果想要展示对当前用户最有吸引力的缩略图,搜索引擎必须调用QuickTok大数据平台的缩略图推荐引擎进行推荐。
推荐引擎检索当前用户偏好的特征标签和视频对应的多个缩略图特征,并使用XGboost算法训练的模型将用户特征标签与缩略图特征进行匹配,生成最有可能点击的缩略图。当前用户的缩略图ID。然后,搜索引擎根据ID在搜索结果页面中构建对应的缩略图并返回给用户。
用户浏览搜索结果列表并单击特定缩略图进行播放。应用程序将用户的浏览和点击数据发送到QuickTok大数据平台,并完成使用机器学习生成高质量缩略图的过程。
机器学习系统捕获了大量的用户浏览和点击数据,也捕获了每个缩略图的特征。一方面,机器可以学习哪些缩略图特征有可能被用户点击,从而生成高质量的缩略图特征标签库。另一方面,机器还可以学习每个用户喜欢的图像特征标签。为了将来的使用,将使用前述的推荐引擎。
在机器学习系统的支持下,视频内容处理器可以使用高质量的特征标签库来处理上传的视频内容,提取匹配高质量特征的帧并生成缩略图。
通过不断重复上述a和b两个过程,系统可以不断优化高质量的特征标签库,并根据用户的喜好不断创建缩略图。
那么,如果您一开始就没有特征数据库怎么办?视频内容处理器可以使用随机方法提取一些帧作为冷启动的缩略图。然后机器学习开始从这些随机选择的缩略图中学习,并进入循环优化过程。
10.3 详细设计
根据我多年从初学者到架构师的学习经验,我整理了一份50万字的面试分析文档、简历模板、学习路线图和必读的Java学习书籍。有需要的朋友请留言或点击。请在评论部分分享您的请求。
#针对[Java]如何设计一个支持3000万用户同时在线的短视频系统?关联内容源网络仅供参考。相关信息请参见官方公告。
原创文章,作者:CSDN,如若转载,请注明出处:https://www.sudun.com/ask/93915.html