阿里云如何实现海量短视频的极速分发?答案在这里!

摘要:视频行业目前比,但是如何快速的实现海量短视频的极速分于短视频业务提供方来是一个比棘手的问题。阿里云技术专家将带领大家从视频的上、采集、存储和CDN分发等方面为我们介绍阿里云的整体方案,并且重点讲解短视频加速的注意事项和用户体验优化要点。本文将首先介视频相关的业务应用 ;其次针对视频业务应景,介阿里云所提供的整体解决方案和技术产品;最后针对视频业务场景,介绍阿里云所做的用户体验优化措施。


推广:数十款阿里云产品限时折扣中,赶紧点击这里,领劵开始云上实践吧!


本场视频回顾链接:海量短视频的极速分发

 

演讲嘉宾简介:

周哲,花名士豪,阿里云高级技术专家 。

 

以下内容根据演讲嘉宾视频分享以及PPT整理而成。

 

本次的分享主要分为三部分:


一、短视频应景:部分主要介一些短视频相关的业务应用 。

二、阿里云短视频解决方案: 部分主要介绍针对视频业务应景,阿里云所提供的一些整体的解决方案和技术产品。

三、阿里云视频媒体体验优化:部分主要介阿里云针对视频业务场景之下所做的用户体验优化措施。

 

 

一、短视频应

 

本次主题的第一部分是短视频的应用场景有哪些,短视频比图片和文字要包含更多的信息,在目前移动互联网非常普及的时代,短视频的应用场景非常广泛,首先在社区视频内容分享场景中,我们可以看到用户可以在本地录制视频,然后进行编辑,比如说做一些特效处理,然后再上传到服务器,最后通过社区分享的方式分享给好友。那么在电商场景中,商家可以通过快速拍摄、制作商品短片,然后把商品的介绍视频发送给消费者,这样可以有效的提升购买的转化率。短视频还有一些其他的应用场景,比如说聊天场景、新媒体的场景,

 

二、阿里云短视频解决方案

 

第二部分,我们针对上面介绍的短视频应用场景介绍一下阿里云短视频的解决方案。阿里云针对短视频的各种应用场景提供了一整套解决方案,首先我们可以看到在用户的主播段提供自动SDK、短视频上传的SDK,在视频播放端提供视频播放的SDK,然后在视频的播放端提供视频的点播服务、OSS存储服务和CDN加速服务。

 

接下来大概介绍一下阿里云短视频解决方案提供的使用流程:首先对于开发者来说可以在主播端使用短视频的SDK对短视频进行录制,然后对录制好的视频通过做一些特效处理,然后通过短视频的上传SDK上传到服务器端,然后在服务器端可以先通过点播服务来进行转码,以及做一些视频的处理,然后把处理好的视频通过OSS存储服务存储到OSS中进行持久化的保存,然后开发者可以在观众端集成视频播放的SDK,然后通过视频播放的SDK访问CDN进行加速,CDN如果会有这些资源的话,它会对视频资源进行缓存,然后把缓存的内容发给视频播放端,那CDN没有这部分资源的话,它会去OSS中去拉取并进行保存。开发者就可以基于这些基础的技术组件来快速的开发自己的短视频业务平台。

 

9c49b0f1d35c8367a6afe5dff75df798d0d5cd87

 

接下来介绍一下视频SDK包含的具体功能,视频SDK主要有以下三个部分功能组成:短视频SDK、上传SDK和播放器SDK。

1.  第一个功能是短视频SDK,短视频SDK主要是提供短视频的录制以及一些特效处理,如人脸贴图、高级美颜。这样在短视频录制之后先做一个本地美颜,然后再进行上传;然后短视频SDK同时还提供专业滤镜以及MV特效功能;再有就是裁剪压缩和背景音乐等相关的功能

2. 第二个功能是上传SDK,上传SDK通过快速通道可以把视频传输到服务器端,上传SDK支持断点续传、后台上传以及多文件管理等和多平台支持

3. 第三个功能是播放器SDK,播放器SDK支持多个平台,包括安卓、ios、flash和html5,播放器SDK支持倍数播放、加密播放、安全下载、视频截图、倾斜度切换、边播放边缓存和多平台支持。

 

ebf4aa9ade00f888fb2fe4c5fc0f11f01f07ed3e

 

下面介绍一下刚才讲到的点播和存储服务。

