【尖端干货】星域CDN·直播卓越版三大黑科技浅析
2016年5月,星域CDN推出了“卓越版”和“极速版”两款直播新品,截止笔者撰文,星域CDN的这两款新品已经服务了百余家企业的直播业务,并且得到了小米、爱奇艺、熊猫直播、bilibili、陌陌、触手、战旗直播、大朋VR、GoGal够格等多个直播行业大佬的公开点赞。单从量级来看,星域CDN目前可以说已经承担了直播行业1/3的流量。
当然,业界更为关注的还是使用了“无限节点”技术的卓越版方案,而作为星域CDN·直播卓越版的技术研发工程师,笔者也接到了很多圈内朋友的询问,海量的节点如何调度?直播数据流如何分发到离用户更近、网络质量更好的节点?星域直播SDK如何智能选取多个优质节点进行并行传输?星域CDN的直播流畅度是不是真的能达到99%?
在这里,笔者就简单介绍一下星域CDN·直播卓越版的几个技术要点,希望能帮助大家更好的了解星域CDN的直播技术:
一、传统直播流分发由单路变为多路
目前大多数CDN厂商,包括传统CDN厂商和云厂商,提供的直播直播CDN分发基本都基于树状结构,由源节点,中继节点和边缘节点三层组成,当播放客户端观看发起拉流请求时,通过RTMP或者HTTP-FLV协议向边缘节点请求直播流数据时,边缘节点如果没有该路直播流的数据,就会实时回源到中继节点,同理中继节点最后会回源到源节点拉取该路主播流。如下(图1 左)所示:
图1
使用传统的分发结构(图1 左)会造成:
1、卡顿率高
抗抖动能力差,回源都是基于TCP,这要这条链路不断开,链路的抖动会影响分发速率,这样最终会影响这条链路下面的所有观看用户的卡顿;
2、高码率直播稳定性差
单条链路分发速率,对于5Mbps内码率的TCP分发能满足,但对于10Mpbs,20Mpbs甚至更高的码率的直播流单条链路的稳定性肯定是不足的;
星域CDN多路分发的优势
为了提高CDN内部分发链路的稳定性,星域CDN(图1右)会将直播流进行chunk分片,同时在一层分发传输中将chunk片打成碎片,分发给下一层节点,例如在中继服务器1这层,源服务器1和2同时分发碎片数据,中继服务器1只要收到足够的碎片就能够解码出chunk片,如此一来,一台源服务器的波动对这层直播流分发来讲影响就大大的减少了。
二、播放端单路订阅变为多路订阅
我们都知道,当前用户播放端拉流都是基于TCP协议(图2):
图2
而用户播放端到边缘服务器之间的抗抖动性相比机房节点分发更弱,单条链路的拉取速率更加有限。
星域CDN多路订阅的特点:
1、完整、可靠、可扩展的私有协议
星域CDN·直播卓越版在处理播放端拉流的时候,采用SDK向边缘端拉取碎片数据,而SDK拉取数据的协议与CDN内部分发协议是保持一致的,使得SDK在多终端上如PC端flashsdk,Mobile端的androidsdk和iossdk都能很容易移植底层私有协议传输;
2、扛网络抖动性强
星域CDN·直播卓越版SDK可以向多个边缘服务器拉取数据,而多源拉取的核心优势就是单点抖动容错能力强,部分边缘服务器无法拉取,其它服务器仍可以保障数据拉取成功;
3、首屏秒开
为了保证首屏时长和可用性,星域CDN·直播卓越版SDK保留了传统CDN播放的线路,即在启动播放的时候直接通过DNS或者302方式去拉取flv流,保证秒级首屏时长,一旦出现碎片数据分发过慢或者延时过高时,则回退到单点线路,保证的直播流的低延时。
三、通过迅雷赚钱宝实现“无限节点”
众所周知,CDN的服务能力与节点数量是正相关的,而几乎所有的CDN厂商都以建多少机房节点,覆盖多运营商来说明自家CDN的分发实力,与业内其他所有CDN服务不同,星域CDN首创了“无限节点“模式,可通过迅雷赚钱宝构建百万量级甚至“无限”的节点网络,从而将CDN服务能力进行数量级的扩大。
具体到星域CDN·直播卓越版,用户在收看直播时,播放器不仅可以从边缘服务器拉取数据,同时也可以向赚钱宝节点拉取数据(图3 右)。
图3
迅雷赚钱宝是一款TOC的智能硬件产品,普通家庭用户购买后接入路由器就可以将自己空闲的带宽、存储等资源贡献出来,而网心科技将这些资源再进行整合加工,就成为了星域CDN服务。由于迅雷赚钱宝遍布千家万户,所以当某个用户收看星域CDN支持的直播活动时,他的直播数据可能就来自于其邻居的迅雷赚钱宝节点。只要播放端“近”的赚钱宝数量足够多,SDK就能就“近实时”拉取碎片数据完成解码组装,提高给播放器近实时的直播流数据。
实例:
如下图所示,直播客户对于直播延迟和视频流质量要求不尽相同,各家采用的视频编码器不同或者编码器采用的参数不同,导致源流的gop结构不尽相同,从CDN厂商的角度,源流的gop结构是难以从程序的角度判断的,对各家客户做差异化处理也存在较大的困难,而统一用相同的编码参数做转码则破坏了源流的gop结构,使得转码之后的水印流在延时数据上发生改变,有可能达不到客户的要求。 如图4、5、6所示,是一路直播流(1080P,4Mpbs码率)从开播到当天23:59:59秒的通过赚钱宝的全网流量带宽占比(70~80%),卡顿率均值在1%左右,首屏时长平均在400ms 。
图4:一直播流房间赚钱宝分发带宽占比
图5:一直播流房间高峰期时段5分钟粒度卡顿率(%)
图6:一直播流房间高峰期时段5分钟粒度统计首屏时长(ms)
图4、5、6从首屏时长,卡顿率,赚钱宝流量占比三个数据反映了当前直播卓越版的服务质量情况。如图所示,用户开播时首屏时长与直播流延时可以达到业内较高水准;在卡顿率方面平均控制在1%,远优于传统CDN的3~4%的水平;赚钱宝流量的占比的稳定曲线可以看出直播卓越版的基于“无限节点”的模式效果是明显的。