【视频直播场景下P2P对等网技术①】挑战与形式化分析
我在熊猫直播亲自主持的最后一个项目,就是要试图通过P2P对等网技术来切实降低互联网视频直播的流量成本,对此有一些数据上&经验的积累和检验。很遗憾没有机会看到最后的结果,但也希望我们的经验能够帮助这个行业本身的成长,所以在此分享给大家。接下来的几篇文章,我将就P2P的设计、验证与经验,与大家一一分享。
让我们来设想一下场景:某赛事总决赛,数百万人同时在看比赛直播,这时一个新的观众刚打开直播,那么从这几百万人中选取哪些来建立P2P连接来拉直播流比较高效稳定呢?
接下来我们来分析一下这里面的约束条件:
- 该对等网络规模很大,有数百万个节点;
- 直播的业务场景表示每个正常观看的节点获取到的信息是相同的(不同于点播,直播视频流的时间轴是对齐的,至少是我们希望对齐的)(考虑到容错机制,至少是等价的);
- 每个节点的上行带宽是有限的,也就是说它能分享出去的流的份数是有限的;
- 每个节点都有一定概率随时掉线,为了增加视频流的稳定性,拉流应该有一定的冗余度;
- 我们需要知道这个新的节点与网络中另外数百万个节点建立连接的性能和成本;
基于上面的条件,我们做形式化定义如下:
- 设图 G G G是一个有序三元组, G = ( V ( G ) , E ( G ) , ω G ) G=(V(G),E(G), \omega_G) G=(V(G),E(G),ωG),
- 其中 V ( G ) V(G) V(G)是图G的顶点集 ,内部的元素称为图 G G G的顶点(Vertex)
- E ( G ) E(G) E(G)是与 V ( G ) V(G) V(G)不相交的边集,内部的元素称为图 G G G的边(Edge)
- 对 ∀ v ∈ V \forall v \in V ∀v∈V, 记 d o ( v ) d_o(v) d