1. 点播服务提供视频管理相关的一些服务,比如说视频转码,视频转码支持窄带高清,窄带高清可以使得用户在相同的光感体验下视频播放的带宽降低百分之三十,第二个功能是云剪辑的功能,云剪辑指的是在线的对视频进行剪辑的功能,同时点播服务提供丰富的数据统计功能,开发者可以使用阿里云提供的API访问一些与视频统计相关的数据。

2. 同时阿里云对视频内容开放视频AI的技术服务,其中内容审核服务是可以利用阿里云提供内容审核服务来对视频内容进行审核,从而规避视频违规的风险;智能封面功能是通过分析视频数据来做结构化的处理,通过结合图像美颜功能和计算视频帧来选取视频的封面;标签预测功能是通过AI技术来识别视频中的文字、图像以及声音等信息, 对这些信息进行输出,然后自动生成视频的标签。

3. 为了应对海量的视频数据,阿里云提供了海量数据存储服务,来提供高可靠、强安全并且低成本的视频存储服务。

 

 

647cc9963885415a0caede61b03ad5835af0a32b

 

为了应对短视频大规模的自动场景的需求,阿里云CDN建设了大量的基础设施,首先,阿里云CDN在全球有超过1200个CDN节点,这些节点分布在全球各个国家和地区的大中小城市,这些节点贴近用户部署,能够使得用户更加快速的访问视频内容,用户体验更好;同时为了面对业务的突发流量,阿里云提供80TB的带宽储备,为持续增长的业务保驾护航;并且有单机缓存容量超过PB级别的缓存节点,通过提供更大的缓存来提升缓存利用率,从而有效提升用户的访问速度。

 

7b07116bdbf06c6cfc39af7bb7d960dbd65912a6

 

 

三、阿里云短视频优

 

介绍完阿里云针对短视频提供的解决方案之后,接下来介绍一下阿里云针对短视频做的一些优化的技术。

短视频关键的指标有首屏时间,播放卡顿和播放错误。

1)首屏时间是用户点击播放的时候,当用户看到视频开始播放的时间与用户点击播放的时间间隔。首屏时间越长,越容易导致用户提前结束播放。

2) 播放卡顿指的是视频播放是否流畅,播放过程中出现卡顿会很大地影响用户体验。

3) 播放错误指的是用户在视频播放过程中没有成功播放,或者出现一些异常导致视频播放提前中断。

 

c9baa775ecaafe9f41b6502cad350364183a63c5

 

为了解决这些问题,我们对整个用户体验优化架构进行了剖析。首先看一下阿里云CDN和相关的一些服务对于用户在对短视频播放场景的整个过程。终端用户首先通过阿里云提供的视频SDK来请求调度服务器,调度服务器返回对应的CDN节点IP,然后播放器根据返回的CDN节点IP来请求资源,CDN资源节点即我们所谓的一级节点,它如果有缓存的话就会从本地缓存把视频发送给播放器,如果没有缓存会访问二级节点,如果二级节点同时也没有缓存,则会去OSS或用户原站拉取原本的数据。

二级节点的处理和一级节点处理逻辑是相似的,阿里云使用两级节点的架构,二级节点的作用主要是首先可以对资源进行汇聚,因为有很多的边缘节点,如果每个边缘节点都去原站进行资源获取,那么会造成原站的带宽压力特别大,而二级节点通过对资源进行汇聚,然后再去原站请求资源,这样会大大减少原站的带宽压力;其次二级节点更贴近一级节点,使得一级节点有更快的下载速度。

同时我们对整个播放过程进行针对用户体验相关的数据打点,针对这些数据打点来进行分析,分析之后得到相关的优化点。

第一点优化是针对播放器,播放器有没有针对视频体验做一些相关的优化很影响视频访问的质量。阿里云对播放器SDK做了很多相关的优化,比如说针对首屏时间通过减少首屏缓存时间来降低首屏时间;针对卡顿率通过提供动态缓存大小的方式,能够在出现网络抖动的时候可以动态的增加缓存大小,对数据进行预加载,通过这种方式来应对网络抖动导致的播放卡顿;针对播放错误,播放器SDK内部实现了网络从适功能来提高播放成功率。

