构建Theta协议:第二部分
混合网格流媒体技术概览
作者:Jieyi Long,Theta Labs首席技术官
在本篇博客文章中,我将简单介绍我们正在开发的混合网格流媒体技术。混合网格流媒体技术同时使用对等节点网络(P2P)和内容分发网络(CDN)来传递视频,从而结合了两种技术的优势,即P2P的高度可伸缩性(Scalability)和CDN的高度可用性(Availability)。我们的研发进展表明混合网格流媒体技术能够大幅降低测试环境下CDN带宽的使用量。
P2P流媒体的技术优点是能够近乎实时地快速分发大量音频和视频内容。当众多用户同时收看同一个视频流时,P2P直播就能达到最优效果。同时在线的用户越多,可利用的带宽资源就越丰富,对等节点也就能更有效地从彼此身上抓取流媒体,系统的鲁棒性也就越强。节点不需要依靠中心化的服务器来提取内容,这点在服务器失灵的时候就显得尤其重要。中心化的CDN模式刚好相反,同时在线的用户越多,CDN服务器面临的可伸缩性压力(Scalability pressure)就越大。
然而,纯粹的P2P流媒体网络存在着可用性(Availability)的问题。对等节点随时可能下线,所以很难预测某个节点什么时候会处在可用状态。此外,节点之间还存在不可控制的差别,比如上传、下载能力的区别等。相比之下,CDN服务就显得更可靠和稳定,因而可以作为对等节点不可用时的有效“备用方案”。
我们的目标是在不牺牲服务质量(QoS)的前提下,尽可能降低对CDN带宽的要求,这对于网飞(Netflix)、YouTube、Twitch和Facebook等需要负担巨额CDN带宽的流媒体平台而言非常重要。这一要求意味着我们希望对等节点尽可能从彼此身上抓取流媒体数据,从而降低对CDN网络的依赖。要实现这一目标,对等节点必须能够有效地发现附近的其它节点。如果一个节点能够发现多个附近的对等节点,那么它就更有可能从对等节点上较稳定地获得视频流片段。相反的,如果找到的对等节点距离比较遥远(距离以路由跳数计算),该节点就可能无法从它们那儿较稳定地抓取视频流,从而导致卡顿、频繁缓冲等不良用户体验。
为了解决这个问题,Theta设计并实现了一个引导服务器网络(Tracker server network)和播放器客户端智能(Player client-side intelligence)相结合的独特策略。简单而言,引导服务器会为播放器客户端提供高层指引(例如提供候选节点列表)帮助其找到候选的临近节点。播放器客户端则实现了一套考虑了多种因素的过滤算法以定位最优临近节点。
引导服务器网络(Tracker Server Network)
引导服务器网络是一个去中心化的网络,可由使用Theta网络的视频流媒体网站及Theta视频分发社区维护。他们为播放器客户端提供候选节点引导。
为了给每一个客户端提供一个候选对等节点名单,引导服务器在每一个节点加入分发网络时记录其位置信息,包括IP地址、经纬度,以及一系列其它参数。有了这些信息,服务器就可以在空间数据库中管理节点。Theta的空间数据库经过特殊优化,可以存储和查询代表地理空间物体的数据。当新的节点加入网络时,服务器可以进行空间查询,迅速、高效地获得一张附近候选节点的名单。
正如之前提到的,对等节点随时有可能离开网络,因而引导服务器必须知道哪些节点处在活跃状态。要实现这个目的,活跃的对等节点必须和服务器建立Socket连接,并连续向服务器发送心跳信号(Heartbeat signal)。如果服务器在一段时间内没有接收到心跳信号,就可以判定该对等节点已经离开网络,并对空间数据库进行相应的更新。
值得注意的是,两个对等节点的“距离”是以两者之间的路由跳转次数来衡量的,并不是指两者的地理距离。网络距离和地理距离通常是高度关联的,却不能简单画上等号。举例来说,两台共处一室的电脑可能连接着不同的互联网服务提供商(ISP),两者之间的连接可能存在多次跳转。因此,除了地理信息外,引导服务器也会用已知IP地址之间的关联度和连接历史数据来分析和实时选择临近候选节点。举例来说,空间查询后的候选节点还需要进行第二轮筛选,从而剔除那些与观众使用不同ISP的节点。
智能播放器客户端
每一个播放器客户端都能承担视频播放或缓存节点的角色,也可以同时扮演两者。客户端连入Theta网络后即可从引导服务器获得一份候选节点名单。紧接着,该节点又会进行速度测试和可用性测试,使名单进一步缩小,只留下具有最优性能和最可靠连接的节点,从而稳定、持续地传递视频流片段。在进行流媒体播放的同时,客户端会反复进行速度测试和可用性测试,以持续优化临近节点名单。
为避免服务质量(QoS)下降,本地缓存管理尤其重要。客户端播放器设有本地缓存,对已下载的流媒体数据进行缓冲。一旦已缓存的流媒体数据的长度低于某个设定的极限,播放器就会访问附近的节点,看看是否有自己需要的视频流片段。如果附近的节点都没有所需的片段,播放器就会从CDN网络获取数据。为获得尽可能好的服务质量,在播放流媒体时,播放器会定时从引导服务器上获取更新后的候选节点名单。
我们即将发布的第一版客户端视频播放器基于JavaScript/HTML5实现,使用WebRTC协议在对等节点之间传递视频。基于JavaScript的播放器易于集成整合,流媒体网站和平台只需在它们的网页里嵌入播放器,便可让其数以百万计的用户即刻使用Theta去中心化网络观看视频,并获得带宽公享的代币鼓励。这大大降低了Theta网格流媒体技术推广的阻力。
Theta也计划支持桌面和移动客户端。桌面端APP有着web/HTML5播放器所没有的优势,就算终端用户并没有在观看视频流,桌面客户端也可以在后台运行,支持视频流接力(在用户许可的前提下)。另外,Theta还在研究专门为流媒体接力和转播而设计的硬件、物联网设备及相关方案。这些设备有可能提供更好的可用性和带宽。
我希望这篇文章能让读者对Theta的混合网格流媒体技术有所了解。在接下来的文章中,我们将会继续深入介绍流媒体与区块链技术的结合,讨论如何透明、高效地对视频中继缓存节点提供代币奖励的问题。请一定要密切关注我们!
THETA团队
期待您的反馈
领取专属 10元无门槛券
私享最新 技术干货