【視頻直播場景下P2P對等網技術①】挑戰與形式化分析
我在熊貓直播親自主持的最後一個項目,就是要試圖通過P2P對等網技術來切實降低互聯網視頻直播的流量成本,對此有一些數據上&經驗的積累和檢驗。很遺憾沒有機會看到最後的結果,但也希望我們的經驗能夠幫助這個行業本身的成長,所以在此分享給大家。接下來的幾篇文章,我將就P2P的設計、驗證與經驗,與大家一一分享。
讓我們來設想一下場景:某賽事總決賽,數百萬人同時在看比賽直播,這時一個新的觀衆剛打開直播,那麼從這幾百萬人中選取哪些來建立P2P連接來拉直播流比較高效穩定呢?
接下來我們來分析一下這裏面的約束條件:
- 該對等網絡規模很大,有數百萬個節點;
- 直播的業務場景表示每個正常觀看的節點獲取到的信息是相同的(不同於點播,直播視頻流的時間軸是對齊的,至少是我們希望對齊的)(考慮到容錯機制,至少是等價的);
- 每個節點的上行帶寬是有限的,也就是說它能分享出去的流的份數是有限的;
- 每個節點都有一定概率隨時掉線,爲了增加視頻流的穩定性,拉流應該有一定的冗餘度;
- 我們需要知道這個新的節點與網絡中另外數百萬個節點建立連接的性能和成本;
基於上面的條件,我們做形式化定義如下:
- 設圖是一個有序三元組, ,
- 其中是圖G的頂點集 ,內部的元素稱爲圖的頂點(Vertex)
- 是與不相交的邊集,內部的元素稱爲圖的邊(Edge)
- 對, 記表示以頂點爲起點的邊的條數; 記表示以頂點爲終點的邊的條數
基於上面分析,約束條件的形式化描述爲:
- ,即要滿足視頻流正常播放,需要同時有至少路流。同時,記爲系統設計冗餘度。
- ,等價於節點最大上行帶寬。
- 是聯通性能函數,,稱爲這條邊的聯通性能。
帶入場景,假設節點加入目標對等網絡前一刻的網絡有個頂點,則此時的核心問題是在個頂點中選個符合約束條件的且總聯通性能最大的組合給新加入的節點拉流。
順着這個場景分析,我們看看要讓新加入的節點獲得最好的收視效果,還需要在解決哪些核心問題。
- 對於,如何度量其聯通性能,也即是一個挑戰。這需要了解運營商複雜的網絡拓撲才能預測。
- 對於,令, 則對於新加入的節點來說,有種可能的組合。考慮到可能會比較大(幾百萬),所以對於每個新節點的加入,計算量還是比較大的。
基於業務場景,考慮到中業已建立的連接不能因爲新節點的加入而重構,可見對於整個來說,新節點按照最佳策略加入後形成的也是全局最優的,這顯然符合貪心算法的構造過程。