第二点优化是针对调度,用户在访问节点的时候,访问调度服务器,调度服务器返回的IP地址是不是用户访问最优的网络链路,它很大程度上影响用户的视频下载速度。针对这个问题,阿里云做了很多优化,开发了智能调度系统,调度系统会选择用户到边缘节点的最优链路来返回给客户端。

第三点优化是阿里云目前提供更多的节点覆盖,使得这些节点更贴近用户,来提高用户的下载速度。

第四点优化是用户向CDN服务器传输数据时,当出现网络抖动的时候,会造成下载速速降低的情况,为了解决这个问题,阿里云CDN针对TCP协议栈做了很多优化,通过更高效的协议栈算法来提升下载速度。

第五点优化是阿里云提供更高效的窄带高清功能来降低播放视频的带宽。

第六点优化是针对缓存服务器的性能。用户在访问边缘节点的时候,如果资源不存在会回原,如果用户的请求资源在边缘节点命中的时候,用户的下载速度和缓存服务器处理性能将会有很大的关联性,阿里云针对缓存服务器的性能做了很多优化,如通过增大边缘节点的存储空间以及I/O性能的优化,来提升用户的视频访问速度。

第七点优化是阿里云采用全链路监控的方式来保证整个播放链路中的用户体验,能够提早的发现体验相关的问题,以便提前做一些性能优化。


dd1db86838fcbfa5d76fb3afd61bfea4c755915b

 

下面详细介绍一下阿里云针对智能调度所做的一些优化,针对智能调度系统,做了以下五个方面的优化:

1. 提供精准的IP库数据,对IP库数据进行持续更新,同时会基于一些第三方IP库数据、淘宝用户在访问CDN时所在的一些经纬度信息,以及对IP库所做的主动的数据探测所得到的数据等这些维度的数据进行计算,生成IP库的具体位置。IP库数据的准确度为调度系统的精准调度提供数据支撑。

2. 提供高性能的httpdns服务httpdns指的是通过http请求的方式来查询域名对应的服务器IP地址。它解决的问题是当使用local dns来进行查询调度服务器的时候,第一个问题是会出现用户IP地址和dns服务器所在的区域不一致,那么会导致调度服务器看到的用户IP的地址和真实的用户访问的IP地址不一致的问题,继而导致调度出现偏差;第二个问题是在用户查询dns的时候,会出现dns被篡改的情况,在dns被篡改之后就会导致此时服务器的IP地址不一定是CDNIP地址。为了解决这两个问题,可以使用阿里云提供的httpdns服务。

3. 提供基于用户体验的自动化调度,基于用户的客户端IP以及用户到每个节点的网络数据情况来进行计算,计算还包含当前的各个节点的状态,通过一些机器学习的方式来进行预测用户到哪个节点的网络链路是最优的。通过这种方式来提供给调度系统对用户的IP地址来返回最优的网络链路结果,来提升网络链路的质量。

4. 通过大数据分析来选择最优的节点。会对当前节点覆盖情况以及用户访问流量的趋势做一个数据预测,来去选择在哪里建点,并计算这些节点覆盖的哪些网络链路是最优的,为调度系统提供调度数据支撑。

5. 使用内容调度提升命中率。通过使用302的调度方式进行内容粒度的调度,从而提高命中率。

 

4cf70214616c4dab3135d25e53286351f0a8f42e

 

阿里云CDN针对缓存系统做了很多优化。阿里云缓存系统通过资源的缓存系统开发基于裸盘的文件系统,使用内存、SSD加SATA的三级缓存架构,会把最热的资源存储到内存中,把次热的资源存储到SSD中,然后把冷的资源存储到SATA盘中;通过热点迁移的方式将SATA盘中热的资源迁移到SSD和内存中,然后通过淘汰算法对内存和SSD中的冷的资源淘汰到SATA盘中,内存和SSD中热的资源仍然保存在内存和SSD中,通过这种方式来提升内存和SSD中的命中率,降低SATA盘中I/O读写的情况,通过SATA存储冷的资源来提高边缘节点的命中率。同时文件系统对IO做了很多优化,比如说合并IO对齐写入的功能来避免磁盘碎片的产生,磁盘碎片会导致IO性能严重下降;然后对大文件进行切片存储,把每个大文件切成很多分片,每个分片存储到不同的磁盘中,这样可以避免单个文件过热,导致磁盘IO性能下降的问题。通过以上这些优化,可以实现缓存的平均命中率达到95%以上,首字节时间低于10ms。

 

