摘要:腾讯云从2014年开始做X-P2P方案,历时2年多,其中多个产品线均已成熟,包括不同的平台、不同延迟场景下的P2P直播、点播P2P等,现已推广到斗鱼、熊猫等直播平台使用,经受住了大流量阅兵活动直播、赛事的考验,11月18日腾讯云技术沙龙北京站——释放技术的想象之解码腾讯云软件架构与应用邀请到腾讯云高级工程师张鹏,将会为我们分享《腾讯云X-P2P直播加速方案》。
张鹏:最近P2P有点火,融360都迅速的上市,不过今天讲的跟金融的P2P不太一样。在此之前我现在回顾一下P2P的历史,其实它很早就在互联网出现了,在1969被RFC收录,2000年又出现了Guntella网络诞生,BT协议,曾经人们一度以为P2P适用于文件分享,后来也分享适用于流媒体直播,后面也有一些流媒体直播我详细讲一下,这与我们的P2P架构是非常接近的。
第一个是GoolStreaming,是香港科技大学找的一个基于网状无结网络拓扑搞的一个P2P,它这里面有两个行为是现在的P2P仍然有的,一个就是定期的去交换缓存列表。缓存列表是什么呢?我有哪些信息,你没有哪些信息,我把我的这些信息分享给我的伙伴,我的伙伴也把信息分享给我,我向我的邻居请求我没有的数据,我会捕察到我的哪些邻居有这些数据,然后请求这些数据来一次打造一个数据的共享,从而避免所有的数据都向云服务器去请求。这个系统的优点就是节点之间的随机获取。接下来是一个AnySee的系统,这个是基于一树状的,它是在GoolStreaming系统上提高了邻居的质量,构建一个树,缺点就是这个树的负结点一旦离开了,都统一失去了共享的能力,导致的波动比较大。
它的树状结构中底层跟底层的播放时差也比较大,这也是一个问题,扩展下来就发展成了一个优化的网状结构。接下来的是GridMedia,前两者是高延迟的P2P,而GridMedia就相当于据描述是能达到1.5S延迟的P2P,然后它使用的是推动模型,它不是每一个数据都先请求一下然后再返回,而是直接向你认证未来长时间的数据,你直接一有数据直接推送给我就行了,这个经历春晚奥运会直播的洗礼,它的优势延迟低,连接速度快,劣势用户少的时候观看体验差,因为它没有商用化。
我们看一下腾讯云里面的X-P2P的方案,是基于Segment的直播的P2P架构。为什么要切片呢,因为直播这个东西不一样,不像一个电视剧点播,每一个观看者都认为都是一样的,但直播就不一样了,直播就要先推直播流进行切片,进行一秒一片,为什么是一秒呢,因为一秒能满足不延迟的要求。接下来就很简单了,就是用户在客户端的时候直接使用http小文件分发就行了。说一下流程吧,首先主播推到我们的比如说服务器上,我们的P2P会对它进行切片,切片切成1秒一片,集成到CTN上,然后CTN对这个进行回源,这个CTN是没有说需要使用腾讯的,它是可以解耦的,你可以使用网络的CTN,也可以使用别的CTN,你只要让我们的CTN上我们的原来的服务器就可以了。
接下来就是客户端的行为了,首先会请求一个com服务,包含着我这个频道的tentol(音)服务器、种族服务器还有日志服务器有哪些,包含P2P控制的一些参数。最重要包含这个频道当前最新产生的切片是哪一片,的知道是哪一片之后,就开始请求一片开始播放了。当连接到它的服务器之后,连接它的服务器是为了得到自己的端口,因为光服务器肯定要建立起我与伙伴之间的连接,当前的网络中都是IPv4,IP不够用,你自己IP的端口跟外网的是不一样的,所以你要先获取由公网址来提供端口,再下面的种子服务器获取跟你观看同一个频道的端口,向他们发起连接,连接建立起来之后P2P数据就开始产生了。P2P产生具体一点,就是离我播放器远的数据优先使用P2P去请求数据,会检查P2P有没有请求完整,如果不完整就直接走CTN下载,来依次达到一个数据连接播放器播放。
下面就是一个统计,在服务端是没有办法统计到我们的,所以要依赖客户端上报一下P2P有多少流量,CND用了多少流量,经过我们的实时日志分析系统来计费,统计。可能稍后有人会问我,你们统计的这个P2P的流量怎么确定是这么多的P2P的流量呢?这个我先解答一下,我们统计的这个P2P的流量是可以跟CTN提供商的流量相对比一下的,如果差别不大是说明我们的统计没问题的。
我们的P2P的产品是涵盖了各个端的,包括安卓、IOS、PLUS和H5,直播又分高颜值和低颜值,为了满足不同场景的需求,比如说直播需要跟粉丝实时互动的,对延迟要求比较低,这时候就使用低延迟直播。像广播电视、体育直播他们动坚持的要求可能就没有那么低,他们可能容忍1分钟以上的延迟要求,这个就适用于高延迟直播,高延迟直播相对于电视直播它能达到一个更好的P2P和更高的播放质量。
我们X-P2P的成本的优势,首先我们做这个产品,不是想着要把这个分享率提出很高,优先保证用户体验。刚才也说了卡顿率都是用户使用该产品优先考虑的,我们现在是1秒之内就能实现,平均是700毫秒,卡播率要比不适用P2P还要优一点。服务质量,我们的服务质量依赖强大的资源,绝对不会出现故障,故障率0.01。接下来才是分享率,在保证前两个的基础上,我们的分享率也做到一个数值,高延迟的直播也能够达到80%的平均分享率,也就是说能帮你节省80%的平均带宽。低延迟直播也能够达到50%的分享率。我们X-P2P另外一个产品优势就是接入流程,简洁的接口及先进的接入工具使客户迅速接入上线。
这个是我们线上客户真实数据,这个是斗鱼的,web端使用CND卡顿率是6.86%,使用P2P卡顿率是1.72%,移动端CDN卡顿率是4.75%,移动端P2P卡顿率是3.85%。中间的波峰其实是有网络波动。X-P2P的集成方式也很简单,安卓提供了一个懒加载方式。IOS提供了一个Framework,Flash更简单,直接加载一个WF就OK了。H5也下载一个JS文件就OK了。
X-P2P架构优势分以下几点,首先就是降低带宽、节约成本减少机器压力。现在你想要用音视频打造一款爆款的APP,其中很重要的因素是成本的因素,我们的带宽是很贵的及你不得不拿钱去买带宽,使用X-P2P就能降低带宽,用更少的成本减少机器的压力。P2P也建立起了全链路的监控机制,包括主播推源,到流媒体服务器,到转码、切片,再到行性,都是有的。一旦出现了问题,我们就可以迅速地定位服务异常,我们刚才这个也是说和CDN解耦的,不过我们还是建议同时使用腾讯的CDN,因为腾讯内部查问题很方便,而且与腾讯的CDN深度融合也是比较高的。比如说我们的切片文件到腾讯之间都不用回源了,就直接推送到腾讯云的中间结点,超级源。
P2P团队其实我们搞P2P已经有3年了,这3年里我们也是精益求精,做了一些很多的探索和优化。接下来分几点讲一下,首先是高效的内部传输控制。以前的P2P大家知道是非常强调带宽的,大学的时候可能有一个室友用BT下载的时候,其他的室友都会受影响,就是因为他占了30%甚至80%的网络带宽,而我们这个不与TCP抢占资源的,造成网络的拥塞。节点之间的优胜劣汰,自动演进。结点替换波动不会影响到播放质量,努力发现可用带宽。另外一个就是精准的播送,像秒播是直播的一个必备的元素,我们能针对不同的播放器的设置都能秒起画面。还能做到针对不同的播放器的设置不同的画面,有的播放器先留一些缓冲,我们就快速的写数据。然后是低延迟启动,GOP这个概念可能都已经介绍过了,就不多说了,如果你平常使用,你可能下载第一帧数据,是服务端缓冲的把上一个IG的数据,可以畅达好几秒。我们又做了一个东西,就是从服务器缓存第一个IG,到当前的这一帧的数据,达到一个更低延迟的。
然后接吸收是消除累积延迟,其实有的播放器也做到了消除累积延迟,播放器内部的缓冲当超过4S的时候,播放器就会主动的丢数据就会把延迟删除掉,这个累积延迟是怎么诞生的呢?比方说你的播放器了5秒,你再直播的时候就与主播发生了5S的延迟,这个是再也消除不掉的,刚才说到的播放器主动丢缓冲是一种策略,我们为了避免播放器丢缓存,每秒钟只写一点数据,我们每秒钟还与主播最新的数据进行同步,主动的进行跳播。第四点是纠错恢复能力,我们这个不会因为某一片的卡顿就播不下去了,它会自动的提升感知,自动地去播下一秒的数据,能让数据连续上。
接下来是一个大房间高并发的解决的方案,因为P2P这个可能大家可能不太了解,就是它穿透的时候必须这个渠道的所有的人都连接到一个穿透的服务器,才能用相应的P2P,而一旦这个房间的人数过的的时候,比如说超过了80万,你无论使用再好的服务器你也抗不住的,所以我们就做了一个大房间,让一个大房间,把一个10的房间做成了两个5万个大房间,那5个人上一个服务器,那2个人上一个服务器,他们业务之间相互不受影响。最后是播放回退机制是最后的弥补的机制,其实真正的播放回退是不会很多,基本上的所有的客户都用不上这个功能。
接下来就是P2P的思考与展望,P2P现在是全国提速,之前的网络带宽只有2兆,甚至2兆都没有,平均的网络带宽能达到13兆了,这对P2P来是说一个利好。WebRTC的普及也推动了P2P应用流行,我觉得IPv5P2P的产品其实也已经出服了,只是现在国内的差异,大部分的浏览器还是不支持IPv5的P2P的。带宽的共享其实也是一种共享经济,共享经济的概念这几年也特别的火,它有推波助澜的作用。在IPv4的时代我们需要NAT地址转换,当IPv6普及之后穿透多播将更加的容易。
X-P2P的挑战,带前的带宽虽然升的快,但是视频的质量升的更快,未来只用P2P的方式来播放视频。P2P的跨省跨运营商流动,其实运营商对此是很不满的,未来P2P是解决这个的良药。就是把同一省同一运营商的,比如北京市的划定一个圈,让他们这块的人不要跨省结算,这个也是我们未来要做的事情,还有安全上的考虑,国家的管制。比如说你给你传送的时候给你传播一些不和谐的内容,就导致你这个画面和下一个画面不一致的现象。
这个是我们当前已经拥有的客户,我们的客户已经涵盖了直播里面的斗鱼、熊猫,尤其是斗鱼是我们的大客户,包括移动端跟Web端还有PC端,还有包括像小米视频、话华硕这些广播电视,还有直播、南瓜电影这些用户。前段时间比较火的应用联盟的S7的赛事直播斗鱼和熊猫S7全程使用我们这个系统支撑的,带宽峰值超过4T,结点数超80万。其实P2P已经是一个历史潮流,他们都比较把这个考虑成是一种比较接受的技术,它已经越来越成熟,也欢迎大家尝试一下腾讯云的X-P2P。谢谢大家。
讲师视频:
张鹏:腾讯云X-P2P直播加速方案
来源: https://www.qcloud.com/community/article/132064