推广:数十款阿里云产品限时折扣中,赶紧点击这里,领劵开始云上实践吧!
本场视频回顾链接:海量短视频的极速分发
演讲嘉宾简介:
周哲,花名士豪,阿里云高级技术专家 。
以下内容根据演讲嘉宾视频分享以及PPT整理而成。
本次的分享主要分为三部分:
一、短视频应用场景:该部分主要介绍一些短视频相关的业务应用 。
二、阿里云短视频解决方案: 该部分主要介绍针对短视频的业务应用场景,阿里云所提供的一些整体的解决方案和技术产品。
三、阿里云对短视频媒体体验优化:该部分主要介绍阿里云针对短视频的业务场景之下所做的用户体验优化措施。
一、短视频应用场景
本次主题的第一部分是短视频的应用场景有哪些,短视频比图片和文字要包含更多的信息,在目前移动互联网非常普及的时代,短视频的应用场景非常广泛,首先在社区视频内容分享场景中,我们可以看到用户可以在本地录制视频,然后进行编辑,比如说做一些特效处理,然后再上传到服务器,最后通过社区分享的方式分享给好友。那么在电商场景中,商家可以通过快速拍摄、制作商品短片,然后把商品的介绍视频发送给消费者,这样可以有效的提升购买的转化率。短视频还有一些其他的应用场景,比如说聊天场景、新媒体的场景,
二、阿里云短视频解决方案
第二部分,我们针对上面介绍的短视频应用场景介绍一下阿里云短视频的解决方案。阿里云针对短视频的各种应用场景提供了一整套解决方案,首先我们可以看到在用户的主播段提供自动SDK、短视频上传的SDK,在视频播放端提供视频播放的SDK,然后在视频的播放端提供视频的点播服务、OSS存储服务和CDN加速服务。
接下来大概介绍一下阿里云短视频解决方案提供的使用流程:首先对于开发者来说可以在主播端使用短视频的SDK对短视频进行录制,然后对录制好的视频通过做一些特效处理,然后通过短视频的上传SDK上传到服务器端,然后在服务器端可以先通过点播服务来进行转码,以及做一些视频的处理,然后把处理好的视频通过OSS存储服务存储到OSS中进行持久化的保存,然后开发者可以在观众端集成视频播放的SDK,然后通过视频播放的SDK访问CDN进行加速,CDN如果会有这些资源的话,它会对视频资源进行缓存,然后把缓存的内容发给视频播放端,那CDN没有这部分资源的话,它会去OSS中去拉取并进行保存。开发者就可以基于这些基础的技术组件来快速的开发自己的短视频业务平台。
接下来介绍一下视频SDK包含的具体功能,视频SDK主要有以下三个部分功能组成:短视频SDK、上传SDK和播放器SDK。
1. 第一个功能是短视频SDK,短视频SDK主要是提供短视频的录制以及一些特效处理,如人脸贴图、高级美颜。这样在短视频录制之后先做一个本地美颜,然后再进行上传;然后短视频SDK同时还提供专业滤镜以及MV特效功能;再有就是裁剪压缩和背景音乐等相关的功能
2. 第二个功能是上传SDK,上传SDK通过快速通道可以把视频传输到服务器端,上传SDK支持断点续传、后台上传以及多文件管理等和多平台支持
3. 第三个功能是播放器SDK,播放器SDK支持多个平台,包括安卓、ios、flash和html5,播放器SDK支持倍数播放、加密播放、安全下载、视频截图、倾斜度切换、边播放边缓存和多平台支持。
下面介绍一下刚才讲到的点播和存储服务。
1. 点播服务提供视频管理相关的一些服务,比如说视频转码,视频转码支持窄带高清,窄带高清可以使得用户在相同的光感体验下视频播放的带宽降低百分之三十,第二个功能是云剪辑的功能,云剪辑指的是在线的对视频进行剪辑的功能,同时点播服务提供丰富的数据统计功能,开发者可以使用阿里云提供的API访问一些与视频统计相关的数据。
2. 同时阿里云对视频内容开放视频AI的技术服务,其中内容审核服务是可以利用阿里云提供内容审核服务来对视频内容进行审核,从而规避视频违规的风险;智能封面功能是通过分析视频数据来做结构化的处理,通过结合图像美颜功能和计算视频帧来选取视频的封面;标签预测功能是通过AI技术来识别视频中的文字、图像以及声音等信息, 对这些信息进行输出,然后自动生成视频的标签。
3. 为了应对海量的视频数据,阿里云提供了海量数据存储服务,来提供高可靠、强安全并且低成本的视频存储服务。
为了应对短视频大规模的自动场景的需求,阿里云CDN建设了大量的基础设施,首先,阿里云CDN在全球有超过1200个CDN节点,这些节点分布在全球各个国家和地区的大中小城市,这些节点贴近用户部署,能够使得用户更加快速的访问视频内容,用户体验更好;同时为了面对业务的突发流量,阿里云提供80TB的带宽储备,为持续增长的业务保驾护航;并且有单机缓存容量超过PB级别的缓存节点,通过提供更大的缓存来提升缓存利用率,从而有效提升用户的访问速度。
三、阿里云短视频优化
介绍完阿里云针对短视频提供的解决方案之后,接下来介绍一下阿里云针对短视频做的一些优化的技术。
短视频关键的指标有首屏时间,播放卡顿和播放错误。
1)首屏时间是用户点击播放的时候,当用户看到视频开始播放的时间与用户点击播放的时间间隔。首屏时间越长,越容易导致用户提前结束播放。
2) 播放卡顿指的是视频播放是否流畅,播放过程中出现卡顿会很大地影响用户体验。
3) 播放错误指的是用户在视频播放过程中没有成功播放,或者出现一些异常导致视频播放提前中断。
为了解决这些问题,我们对整个用户体验优化架构进行了剖析。首先看一下阿里云CDN和相关的一些服务对于用户在对短视频播放场景的整个过程。终端用户首先通过阿里云提供的视频SDK来请求调度服务器,调度服务器返回对应的CDN节点IP,然后播放器根据返回的CDN节点IP来请求资源,CDN资源节点即我们所谓的一级节点,它如果有缓存的话就会从本地缓存把视频发送给播放器,如果没有缓存会访问二级节点,如果二级节点同时也没有缓存,则会去OSS或用户原站拉取原本的数据。
二级节点的处理和一级节点处理逻辑是相似的,阿里云使用两级节点的架构,二级节点的作用主要是首先可以对资源进行汇聚,因为有很多的边缘节点,如果每个边缘节点都去原站进行资源获取,那么会造成原站的带宽压力特别大,而二级节点通过对资源进行汇聚,然后再去原站请求资源,这样会大大减少原站的带宽压力;其次二级节点更贴近一级节点,使得一级节点有更快的下载速度。
同时我们对整个播放过程进行针对用户体验相关的数据打点,针对这些数据打点来进行分析,分析之后得到相关的优化点。
第一点优化是针对播放器,播放器有没有针对视频体验做一些相关的优化很影响视频访问的质量。阿里云对播放器SDK做了很多相关的优化,比如说针对首屏时间通过减少首屏缓存时间来降低首屏时间;针对卡顿率通过提供动态缓存大小的方式,能够在出现网络抖动的时候可以动态的增加缓存大小,对数据进行预加载,通过这种方式来应对网络抖动导致的播放卡顿;针对播放错误,播放器SDK内部实现了网络从适功能来提高播放成功率。
第二点优化是针对调度,用户在访问节点的时候,访问调度服务器,调度服务器返回的IP地址是不是用户访问最优的网络链路,它很大程度上影响用户的视频下载速度。针对这个问题,阿里云做了很多优化,开发了智能调度系统,调度系统会选择用户到边缘节点的最优链路来返回给客户端。
第三点优化是阿里云目前提供更多的节点覆盖,使得这些节点更贴近用户,来提高用户的下载速度。
第四点优化是用户向CDN服务器传输数据时,当出现网络抖动的时候,会造成下载速速降低的情况,为了解决这个问题,阿里云CDN针对TCP协议栈做了很多优化,通过更高效的协议栈算法来提升下载速度。
第五点优化是阿里云提供更高效的窄带高清功能来降低播放视频的带宽。
第六点优化是针对缓存服务器的性能。用户在访问边缘节点的时候,如果资源不存在会回原,如果用户的请求资源在边缘节点命中的时候,用户的下载速度和缓存服务器处理性能将会有很大的关联性,阿里云针对缓存服务器的性能做了很多优化,如通过增大边缘节点的存储空间以及I/O性能的优化,来提升用户的视频访问速度。
第七点优化是阿里云采用全链路监控的方式来保证整个播放链路中的用户体验,能够提早的发现体验相关的问题,以便提前做一些性能优化。
下面详细介绍一下阿里云针对智能调度所做的一些优化,针对智能调度系统,做了以下五个方面的优化:
1. 提供精准的IP库数据,对IP库数据进行持续更新,同时会基于一些第三方IP库数据、淘宝用户在访问CDN时所在的一些经纬度信息,以及对IP库所做的主动的数据探测所得到的数据等这些维度的数据进行计算,生成IP库的具体位置。IP库数据的准确度为调度系统的精准调度提供数据支撑。
2. 提供高性能的httpdns服务。httpdns指的是通过http请求的方式来查询域名对应的服务器IP地址。它解决的问题是当使用local dns来进行查询调度服务器的时候,第一个问题是会出现用户IP地址和dns服务器所在的区域不一致,那么会导致调度服务器看到的用户IP的地址和真实的用户访问的IP地址不一致的问题,继而导致调度出现偏差;第二个问题是在用户查询dns的时候,会出现dns被篡改的情况,在dns被篡改之后就会导致此时服务器的IP地址不一定是CDN的IP地址。为了解决这两个问题,可以使用阿里云提供的httpdns服务。
3. 提供基于用户体验的自动化调度,基于用户的客户端IP以及用户到每个节点的网络数据情况来进行计算,计算还包含当前的各个节点的状态,通过一些机器学习的方式来进行预测用户到哪个节点的网络链路是最优的。通过这种方式来提供给调度系统对用户的IP地址来返回最优的网络链路结果,来提升网络链路的质量。
4. 通过大数据分析来选择最优的节点。会对当前节点覆盖情况以及用户访问流量的趋势做一个数据预测,来去选择在哪里建点,并计算这些节点覆盖的哪些网络链路是最优的,为调度系统提供调度数据支撑。
5. 使用内容调度提升命中率。通过使用302的调度方式进行内容粒度的调度,从而提高命中率。
阿里云CDN针对缓存系统做了很多优化。阿里云缓存系统通过资源的缓存系统开发基于裸盘的文件系统,使用内存、SSD加SATA的三级缓存架构,会把最热的资源存储到内存中,把次热的资源存储到SSD中,然后把冷的资源存储到SATA盘中;通过热点迁移的方式将SATA盘中热的资源迁移到SSD和内存中,然后通过淘汰算法对内存和SSD中的冷的资源淘汰到SATA盘中,内存和SSD中热的资源仍然保存在内存和SSD中,通过这种方式来提升内存和SSD中的命中率,降低SATA盘中I/O读写的情况,通过SATA存储冷的资源来提高边缘节点的命中率。同时文件系统对IO做了很多优化,比如说合并IO对齐写入的功能来避免磁盘碎片的产生,磁盘碎片会导致IO性能严重下降;然后对大文件进行切片存储,把每个大文件切成很多分片,每个分片存储到不同的磁盘中,这样可以避免单个文件过热,导致磁盘IO性能下降的问题。通过以上这些优化,可以实现缓存的平均命中率达到95%以上,首字节时间低于10ms。
接下来介绍一下基于用户体验的TCP协议栈优化。针对TCP协议做了以下优化:
1. 基于时间序的丢包发现机制,主要是在TCP协议栈中分析TCP发包的时间序列,识别出哪些包在发送过程中丢失。通过这种方式能够发现丢包,然后进行快速重传.
2. 主动丢包发现机制,主要是在发送包的时候增加主动探测的机制,通过主动探测的方式来对丢包更提早的发现,避免通过超时发现丢包,减少丢包的发现时间,通过这种方式提早进行丢包重传。
3. 自适应初始窗口,会根据不同业务场景使用不同的初始化窗口大小。
4. 更激进的拥塞避免算法,针对网络不好的情况,会在协议栈中识别网络不好的状态,针对网络不好的状态使用更激进的发包策略,通过这种方式来解决由于网络不好导致的下载速度慢的问题。
5. 更小的连接超时时间,通过设置更小的连接超时时间使得发现丢包的实际更短。
基于以上的这些优化,在某个短视频的业务场景下,对于一个1.2M数据文件的下载,和其他的视频厂商进行对比,可以发现使用阿里云的下载时间可以加快2%到6%。
本文由云栖志愿小组李杉杉整理。