资讯专栏INFORMATION COLUMN

TOP100summit【分享实录-网易】构建云直播分发网络

Muninn / 2634人阅读

摘要:通过客户端分析网络统计等手段,定位卡顿问题的根源在于直播分发网络不佳。本文将介绍网易云直播分发网络架构的构建及优化过程。单阶段单构建阶段我们为云直播服务选用了一个传统的第三方分发网络。

本篇文章内容来自2016年TOP100summit网易视频云、网易杭州研究院服务端技术专家邵峰的案例分享。
编辑:Cynthia

邵峰:网易视频云、网易杭州研究院服务端技术专家
浙江大学计算机专业博士毕业。
自毕业以后从事数据库、分布式存储等领域研究,有十年左右的服务端开发经验。
目前在网易视频云负责产品化研发工作,在服务端开发、存储/数据库开发等方面有丰富的实战经验。

导读:在网易视频云直播产品开发中,研发团队遇到了直播卡顿难题。如何提供稳定、流畅、无卡顿的直播服务,是当时迫切需要解决的问题。通过客户端分析、网络统计等手段,定位卡顿问题的根源在于直播分发网络不佳。能否提供一套可靠的直播分发网络,决定了直播是否有卡顿,也最终决定了用户的直播体验。
为了流畅的直播体验,保证基本无卡顿,技术团队采用了一种融合式分发网络架构。通过该融合分发网络,直播云服务基本解决了卡顿问题,保证了流畅的直播体验。本文将介绍网易云直播分发网络架构的构建及优化过程。

一、问题的提出

直播业务迅猛发展,但其背后的直播技术门槛较高,为了降低技术门槛,让产品开发者迅速开发出直播产品,就出现了直播云服务的概念。直播云服务,为直播提供了端到端的解决方案,包括:直播端采集-编码-播放、网络端转码-分发、播放端解码-播放等。其中每个环节都涵盖大量技术,同时也影响着直播质量的高与低。
网易视频云就是为开发者用户提供这种直播云服务。我们在直播云服务的建设过程中,发现直播网络体验是所有直播产品的痛点,稳定、流畅、无卡顿是所有直播产品的共同诉求。那如何把我们的直播云服务做到体验好、无卡顿呢?起初,我们采用了一系列音视频技术,对主播和播放两端进行了优化,体验未得到实质性改善。分析后,我们把焦点集中于网络端,因此上述问题被转化为:如何优化分发网络,从而保证直播无卡顿、体验好?
在网络分发端,起初我们采用了一个传统第三方CDN网络,但第三方CDN在带宽配置和节点部署上存在诸多限制,而且直播线路调整采用人工手段,因此无法满足我们的优化需求。接着我们自建了一套分发网络,但由于节点数不足,分发性能要求也不甚理想。后续,我们又接入了多家第三方CDN网络,但每一家都不能完全满足我们的“无卡顿、体验好”的要求。最后,我们考虑能否在已有的单CDN分发网络基础上,构建一个融合式直播分发网络,达到稳定流畅要求?因此,我们开始了一趟融合分发网络的构建旅程。

二、实践过程

我们的云直播分发网络构建,从时间维度分为三阶段:单CDN阶段、多CDN阶段和融合CDN阶段。各阶段是渐进式发展的。

2.1 单CDN阶段

单CDN-构建阶段

我们为云直播服务选用了一个传统的第三方CDN分发网络。通过封装调用第三方CDN的分发网络接口,构筑了一套完整的分发网络服务,其基本架构如图1所示。


图1. 单CDN分发网络

单CDN分发网络的优点是实现简单,能快速封装实现。在我们云服务发展初期,该方案能帮我们迅速实现产品,并且应用于实际场景。
但缺点很明显:网络不稳定、卡顿率较高,并且线路调优较为麻烦。

单CDN-优化阶段

当我们的用户量达到一定规模时,单个CDN的问题就集中体现出来了,首先网络不稳定,经常出现卡顿掉线等情况,而且对国内运营商网络存在差异化支持,例如电信、联通线路较好,而移动线路较差等问题。

通过与第三方CDN排查问题,发现其本质原因为:节点覆盖不足、带宽资源提供不足。

通过让CDN厂商加节点资源、优化线路,部分解决了卡顿流畅性问题,但是无法从本质上解决网络覆盖等问题。

2.2 多CDN阶段

多CDN-构建阶段

针对第三方CDN的问题,我们考虑采用多CDN方案加以解决。通过对不同的几个CDN厂商进行基调测试后,发现每个CDN厂商都有局部优势和劣势,例如CDN厂商A对移动线路支持较好,而CDN厂商B对电信/联通线路支持较好。针对该特点,我们接入了多家CDN进行节点及线路互补。对于一些特殊区域,例如小运营商、海外节点等情况,我们通过部署自有节点,开发了一套简单的自研CDN进行区域覆盖。最终我们形成了一个多CDN分发网络系统,架构如图2所示。


图2. 多CDN分发网络

多CDN-优化阶段

