欢迎大家前往 云 + 社区 ,获取更多腾讯海量技术实践干货哦~
由 腾讯技术工程官方号 发布在云 + 社区
蓝光和 4k 视频正逐渐普及,4K 视频峰值码率超 10Mbit/s.架构平台部 TVideo 平台从资源,链路,缓存,接入进行调优,有效解决 4k 高码率视频的二次缓冲问题,播放体验全面领先竞品.
背景
随着音视频编解码,超分辨率,VR/AR 等技术的发展,iPhone8,4K 电视,VR 眼镜等终端设备的更新换代,高码率高分辨率片源(4K 视频,360° 全景视频等)的层出不穷,多媒体用户观看体验正在逐步升级,整个行业生态链正在快速向高品质内容切换.
就分辨率而言,上面提到的 4K 视频指分辨率达 4096*2160 的片源,对比其它分辨率还有 2K(2560*1440),1080P(1920*1080,目前腾讯视频蓝光的分辨率)等.腾讯视频在 2017 年下半年为进一步提升用户体验推出 "杜比特权",引进 4K 片源(见图 1).
分辨率的提升必然伴随着码率的提升.相比蓝光视频的 3Mbit/s 码率,杜比特权 4K 视频峰值超过 10Mbit/s,这对后台下载(Tvideo 平台)带来巨大挑战,为提供至少 10Mbit/s 下载速度,需要在网络延时,缓存 IO,回源速率等方面进行优化升级.
1.Tvideo 平台介绍
腾讯视频 Tvideo 平台运营着公司内部各项重要音视频业务,除腾讯视频外,还为空间视频,QQ 音乐等提供支撑.拥有 16T + 自建带宽,亿级别的视频库.
i
Tvideo 采取多层缓存,冷热分类架构.音视频文件上传到 Tvideo 后台源站,源站存储模块为每个文件加入特征信息,防止恶意用户盗链,分析文件热度,按不同优先级将文件推送到中间源;中间源缓存按业务进行软件隔离,保障每个业务有独立存储空间;城域点负载边缘加速,通过调度,链路加速等措施保障数据快速传输到用户终端.
2. 高码率视频后台优化揭秘
当前高码率视频面临着网络延时,缓存 IO 不均,接入 / 回源耗时带来的卡顿等一系列问题,如杜比视界 4K 节目,码率峰值高达 10Mbit/s,一部电影高达 10GB 存储,如何保障后台服务质量,提升用户观看体验?
针对上述问题,Tvideo 平台在链路,缓存,接入等做了多项优化,解决缓存负载,链路卡顿,播放高延时等问题.
2.1 链路加速
客户端播放媒体过程中,没有出现任何卡顿称之为无缓冲,反之称之为二次缓冲,无缓存占比越高,说明后台服务越好,链路加速重点解决用户播放音视频卡顿的问题.
引起卡顿的因素很多,如后台网卡降速,传输网络波动,跨省 & 运营商访问速度跟不上,小片请求造成 IO 碎片等.Tvideo 通过如下策略,解决链路带来的卡顿:
极速分发:多线程 10MB/s 速度下发,异步落盘
数据合并:HLS 多分片合并直出,伪流处理
回源加速:根据客户端场景,后端自动加速
慢速修正:支持跨网矫正,慢速链接协议栈加速
按码率回源:根据现网回源速度,自动选择最佳回源路径
对于文件在边缘节点不命中场景,分为热点不命中和普通文件不命中,链路加速策略分别使用极速分发和回源加速,实现边缘节点 "100% 命中".
极速分发指的是将文件从源站快速分发到边缘节点,解决源站,中间源等繁忙链路拥堵的情况,极速分发通过 P2P 组网,分级削峰,智能识别码率等方式,实现秒级内将一个切片视频推送到全网,在腾讯视频热剧抢先看,热点突发,会员保障等场景,发挥着重要的作用.由于分发网络节点间热点互通,将全网 TOP(k) 高码率热点文件分发到边缘节点,实现热点视频边缘命中,减少链路延时.
对于普通普通不命中场景,采取回源加速策略,每次回源记录回源速度,高码率视频使用回源速度大于码率 3 倍以上的回源 IP,无法满情况下,采取多回源 IP 并发分片回源.
杜比视界 4K 视频采取 fmp4 分片,由于 fmp4 切片文件过小,每次回源请求小分片造成链路速度达不到预期,Tvido 采取进行多分片合并回源下载策略,减少链路延时.
上图测试音频小文件多个分片合并的回源速度,可以看到,在 TCP 没有建立起来的情况下,将多个小分片合并回源速度效果明显.
当然后台链路加速还包括对客户端访问区分优先级,当客户端进行紧急下载,后端使用多连接加速;对于慢速请求,则选择协议栈加速等,通过上述优化,最大限度缩减耗时,保障链路下载速度.
2.2 缓存优化
缓存是 Tvideo 的核心模块,包括缓存按业务管理策略,热点文件 & 分片界定算法,冷文件淘汰,全局负载均衡等算法.
image.png
上图所示为 Tvideo 平台城域点机房集群架构,其中中心索引模块维护集群中所有文件的索引信息,下载 HTTP 模块负责业务请求的接入,数据存储模块负责冷热数据管理.
冷热数据存储模块和内存缓存统称为缓存,热点分级是缓存模块的分级是缓存模块的核心,对于普通视频热点统计策略相对简单:下载 HTTP 模块在接入阶段通过边缘计算,快速处理 70% 左右的热点请求;而相对冷的请求,通过中心索引模块计算,通过以上热点统计分级计算,实现热点快速统计.
而对于高码率视频,除了使用上述常规方法,另外对缓存进行了特定的分级,包括根据机房维度分级,根据访问模型分级,根据码率进行 IO 分级和热点扩散分级.
2.2.1 根据机房维度进行缓存分级策略
Tvideo 平台每个机房质量存在一定差异,这样可以把资源分为优质资源和普通资源,通过现网访问流水分析得到不同机房质量情况后,将整个平台的缓存资源池按码率进行划分,对于普通机房,缓存更多的低码率视频,优质机房用于缓存高码率视频.通过机房调度完成优质机房服务高码率请求,避免高码率视频请求命中低质量机房的情况.
优质资源在文件淘汰过程中,保障高码率文件每次淘汰数量小于标准淘汰值(如高码率每次淘汰 5%,普通视频每次淘汰 10%),保障机房更多的空间存储高码率视频;而对于普通机房,一般只覆盖低码率业务,只有在资源不够的时候才会用上,可以空出更多存储供普通视频等业务使用.通过上述物理介质的分级,保障业务质量.
2.2.2 根据客户端访问模型进行缓存分级
根据客户端访问模型,可以将客户端下载过程分为快速阶段,渐进式阶段,P2P 阶段.由于客户端每个阶段要求的下载速度不一样,后端缓存需要能够区分不同阶段,从而进行特殊处理.
用户观看一部影片,从客户端播放逻辑看,在刚开始播放时,客户端进入快速下载阶段.该阶段客户端播放器缓冲区没有数据,要求快速填满播放器缓冲区,以便减少网络抖动等因素带来的卡顿.当客户端缓冲区填满后,客户端进入渐进式 P2P 阶段,该阶段客户端停止向后台下载,采取 P2P 下载,如果 P2P 速度过慢,当缓存的内容过少时,再次向后台 Tvideo 下载,此过程叫渐进式下载.简单举个例子,客户端首次播放,快速下载 180 秒将缓冲区填满,播放器开始播放,同时进入 P2P 下载,由于 P2P 下载速度达不到高码率要求,当客户端缓冲区小于 90 秒后,客户端会向后台 Tvideo 平台继续下载,直到将缓冲区填满.
上述三个阶段对 Tvideo 后台速度要求不一样,后台根据边缘计算,探测到快速下载阶段的请求后,进行缓存内存加速,将部分数据预拉到内存.而渐进式下载过程中,后台根据文件 VID 进行预测,将文件预热到高速缓存介质上.在 P2P 补洞阶段,进行缓存负载均衡,保障机房内缓存负载相对平衡.
2.2.3 根据文件码率进行 IO 分级
当前 Tvideo 平台机房集群采取 SATA 和 SSD 存储混搭模型,解决回源较高问题,如 SATA 统一使用 4T 盘,保障边缘节点有足够的存储,能够挡住热点,根据访问热度,逐步向高速介质 SSD 上扩散.由于 SATA 单盘只能支持 120Mbit/s,暂不考虑其它请求,若一个机房同时有大于 12 个用户访问同一个 4K 文件 (10Mbit/s) 时,SATA 单盘将无法支撑所有用户的下载,需要快速将文件扩散到 SSD 上备份.
由于普通视频和高码率视频对机房集群内热点扩散的需求不同,特别是 4k 视频这类音视频分开存储,高码率视频对下载速度敏感业务,按码率和 IO 频率分级,向 SSD 和内存扩散,解决由于磁盘速度不够,带来的卡顿问题.
2.3 接入优化
接入优化主要解决跨省,跨运营商,资源不足等情况造成的卡顿,通过合理分配资源,解决由于资源不够,带来的卡顿.
客户端每次播放前,通过 Tvideo 调度平台接口获取具体下载地址,调度平台根据客户端的 IP,码率等信息,选择一个合适的机房,通过负载均衡算法,选择机房的一个可以下载地址返回给客户端,客户端获取到下载地址后,向机房进行访问.简单的可以理解为,一个上海电信的用户请求播放,首先会访问 Tvideo 调度平台,然后 Tvideo 返回上海电信 0001 机房的一个下载地址给客户端,客户端向上海 0001 机房请求数据.
针对高峰期资源紧张,高码率视频卡顿率高,访问质量得不到保证的情况,进行调度分级策略:将 VIP,高码率视频尽量本地覆盖,而低码率,音频,离线下载等业务,调度到二级资源或者区域资源,保障播放质量.如上表,当晚高峰,上海市区资源不够,将 VIP 高码率的调度到上海本地,而 VIP 低码率的调度到二级覆盖,而离线下载调度到区域覆盖如华东资源空闲的地方.
针对小运营商多出口问题,通过调度特征串,进行二次调度,解决跨网带来的卡顿.如上海移动用户通过 Tvideo 调度平台调度到了上海电信 0001 机房,客户端访问上海电信 0001 机房的下载服务器,下载服务器发现客户端 IP 不是电信的,返回 302,让用户跳转到移动 IP,进行访问.
总结
从资源,链路,缓存,接入进行调优,并通过码率分级,IO 分级,业务分级等多角度优化,有效解决蓝光,4k 高码率视频的二次缓冲问题.下图是自建和外包的无缓冲率的对比,通过上述优化,高码率无缓冲率提升 1.5%.
来源: https://www.cnblogs.com/qcloud1001/p/8303966.html