a047f8cd5cf24186565b58b2da68b74ab1ac0fb7

 

接下来介绍一下基于用户体验的TCP协议栈优化。针对TCP协议做了以下优化:

1. 基于时间序的丢包发现机制,主要是在TCP协议栈中分析TCP发包的时间序列,识别出哪些包在发送过程中丢失。通过这种方式能够发现丢包,然后进行快速重传.

2. 主动丢包发现机制,主要是在发送包的时候增加主动探测的机制,通过主动探测的方式来对丢包更提早的发现,避免通过超时发现丢包,减少丢包的发现时间,通过这种方式提早进行丢包重传。

3. 自适应初始窗口,会根据不同业务场景使用不同的初始化窗口大小。

4. 更激进的拥塞避免算法,针对网络不好的情况,会在协议栈中识别网络不好的状态,针对网络不好的状态使用更激进的发包策略,通过这种方式来解决由于网络不好导致的下载速度慢的问题。

5. 更小的连接超时时间,通过设置更小的连接超时时间使得发现丢包的实际更短。


568574c81cb54ffd1c0dfc96b89b60832ea0bbfd

 

基于以上的这些优化,在某个短视频的业务场景下,对于一个1.2M数据文件的下载,和其他的视频厂商进行对比,可以发现使用阿里云的下载时间可以加快2%到6%。

 

本文由云栖志愿小组李杉杉整理。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/283205.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

GitHub项目管理维护实用教程

GitHub项目维护教程 1)注册GitHub账户并登陆; 2)在Windows cmd(或Ubuntu中的terminal)中cd到自己的工作目录,将仓库clone下来: 命令: 1 git clone https://github.com/... #项目地址…

图文详解cacti的安装和使用

简介: 1.cacti介绍2.安装服务端3.安装客户端4.添加监控的设备cacti的介绍Cacti是一套基于PHP,MySQL,SNMP及RRDTool开发的网络流量监测图形分析工具Cacti是通过 snmpget来获取数据,使用 RRDtool绘画图形,而且你完全可以不需要了解RRDtool复杂…

记一次 .NET 某金融企业 WPF 程序卡死分析

一:背景 1. 讲故事前段时间遇到了一个难度比较高的 dump,经过几个小时的探索,终于给找出来了,在这里做一下整理,希望对大家有所帮助,对自己也是一个总结,好了,老规矩,上 …

如何将图片放到mysql_怎么将图片添加到mysql中

将图片添加到mysql中的方法:首先将数据库存储图片的字段类型设置为blob二进制大对象类型;然后将图片流转化为二进制;最后将图片插入数据库即可。正常的图片储存要么放进本地磁盘,要么就存进数据库。存入本地很简单,现在…

Java线程与Linux内核线程的映射关系

http://blog.sina.com.cn/s/blog_605f5b4f010198b5.html Linux从内核2.6開始使用NPTL (Native POSIX Thread Library)支持,但这时线程本质上还轻量级进程。Java里的线程是由JVM来管理的。它怎样相应到操作系统的线程是由JVM的实现来确定的。L…

YoursLC 有源 低代码 项目介绍

YoursLC 是我们独立研发的一款低代码产品,YoursLC-yours你们的、LC是低代码low-code的缩写,中文名称:有源低代码, 是一套双输出的低代码产品:既能完整输出功能又能100%输出源码。满足用户高效率、低成本和个性化的需求…

stm32电机控制定时器1_STM32通过PWM控制电机速度

做STM32智能小车的实验中会用到定时器PWM输出,来改变直流电机的转速。分享本文了解如何通过PWM实现对电机速度的控制。PWM控制电机速度的基本原理PWM(Pulse Width Modulation),也就是脉冲宽度调制。PWM中有一个比较重要的概念,占空比&#xf…

走向无后端的系统开发实践:CRUD自动化与强约定的REST接口

2019独角兽企业重金招聘Python工程师标准>>> ttp://mp.weixin.qq.com/s?__bizMzAwMDU1MTE1OQ&idx1&mid2653548079&sn2377b625db58b2ea93c3ef2d87e4c395 转载于:https://my.oschina.net/yunjie/blog/806130

mysql char varchar 性能_Mysql小细节:varchar与char在性能上的特点

