CDN 动态调整技术及其在新媒体直播领域的应用

随着新媒体直播爆发式的增长,用户体验的要 求越来越高,实际操作中通常在直播的制作、 传输、承载分发以及播放等环节进行保障、优 化和体验提升。本文所介绍的CDN 动态调整 技术就是在承载分发环节进行的新尝试,文中 重点阐述了CDN 使用模式、移动客户端数 据采集和CDN 自动调度模型设计,提出了多 CDN 分发模式下为用户提供相对最优直播体 验的解决方案。

摘要

随着互联网和新媒体直播的兴起,用户的观看热情高涨,为了解决用户因分布、带宽、服务器性能带来的访问延迟问题,各新媒体直播服务提供方大都采用CDN 加速服务,使用户就近取得所需内容,解决网络拥挤的状况,提高用户访问直播内容的响应速度和成功率。CDN 服务作为一种提高网络内容,特别是流媒体内容传输服务质量、节省骨干网络带宽的技术,在国内外得到越来越广泛的应用。目前使用CDN 服务的方式主要有使用单一CDN 服务商支撑和使用多CDN 服务商支撑两种,这两种方案各有特点,在面对新媒体直播领域复杂多变的需求时,也各有利弊。

一 现有新媒体直播CDN 分发模式分析

如今众多CDN 服务商给了广大互联网公司更多的选择,但是由于同时使用多CDN 服务商会提高各项经济成本和协调难度,所以部分互联网、新媒体产品采用合作顺畅、联系紧密的单一CDN 服务商进行内容承载和分发支撑,但是此方案的缺点是信号承载分发的效果完全依赖于该CDN 在各个地区的服务性能。例如,某CDN 服务商在杭州市、深圳市的边缘节点服务性能强,但此CDN 服务商在上海市的边缘节点服务性能较差,则不同地区的用户在观看同一场直播时的体验就会有较大差异。而单一CDN 服务商支撑的优点则是可以有更深度的合作,例如通过搭建专有的私有协议,在低延时和高质量间取得更好的效果和平衡;也可以依托自身产品的实力获得更强的议价能力。

相对于单一CDN 服务商支撑,也有部分互联网、新媒体产品采用多CDN 服务商支撑分发,以实现CDN 服务商之间的竞争和互补。有的CDN 服务商在东部沿海城市服务较好,而有的CDN 服务商则侧重西部偏远地区和小城市,这样通过多CDN 服务商的协同,可以实现较好的新媒体内容分发效果,提高各地区的用户访问体验。但是即便是这样,由于各地区当地运营商对CDN 服务商的分配存在不确定性,也可能存在同一地区不同运营商直播体验不尽相同的情况。也就是说此方案可以很大程度减少某个地区受单一CDN 服务商性能问题产生的体验影响,但是该地区体验不佳的用户很可能在该场直播时间范围内,高频率发生卡顿、重复加载等问题。如图1 所示,假设上海地区的联通网络访问某直播信号,固定访问的CDN 服务商为A,同地区的移动网络访问该信号,固定访问的CDN 服务商为B,这样就形成了典型的多CDN 承载分发直播信号模式,但是这种模式并不能主动干预并控制两个CDN 服务商在当地的承载配比。假设用户3 在上海地区使用联通网络看一场直播,如果由于他的网络由运营商相对固定地绑定了CDN 服务商A,且CDN 服务商A 在当地的服务性能不佳,那么这个用户可能会一直访问该CDN 服务商,并导致该用户看一场持续卡顿的直播,用户体验较差。

图片.png

尤其在大型体育赛事直播、重大节日活动直播和热点事件的突发直播中,往往因为社会的广泛关注带来了庞大的新增用户涌入,也带来了难以预估的并发访问压力。针对这一场景,目前现有的新媒体直播支撑方案势必不能给不同地区的用户带来统一流畅的直播观看体验。由此,就产生了一个迫切诉求,需要设计一套技术方案,既可以利用多CDN 服务商承载分发的优势,又可以动态调整并持续改进用户的体验。

二 CDN 动态调整技术方案设计

新媒体直播是一种对实时性、连续性、时序性要求非常高的业务,无论是从带宽消耗上还是质量保障上,都对现行技术方案提出了挑战。这其中要解决移动客户端实时数据采集、CDN 自动调度模型设计和后续简单高效的运维模式实现等问题。