在多CDN分发网络中,由云管理中心为主播选择分发线路。在卡顿率分析时,我们发现上行推流的稳定性起着决定作用。因此我们根据主播端的IP,查询推流源位置信息,然后选择最佳CDN进行流分发。

举例说明,主播A为北京移动线路,我们就选择上行较优的CDNⅡ进行分发;主播B为上海电信线路,选择电信较优的CDNⅠ进行分发。选择策略在云管理中心进行配置。选择策略根据,基调测试结果或线上结果反馈,定期调整。

2.3 融合CDN阶段

融合CDN构建阶段

多CDN分发网络极大地降低了卡顿率,但运行一段时间后,我们发现多CDN分发网络,还存在一些缺陷,例如第三方CDN上行线路无法达到最优化;下行观众端拉流无法选择最佳CDN;直播线路无法临时调优等。

为此,我们重构了分发网络,提出了一种融合CDN架构,如图3所示。融合CDN分发网络,在多CDN的基础上,主要增加了两大功能:接流源站和智能云调度中心。
● 通过自建接流源站,我们能最大限度的优化直播上行线路。
● 通过智能云调度中心,我们能自适应网络环境,根据网络变化,动态的调整上下性线路。


图3. 融合CDN分发网络

融合CDN优化阶段

当前我们处于融合CDN使用阶段,但我们还将对该分发网络进行优化。考虑下行线路,第三方CDN厂商无法完全覆盖所有区域,而自研分发网络构建/维护成本过高。因此,考虑对于CDN厂商无法覆盖的下行区域,如果用户访问密度高,我们将在下行边缘做一层服务转发。

这样带来的好处有两点:
● 增加边缘覆盖率,同时降低CDN流量成本;
● 路由判断更加精准,避免CDN厂商路由漂移情况。

其框架如图4所示,我们正处于该优化阶段的建设过程中。


图4. 融合CDN分发网络-改进

直播分发网络构建中,融合CDN分发网络的设计/建设最为关键。

接下来将具体描述其两大关键模块的设计思路:接流源站、智能调度中心。

接流源站

在最初的设计中,源站的目的性很明确,用于接收主播的推流,并转发CDN。由于直播流采用rtmp协议,因此源站主要实现了rtmp协议处理。在内部,源站架构分为三层:接口协议层、逻辑处理层和网络分发层。
● 接口层接收解析rtmp流协议;
● 处理层进行流媒体处理;
● 网络分发层进行rtmp转发。

需要注意的是:每路推流转发一路给不同的CDN网络,这样观众就能从不同的CDN网络获取流信息。

随着云直播业务的扩展,互动直播以及直播连麦等需求也引入到了直播框架中,因此我们对源站进行了扩展,提供了一种多协议源站。引入的协议为RTP类协议,有交互性要求或实时性要求较高的直播形式,都走RTP类协议,其底层走UDP通道。而对广播式要求,我们通过RTMP转封装和混屏处理,无缝对接现有CDN。整体框架如图5所示。


图5. 多协议源站

源站调度

我们在全国二十几个主要区域部署了源站集群,在重要区域,例如北京、上海、广州、杭州等,采用BGP网络。其他区域采用多线。从而保证用户与源站之间网络的高质量。我们通过全局调度中心GSLB进行源站调度。调度中心,通过心跳式探活,感知实时情况。通过配置模块,动态调整源站的配置,如流量限制,黑白名单限制等。主播在推流之前,从调度中心获取源站路由。调度中心会根据推流源地址、策略表,最优选择一个源站。整体框架如图6所示。


图6. 源站调度

调度中心智能调优

调度中心是整个分发网络的核心,它统一调度上行接入点和下行拉流点。调度中心内部最重要的是路由规则表的制定。传统的规则表是固定配置规则表,跟实际网络的适配性较差。我们在融合网络中,设计了一套智能调优策略,通过网络实际情况动态调整规则。调优的流程如图7所示,采用五步骤循环模式。
● 步骤1,GSLB调度中心获取/解析用户地址信息;
● 步骤2,调度中心获取已有调度规则;
● 步骤3,调度中心生成路由地址,下发客户端;
● 步骤4,两端上报卡顿信息到云统计中心;
● 步骤5,云统计中心,定时分心数据,触发规则,调整规则库。


图7. 调度中心路由调优

通过这些步骤,调度中心实现了统计式自调优。

三、效果评价

我们在真实环境对上述分发网络进行了一系列对比测试,核心测试点就是卡顿率指标。为增加云直播产品质量,我们在卡顿率指标选择上采用了更为严格的一分钟卡顿率,而未使用常规的时长卡顿率。

所谓一分钟卡顿率,就是如果一分钟之内播放器连续卡两次,就视为该一分钟都为卡顿。而时长卡顿率,以每秒钟为间隔,该秒内播放器卡,视该秒为卡顿。播放器卡的定义为:解码线程每隔3ms从播放器缓冲区获取数据,如果缓冲器为空,则定义为播放器卡。一般意义上,一分钟卡顿率 = 4 ~ 15倍 × 时长卡顿率。