varchar与char的一个主要区别是存储方式的不同varchar 是变长存储占用的存储空间 存储内容实际大小 长度记录位char 是定长存储占用的存储空间 字段声明的宽度存储方式对性能是有影响的例如分别使用 varchar(10) 与 varchar(255) 定义一个字段,实际存储的字符串为…

Dubbo源码解析之Zookeeper连接

2019独角兽企业重金招聘Python工程师标准>>> 注:Dubbo的版本是2.5.7。 图1 RegistryProtocol的export时序图 注册中心有Zookeeper、Redis、Dubbo,分别对应ZookeeperRegistry、RedisRegistry、MulticastRegistry。 连接Dubbo的客户端有俩种&am…

SHELL 脚本小技巧

脚本很简单,直接上功能介绍及脚本,可以做模板使用: 记录日志,记录脚本开始执行时间、结束时间usage 函数,脚本需接参数执行,避免误执行,告诉用户,这个脚本的使用方法加锁,创建锁文件…

WinForm(十)项目框架结构

看到下面的项目结构,是否曾经相识?不要笑,这也是一种项目结构,极简主义。项目结构没有对错,合适就好,但也要有几个要求,至少要做到结构明确,清晰,当然上图的结构清晰&…

mysql索引有哪些了解_Mysql索引(简单了解)

Mysql的存储引擎,可以针对不同的表使用不同的存储引擎MyISAM:插入,查血速度快,但是不支持事物,所以适用于数据仓库,Web等InnoDB:支持事物,所以适合于事物型数据库Memory:…

使用Spring发送带附件的电子邮件(站内和站外传送)

1.使用Spring发送带附件的电子邮件 <?xml version"1.0" encoding"UTF-8"?> <beansxmlns"http://www.springframework.org/schema/beans"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xmlns:p"http://www.spr…

vmware 克隆后Linux没有eth网卡只有lo

想试着在虚拟机上搭下主从&#xff0c;&#xff0c;&#xff0c;结果&#xff0c;克隆出来的虚拟机没有网卡。。。只有lo 于是跟着别人的来添加一个网卡 第一步&#xff1a;打开克隆的虚拟机 第二步&#xff1a; 第三步 第四步&#xff1a; 最后&#xff1a; 之后执行reboot重启…

聊一聊 C++ 中的 namespace

一&#xff1a;背景 相信大家在分析 dump 时&#xff0c;经常会看到 WKS 和 SRV 这样的字眼&#xff0c;如下代码所示&#xff1a;00007ffa778a07b8 coreclr!WKS::gc_heap::segment_standby_list 0x0000000000000000 00007ffa778a3870 coreclr!WKS::qpf 0x989680 00007ffa778…

会议会展活动从业技能之会销流程的16个环节

会议营销是透过相对大型活动来实现销售。会议营销是细节营销&#xff0c;一般操作流程有会前、会中、会后三个阶段共计16个环节&#xff0c;每个环节都做到位了&#xff0c;衔接好了&#xff0c;会议营销的最终效果就会得到保证。一般而言&#xff0c;会议营销分为会前营销、会…

haproxy详细介绍

Haproxy是既可以工作在7层也能工作在4层的反代工具.Haproxy的功能:路由HTTP请求到后端服务器,基于cookie作会话绑定.能够将多个请求反代至后端主机完成负载均衡的效果.主服务器失败时能自动切换到备服务器上.接受特殊的端口连接完成服务监控拒绝新连接时不会关闭已经连接的请求…

《ASP.NET Core 6框架揭秘》实例演示[17]:利用IHttpClientFactory工厂来创建HttpClient

在一个采用依赖注入框架的应用中&#xff0c;我们一般不太推荐利用手工创建的HttpClient对象来进行HTTP调用&#xff0c;使用的HttpClient对象最好利用注入的IHttpClientFactory工厂来创建。前者引起的问题&#xff0c;以及后者带来的好处&#xff0c;将通过如下这几个演示程序…

Hadoop部署方式-高可用集群部署(High Availability)

Hadoop部署方式-高可用集群部署(High Availability) 作者&#xff1a;尹正杰 版权声明&#xff1a;原创作品&#xff0c;谢绝转载&#xff01;否则将追究法律责任。 本篇博客的高可用集群是建立在完全分布式基础之上的&#xff0c;详情请参考&#xff1a;https://www.cnblogs.c…