从2016 年起,以央视体育客户端为契机,在各项重大赛事的新媒体直播中积累经验,不断实践,并通过对相关数据的收集、分析和总结,对产品需求、功能以及趋势进行判断,结合用户观看及体验需求,提出并设计了多CDN 动态调整方案。如图2 所示,此技术方案在变化多端的新媒体直播中,通过实时采集事件数据以及用户所使用的CDN、运营商和地域等信息,结合多CDN 自动调度模型以及多CDN权重参数计算出反映各服务商服务质量的直播承载占比,精准面向用户进行CDN 调度,将相对最优的CDN 服务提供给该用户,解决了新媒体直播中长期存在的影响用户观看体验的痛点。

图片.png

1. 移动客户端实时数据标准化上报

及时、真实、准确地了解全国用户的观看体验,是CDN 动态调度的关键前置条件,因为只有拿到越多用户、越多地区的真实数据,才能通过动态调度模型更精准地计算出各CDN 服务商覆盖全国各地区的性能情况,从而进行后续的调度操作。在设计客户端实时数据上报方案的过程中,为了在支持自研开发客户端使用CDN 动态调整技术的同时,支持其他第三方客户端也可以使用,专门制定了《移动客户端面向CDN 动态调度技术的标准上报API规范》。对公共信息和视音频播放信息两个上报数据组进行了说明,并提供了所有属性的数据字典、数据样例及说明,便于移动客户端的集成开发人员浏览使用。

(1)公共信息上报的主要内容公共信息包含:

◆终端ID【app_key】,用来标明是哪个App;

◆设备ID【device_id】,用以标明设备唯一属性,并详细说明安卓和苹果对于设备ID 获取的不同规则;

◆制造商【manufacturer】,标明手机厂商;

◆移动客户端版本信息【app_version】,标明客户端版本信息;

◆ 其他的诸如【os_version】标明系统版本、【channel】标明下载的渠道、【send_time】标明上报数据的时间。

(2)视音频播放信息上报的主要内容视音频播放信息包含:

◆内容ID 和视音频名称【content_id】、【content_name】;

◆每次播放产生的播放UUID【player_id】、播放地址【player_url】、播放码率【player_rate】、播放状态【player_status】和播放的当前位置【player_position】,其中播放状态包含了CDN 动态调度模型中用到的关键事件数据,如加载首帧、拖拽、再缓冲和报错;

◆【network_type】代表连网的方式, 包括WiFi、4G、无网等属性;

◆视频总时长、观看持续时长和数据上报时间等。

(3)信息上报方式

移动客户端可以按照各自业务需求制定上报方式和频次,建议在移动客户端启动、退出、运行期间每10 分钟、发生影响体验数据时进行上报。

2. CDN 自动调度模型设计

有了采集到的客户端上报信息,就可以使用调度模型来计算出各CDN 的调度比例。在模型中,首先定义了4 类事件数据,分别是:A 为首次加载时长超阈值次数;B 为拖拽后加载时长超阈值次数;C 为再缓冲加载时长超阈值次数;D 为播放错误数。根据前期的运维经验,将4 类事件权重分别设置为A:20%;B:10%;C:40%;D:30%;同时,将A、B、C 三类事件的时间阈值设置为5 秒。后续这些权重设置和阈值设置都可根据运维实际情况进行调整和不断优化。

根据4 类事件的采集数据并经过综合设计,总结出用于实时计算CDN 服务商调配比例的公式为:

图片.png

通过该公式的计算,某个CDN 服务商在某类事件下发生超出阈值或者错误数越少,那么它的调配占比就越高。也就是说,这个承载占比反映的是CDN服务商在全国或某地域的服务质量,服务质量越高,占比越高,调配给其承载的用户也就越多。

在表1 的案例中,在全国范围内通过客户端实时数据采集计算出两个CDN 服务商每类事件的超阈值次数。

图片.png

将CDN 服务商A 的采集数据代入公式,可得出:

图片.png