图8. 两周卡顿率比较

如图8所示,我们选择了X、Y、Z三个月的前半个月(两周)卡顿率数据进行了比较。其中X月运行了单CDN分发网络;Y月运行了多CDN分发网络;Z月运行了融合CDN分发网络。每天给出一个综合卡顿率数据。各月,云平台环境情况为:网络实际流量分别为日均5TB、12TB和20TB, 98%以上流量运行于国内, 流量无重大区域变化性差异。从图中,可以看出卡顿率有了明显下降,在融合CDN分发网络中,达到了我们预定<5%的指标要求。


图9. 卡顿率优化比例

如图9所示,给出了单CDN、多CDN和融合CDN的平均卡顿率下降指标。使用多CDN分发网络比用单CDN分发网络两周平均卡顿率下降26%。 使用融合CDN分发网络比用多CDN分发网络两周平均卡顿率下降44%。

因此,我们根据统计总结出:融合CDN分发网络,能极大优化网络分发,并把卡顿率指标降到了小于5%的优质范围。接下来,为了达到极致体验,我们将继续改进融合CDN分发网络,在拉流端考虑进一步优化。

四、推广建议
● 使用渐进方式,分阶段进行网络优化;
● 网络框架优化前,必须事先分析,寻找关键瓶颈点;
● 网络数据收集很重要,尽可能多收集;
● 必须深挖细节点,每个小模块都能做出大文章;
● 国内网络环境有特殊性,必须考虑运营商和区域性因素;
● 边缘加速很重要,尽量靠近用户;
● 善于使用第三方服务,并能在别人服务基础上进行优化升华。

11月9-12日,北京国家会议中心,第六届TOP100全球软件案例研究峰会,网易云通信与视频技术专家刘心坤将分享《网络拥塞控制以及在实时通信领域中的应用》。

查看日程

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/8276.html

相关文章

  • TOP100summit:【分享实录-QQ空间】10亿级直播背后的技术优化

    摘要:通过统计发现主播短帧率很低,画面不连续,主观感觉卡另外,用户使用设备中也有大量的低端机。通过分析发现帧率低的主要原因是单帧图像处理耗时过长导致,而编码所占因素较低。 本篇文章内容来自2016年TOP100summit QQ空间客户端研发总监王辉的案例分享。编辑:Cynthia 王辉:腾讯SNG社交平台部研发总监、腾讯QQ空间移动客户端技术负责人高级工程师。09年起负责QQ空间技术研发,...

    fyber 评论0 收藏0
  • TOP100summit:【分享实录】爆炸式增长的斗鱼架构平台的演进

    摘要:吴瑞诚斗鱼数据平台部总监曾先后就职于淘宝一号店。目前负责斗鱼实时离线数据处理个性推荐系统和搜索引擎。斗鱼统一日志监控系统有了配置中心,可以以此实现服务的开关和降级。 本篇文章内容来自2016年TOP100summit斗鱼数据平台部总监吴瑞城的案例分享。编辑:Cynthia2017年11月9-12日北京国家会议中心第六届TOP100summit,留言评论有机会获得免费体验票。 吴瑞诚:斗...

    baukh789 评论0 收藏0
  • TOP100summit:【分享实录-Microsoft】基于Kafka与Spark的实时大数据质量

    摘要:汇总了各个数据处理组件发来的元数据后,就可以实时做各种数据质量的评估,比如数据在此时刻的完整性如何实时性如何有无异常。 本篇文章内容来自2016年TOP100summit Microsoft资深产品经理邢国冬的案例分享。编辑:Cynthia 邢国冬(Tony Xing):Microsoft资深产品经理、负责微软应用与服务集团的大数据平台构建,数据产品与服务. 导读:微软的ASG (应用...

    Guakin_Huang 评论0 收藏0
  • TOP100summit:【分享实录-封宇】58到家多端消息整合之路

    摘要:封宇到家架构师。主要负责到家消息系统以及门户等公司战略级产品研发。消息服务器收到拉取离线消息请求,表明端已经收到之前的数据。统一消息推送通道,整合个推米推微信短信等消息推送方式,尽最大可能确保消息送达用户。 本篇文章内容来自2016年TOP100summit 58到家架构师封宇的案例分享。编辑:Cynthia2017年11月9-12日北京国家会议中心第六届TOP100summit,留言...

    googollee 评论0 收藏0
  • 洞察行业领先者的前沿思想——第五届TOP100全球软件案例研究峰会精彩谢幕

    摘要:夏华夏先生以美团发展的五个阶段为演讲主线,分别介绍每个阶段中所遇到的问题及解决方案。在夏华夏先生的分享之后,第五届开幕式圆满结束,他山之石可以攻玉是的宗旨,我们希望通过优秀案例的分享传播更多的经验。 showImg(https://segmentfault.com/img/bVHgPK?w=629&h=418);(第五届TOP100summit开幕式现场) 12月09日-12日,由ms...

    liaoyg8023 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<