直播的推流调度,网易云是如何做的?

这篇文章从传输的角度,讲一讲网易云直播如何做好传输的第一步:推流调度。首先,直播推流,即主播将自己的

直播的推流调度,网易云是如何做的?

这篇文章从传输的角度,讲一讲网易云直播如何做好传输的第一步:推流调度。干货太多,自行划重点喽~

首先,直播推流,即主播将自己的本地客户端采集编码后的视频数据“推”出去。推流会涉及到两个问题:视频推到哪里去了以及观众从哪里将流拉到播放端观看。

主播推流是推到了直播接流服务器,由接流服务器负责分发到更高一层的传输层去将视频流推往全球的观众处。直播接流服务器是视频流从客户端出发后的第一站,也是对传输质量影响最大的一站。直播上行调度处理的问题就是给推流客户端选取一个合适的接流服务器。直播接流服务器的调度和部署大有讲究:

首先,国内由于网络运营商的复杂性,存在众多运营商,小运营商借大运营网络等各种问题。对直播上行调度来说,第一步的挑战就是需要识别出客户具体的地域和网络类型。这一步通常是通过一个网络IP库来处理。虽然网络上存在着各种各样的IP网络库,但准确性并无法保证。网易云基于20年的互联网经验,积累了大量的IP信息,拥有自己的IP库,相对于网络上通用的IP库能更精准地识别出各地区及运营商问题。

其次,则是调度本身了,即按客户的来源,分配给推流端对应的接流服务器。最常见的系统,是基于DNS的调度。网易云当然也支持这种调度方式。即给定一个域名,通过网易的DNS权威服务器解析,按照相应的规则,结合客户的运营商和地域信息,分配对应运营商和相近地域的接流服务器给推流客户端。比如,杭州的用户使用域名xx.live.126.net推流,在不考虑DNS缓存的情况下,它会先走到DNS服务器进行域名解析,网易的DNS权威服务器会最终接到这个解析请求,并按IP库查出的对应地区和运营商,给予一个合适的接流服务器的IP地址,返回给客户端。客户端的推流即可以推到这台接流服务器了。

DNS系统是个通用的解决方案,优点即不需要额外的环节介入,直接基于DNS即可实现调度。但它的缺点也相当突出:DNS系统为性能考虑,做了缓存。如果某台接流服务器由于各种原因宕机不可用了,而客户端还会通过缓存取到这台机器作为接流服务器,这样会导致客户端推流不可用。客户端就需要等到对应的DNS缓存失效后,才能使用业务,而这个缓存的失效时间也很复杂,国内的运营商可能会对DNS缓存做额外的延长,这时直播业务可用性就无法保证了。另一方面,DNS系统看到的“客户IP”并不一定是客户视频流出口的IP,而是本地DNS出口的IP,这可能会导致一些DNS系统的误判。

网易云拥有自己的直播调度系统。当用户使用网易云直播SDK进行直播时,SDK会联系网易云的调度系统直接获取接流服务器地址。由于网易云调度系统部署选取了多线BGP,与众多小运营商之间都拉了专线,因此小运营商用户在联系网易云调度系统时,不会走第三方大运营商的出口,而是直接走专线出口,这样可以最大程度上降低调度系统对于用户网络运营商的误判。网易云调度系统在海外也会有对应的调度节点存在,即在海外,客户端同样可以取到合适的接流服务器地址。

另一方面,网易云的调度系统与全球各边缘上行接流服务器之间有着紧密的联络,会实时监控各接流服务器的实时CPU、内存、网络等资源使用状况,从而最终给出一个最合理的调度结果。

网易云的用户,可以通过使用网易视频SDK而跳过上述DNS可能存在的问题,而进行更精确的调度,得到更佳的直播体验。

直播系统的上行调度,很大程度上影响着整个直播的质量。如果上行接流服务器调度的不够好,比如客户端运营商识别错误导致客户端将视频流进行了跨运营商的传输,那么网络就很容易不稳定而产生网顿等现象。网易云直播服务通过以上各种手段,最大程度保证了调度的准确性。

以上由网易企业服务-企业信息化服务提供商:湖南领先网络科技有限公司整理发布。

网易企业服务(qiye163.co)是网易凭借其20年品牌优势与经验打造的企业级产品矩阵,致力于提供一站式企业信息化解决方案。网易企业服务的推出是网易在企业邮箱的基础上对企业市场的进一步重要布局。湖南领先网络科技是网易企业产品一级经销商,专业为企业提供网易企业邮箱、网易办公套件、网站建设、域名注册等一站式信息化解决方案。网易企业邮箱试用与办理,就找湖南领先网络。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/82105.html

(0)

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信