所以计算出目前两个CDN 服务商在全国的占比为:CDN 服务商A ≈ 58%;CDN 服务商B ≈ 42%,并将全国的调度占比定义为R1。同时,由于采集的客户端信息里带有运营商( 移动/ 联通/电信等) 和地域信息。所以可以按照上述公式分别计算出某CDN 服务商在某一个地域的某一个运营商下的调度占比,并定义为R2。当客户端用户请求一场直播时,系统将该用户当前的地域信息和运营商信息与R2 进行匹配,如果匹配成功则利用R2 进行计算调度。如果没有匹配上,则使用R1 进行CDN 调度分配。R2 相较于R1 对用户的调度更加精准,直播体验改善更加明显。同时,根据用户的设备标识,通过计算机程序的取模换算公式,将该用户投射至0 到99 的区间。对于全体用户而言,通过取模换算公式计算出的结果在0~99 区间的分布是均衡的。

例如, 对于安卓用户A, 设备标识为6726482cbc192190, 通过计算得出:Math.abs(6726482cbc192190.hashCode())%100=97; 对于IOS 用户B, 设备标识为A8B637ED-5EB6-47AA-9AC0-7C3D77D4F002, 通过计算得出:Math.abs(A8B637ED-5EB6-47AA-9AC0-7C3D77D4F002.hashCode())%100=15。假设两个用户的地域信息和运营商信息没有匹配的R2,则使用R1(CDN 服务商A ≈ 58%;CDN 服务商B ≈ 42%) 进行调度分配。客户端用户取模为0~58 的使用CDN 服务商A,58~99 的使用CDN 服务商B。随着用户规模扩大,由于用户分布是平均的,所以占比大的CDN 服务商将获得更多用户,最终实现CDN 服务质量高,则自动分配较多用户的动态调配效果。

三 CDN 动态调整运维模式和实际使用情况

在未使用CDN 动态调整技术的常规情况下,客户端运维人员通过监测发现用户观看直播卡顿后,进行分析并确定CDN 某个节点服务不佳,再把这个情况反馈给CDN 服务商,督促其进行相应的调整。整个处置过程较为被动,流程冗长,起效较慢,而且面临较多上报问题时,有限的运维人员往往无法面面俱到,只能分层分级进行处理。

图片.png

而通过CDN 动态调度可以极大简化运维人员的系统维护工作量,运维人员只需将参数接入CDN 动态调度系统,对各个事件生效的阈值,事件生效所占权重、全局权重、运营商权重以及地区权重等进行配置,再结合移动客户端上报的实时数据,即可对多CDN 进行自动调度,实现跨运营商、跨地域的新媒体直播高用户体验覆盖。

以在央视体育客户端运维过程中出现的场景为例,黑龙江省牡丹江市爱民区某一检测点未应用CDN 动态调整技术前,两个CDN 服务提供商的访问承载,由当地运营商进行相对固定的分配绑定,即联通用户绑定CDN 服务商A,移动用户绑定CDN服务商B。

因CDN 服务商A 在此区域提供的CDN 服务性能不佳,导致此区域联通用户在观看直播时经常发生卡顿现象,观看体验较差。部署CDN 动态调整技术后,在赛事直播中,实时计算出两个CDN 服务商的占比:CDN 服务商A 为15%;CDN 服务商B 为85%,可见该区域CDN 服务商B 的服务质量远远好于CDN 服务商A。实时根据计算模型精准面向用户调度CDN 配比,将原本联通用户根据运营商分配绑定的CDN 服务商A 重新调整为体验最优的CDN 服务商B。与此类似,经过多个测试点的多组数据对比分析得出,CDN 动态调整技术相较于市面上现有的方案,在新媒体直播大并发情况下极大地改善了用户在观看直播时的卡顿现象。

四 总结与展望

新媒体直播对于移动客户端产品既是带来海量用户的重要内容传播形式,也是营造用户体验,凸显客户端特点的重要手段,是每个客户端产品运营方都要力保的重要阵地。CDN动态调整技术的运用增加了客户端产品运维人员对直播分发质量的控制手段,加强了对CDN 服务商的制约和反馈力度,有力支撑了新媒体直播全过程清晰流畅的视听临场体验。

后续,伴随着日日夜夜的海量新媒体直播,可以基于CDN 动态调整中的上报数据以及调度情况进行深度分析,进一步调整各个事件生效的阈值,改善权重配比,不断优化自动调度的效果,并以图形化形式呈现实时统计型数据。同时,开展对基于该技术的相关防盗链体系等延展方向的研究与应用。

转载请注明来源:《现代电视技术》 作者:中央广播电视总台 李英斌