PPIO 在數據分發上有哪些優勢?

PPIO 是爲開發者打造的去中心化存儲與分發平臺,讓數據存儲更便宜、更高速、更隱私。官方網站是 https://pp.io 。PPIO 不僅僅是個存儲平臺,也是一個分發平臺。之前我們寫了許多文章介紹 PPIO 的存儲技術,這篇文章將重點介紹 PPIO 的分發技術。

什麼是數據分發

分發指的是在保證傳遞體驗的同時將同一份數據快速傳遞給很多人。這些人分佈在一定區域很多地方 (可能是一個國家),而且要保證數據傳輸的體驗。常用的分發場景有:靜態網頁、大文件下載、大圖片查看、流媒體點播、流媒體直播等。還有一些商業場景,如多路視頻通話、視頻會議等,其本質也是一種雙向的分發。

數據分發的關鍵技術和場景應用

#1. CDN & P2P

傳統意義上的分發叫做 CDN,Content Delivery Network (內容分發網絡),是一種構建在網絡之上的內容分發網絡,他的技術基本原理是把數據從源站推送到離用戶最近的服務器上,然後用戶直接從離自己最近的服務器獲取數據,從而獲得最好的用戶體驗。依靠部署在各地的邊緣服務器,通過中心平臺的負載均衡、內容分發、調度等功能模塊,使用戶就近獲取所需內容,降低網絡擁塞,提高用戶訪問響應速度和命中率。CDN 的關鍵技術主要有內容存儲和分發技術。

CDN

分發是 P2P 技術的最古老的應用。P2P 網絡從最早的的Napster 到後來的 Edonkey,Bittorrent 等,其應用場景本身都是把同一個內容,傳遞給更多的人,因爲越多的人使用同一個內容,就意味着上傳的節點越多,速度也就能越快,這本身就是分發的場景。

雖然同樣是分發技術,P2P 和 CDN 的實現方式卻不同。CDN 中每個分發的節點都是服務器,CDN 網絡最終形成的是樹狀結構,一級一級的分發數據。而 P2P 網絡則不同,P2P 中的每個客戶端都具有上傳能力,當客戶端在下載數據的同時其實也上傳數據給別的客戶端。如果每個客戶端都按照這個邏輯來,就形成了一個人人爲我,我爲人人的生態系統。

P2P

P2P 對比 CDN 具有的優勢有:

  1. P2P 是多點下載,能更充分的使用自身網絡,下載速度更快。特別是對於服務器(也包括 CDN 節點)距離客戶端比較遠的時候,這裏說的是網絡距離。
  2. P2P 的多點下載模式下,單節點的下載讀取抖動不會引起整體下載速度的波動
  3. 節約資源發佈者帶寬

P2P 對比 CDN 的缺點有:

  1. P2P 實現比較複雜,CDN 簡單。P2P 的服務在面對業務變化的時候,沒有 CDN 快。
  2. P2P 在啓動的時候,有冷啓動問題需要解決,要找到優質的其他節點需要些時間;所有在要求快速啓動的業務上,P2P 不如 CDN 便利。
  3. 對運營商來說,P2P 的可控性不如 CDN,運營商會研究如何限制 P2P,降低了 P2P 的用戶體驗。

P2P 和 CDN 並不矛盾,P2SP 技術就是 P2P 和 CDN 技術的結合,也就是對客戶端來說,既可以從 CDN 節點上下載,也可以從 P2P 網絡中下載數據。使用 P2SP 構建的服務,也被稱爲 PCDN 服務。

#2. 視頻的應用在分發中很常見

分發應用是個重流媒體應用,視頻點播,如 Youtube, Netflix,還有視頻直播,如 Hulu 等,以及短視頻,如Tiktok 等,都是分發類的應用場景。據2018年10月的報告,視頻應用佔互聯網流量下載量的58%左右。所以,PPIO 在做分發技術時候,會花大量的精力把視頻類的服務質量 QoS 做好。

摘自 Sanvine The Global Internet phenomena report

#3. 分發本身是和存儲密不可分的

存儲和分發的實質都是數據的讀取和使用,兩者是不可能分割的。當一個數據存儲在 PPIO 網絡中,如果只有一個人會讀取並使用,就是存儲;如何有很多人讀取或者使用,就是分發。只是存儲場景和分發場景,設計有些不同,服務質量的要求也不一樣。

PPIO 爲分發場景進行的技術設計

PPIO 的核心團隊在做過 PPTV,這是曾經最大的 P2SP 華語視頻平臺,用戶數做到了4.5億的規模。近十年的 P2P 視頻產品經驗讓我們團隊積累了豐富的 P2P 和分發類項目的技術、產品和運營實踐。我們非常瞭解分發場景對技術的多樣化甚至刁鑽的需求。這些經驗讓我們可以爲分發類產品做出符合實際需要的技術架構。以下是 PPIO 爲分發場景所做的技術設計。

#1. 重疊網絡

PPIO 支持重疊網絡 (Overlay 網絡),每個存儲節點 (Storage Node/Miner) 都會將與自己物理連接較快的存儲節點作爲自己的鄰居,在數據傳遞和信息交互過程,充分發揮臨近節點的優勢,使得網絡效率大大提高。

#2. 流媒體傳輸的優化

前面提到,流媒體是分發場景的最主要應用,對流媒體的支持以及做到足夠好的服務質量 (QoS) 非常重要。PPIO 實現了針對流媒體的由數據來驅動的特別下載算法,從而保證實時流媒體的流暢播放。

流媒體傳輸優化算法

#3. P4P 技術的支持

P2P 會產生大量的網絡間的跨 ISP 流量。一般來說,網絡運營商 ISP 的網絡內的流量是沒有額外費用的,但是,運營商之間傳輸所產生的通訊會按照流量來計費。有沒有什麼辦法能夠做到既保留 P2P 技術的優勢,又能做到降低跨 ISP 流量呢?這就是 P4P 技術。

P4P 全稱 Proactive Network Provider Participation for P2P,在加強相同服務供應商 (ISP) 內網絡流量的同時,降低了骨幹網絡傳輸壓力和運營成本,從而也提高了 P2P 文件的傳輸性能。與 P2P 隨機挑選節點的方式不同,P4P 模式可以協調網絡拓撲數據,有效選擇節點,從而提高網絡路由效率。

PPIO 團隊之前在做 PPTV 的時候有豐富地和運營商打交道的經歷,在降低運營商的跨 ISP 流量有獨特的方法。而在 P4P 技術出現之前,運營商都在想辦法限制使用 P2P 的技術。

#4. 熱門內容的自適應調度

PPIO 支持 P2P-CDN。在 P2P-CDN 裏面,熱門內容的自適應調度是非常重要的,也是提高服務質量 (QoS) 的重要手段。熱門內容的自適應調度就是當一個文件在網絡中變得受歡迎之後,系統會自動觸發調度機制,讓更多的存儲節點存儲這個文件。這樣的設計既能提高用戶體驗,也能提高更多存儲節點的收益。反之,當很受歡迎的文件失去熱度之後,系統則會自適應地減少存儲此文件的存儲節點的數量。這樣就形成一種動態的平衡。PPIO 在熱門內容調度算法上下了很大的功夫。

PPIO 熱門內容的自適應系統

#5. 人爲預熱機制

除了熱門內容的自適應調度之外,PPIO 還提供了一套人爲預熱的機制,那麼人爲預熱機制適用於什麼場景呢?

比如說大家在看一部電視劇,前面一集看的人已經很多了,那麼大概率地預測,下一集看的人也會很多。所以發佈方在更新新的一集的時候,就可以提前推送新的一集的資源到更多礦工那裏。這樣當大家觀看下一級電視劇的時候,已經有足夠多的存儲節點在做種了。這樣在內容發佈前就能充分利用 P2P 網絡的優勢,大大提升觀看體驗。類似的場景還有很多,只要人爲可預知的熱門內容都可以預熱來提升冷啓動過程中的體驗。

內容發佈者可以支付費用來指定需要預熱的內容,並且可以指定執行預熱的區域、ISP、時間段。根據區域、ISP 和時段的不同,存儲的價格也會有不同。PPIO 中預熱的實現是和去中心化存儲的原理基本一致的,因爲礦工不知道這個內容是不是真的很熱,所以需要收取費用來對衝風險。但是預熱和存儲不同的是,預熱採用的是全副本,而存儲主要採用的糾刪碼,後面我會解釋爲什麼會有所不同。

#6. P2P 直播的考慮

PPIO 不僅僅考慮了流媒體點播的下載,而且還考慮實時流媒體直播。直播在本質上就是一堆連續的小文件的分發,只是這些小文件他們的生命週期比較短,一段時間過後就沒有用了,但同時也要求這些小文件的分發效率要非常高,要非常快速地分發到儘可能多的節點上。直播的整體架構和 PPIO 的流媒體體系是一致的,只是切分文件的方式,下載算法有所不同。

直播分爲兩類,一類是高延時直播,主要用於賽事,新聞等,這類直播的特點是一個直播頻道,可能觀看的用戶數很多很多,但是大家對節目的時延不是那麼敏感。還有一類是低延時直播,主要用於主播,秀場等模式,這種直播的特點是,由於涉及到和主播之間的互動,這類對延時的要求非常低,一般在 5s 之內,也就是當動作發生到看到畫面最多隻有 5s 的時間,但是用戶規模一般不大。

PPIO 面對這兩種直播場景,使用一推二拉三補償的方案,做了一致性兼容,只是參數的不同,就能很好地支持兩種模式。PPIO 的創始團隊之前是做 P2P 直播起家的,做過全世界最大的 P2P 直播平臺,PPTV,在直播領域的積累也是非常豐富的。

#7. PPIO PCDN 的設計

PCDN 即 CDN acceleration with P2P,是利用 P2P 技術和大量租戶節點的帶寬和磁盤資源來做 CDN 分發加速。PPIO 的設計是支持 PCDN 的,並且提供了 DApp 開發接口,開發者將很容易使用 PCDN 接口爲自己的內容服務提供加速。

應用中的存儲內容會首先在發佈源節點進行發佈,在源節點不下線的前提下,能夠持續提供下載服務。然而當從同一個源節點下載的用戶數增加後,該節點的帶寬將被消耗殆盡,而每個用戶的下載速度也會降低。通過 PCDN,網絡中的大量租戶節點開始保存和提供同樣內容的下載。用戶因此可以從多個節點下載內容,用戶體驗大幅提高。

PCDN 驅動數據流動

PCDN 在 PPIO 網絡中有兩種實現方式:

  1. 充分利用3.2.4中熱門內容按照預測調度的機制。PPIO 本身有根據熱度來預測調度的功能。當發現一個熱度比較好的內容時候,有其他租戶也主動拉過來提供服務,從而增加了網絡的副本數,而副本數越多,最終用戶 P2P 下載的效果也就越好。
  2. 源節點發布內容的時候,可以指定 PCDN 定向緩存副本數。DApp 開發者可以根據自身需求,通過 PCDN API 接口,強制對一個內容設置緩存,可以在設定哪個網絡區域,及地理區域(國家,ISP,州,市 四元組)的緩存數量。PPIO 會在這些定向區域的範圍內尋找租戶節點,以存儲數據並提供下載服務。因爲這是通過 API 指定的租戶,所以源節點在這種情況下要支付給這部分租戶相應的存儲時空費用,調度費和時空證明費。上圖中展示了這種情況下網絡中 PCDN 驅動的數據流動。

PPIO 針對分發和存儲的設計有哪些不同

PPIO 的定位是做存儲與分發,那麼存儲和做分發在技術上還有什麼不同呢?主要有以下幾點。

#1 全副本和糾刪碼

分發和存儲的最終目的是不同的。分發講究的是如何快地獲取內容。一般的分發場景中,源節點是在的,在所以不用擔心數據會丟失,即使不小心被存儲節點搞丟了,也能從源節點找到。所以在分發場景中我們選擇採用全副本的算法。

而存儲則不同,存儲首先要保證不能丟數據, 提高內容不丟失率。如果採用全副本算法的方式,不知道要存多少副本才能做到11個9的不丟失率。而在適用糾刪碼技術候,做到11個9的不丟失率,需要的冗餘空間將會少很多,這是提高內容不丟失率的最有用方案。

簡單地來說,分發追求高速,所以用全副本方案爲主;而存儲追求極高的內容不丟失率,所以適用糾刪碼技術爲主導。

#2 內存緩存

分發和存儲還有一個很大的區別。分發往往有很強的頭部效應而存儲沒有。

分發的頭部效應,也叫二八原則,就是20%的內容擁有80%的流量。而深入研究可能會發現,頭部的20%的內容裏面,也適用二八原則。所以在分發中,我們通常把內容分爲頭部內容,中部內容和尾部內容:頭部的流量很集中,中部的流量較少,尾部的流量非常零散。在分發的場景中,從成本的角度考慮。頭部和中頭部內容適合使用內存的緩存,中尾部內容適合使用 SSD 等高速存儲介質,而尾部內容處於成本角度考慮,則更適合機械硬盤。

存儲沒有頭部效應,都是尾部內容,因爲很少有人擁有相同的內容。存儲也分爲熱存儲、溫存儲和冷存儲,熱存儲指的是數據在寫入之後,經常會被讀取;溫存儲指得是數據在寫入之後,很少被讀取,也可能永遠不被去讀,如私人網盤的老數據;冷存儲指的是寫入後,大概率是不會使用,即使使用也不會要求那麼及時,如監控數據。

在 PPIO 的網絡中,熱存儲主要使用全副本和糾刪碼並存方案,全副本保證適當地高速傳輸,糾刪碼能將數據的丟失率降到很低,同時推薦承載熱存儲的存儲節點使用 SSD 等高速硬盤。而溫存儲和冷存儲使用純糾刪碼方案,因爲讀取的次數不多,推薦使用機械硬盤,這樣能將成本降到最低。

所以對於存儲節點來說,如果要獲得最大的收益,其機器配置的參數也要與其提供的服務相搭配。

PPIO 更重視分發場景

PPIO 項目相當於其他去中心化存儲區塊鏈項目,如 Filecoin 和 Storj,是更重視分發場景的,其他項目都把重心放在了存儲場景上。這裏有個簡易地對比表格分析三個存儲鏈,並給出對比信息。

PPIO和其他項目對比

綜上所訴,這些就是 PPIO 在數據分發領域的優勢。如果你想了解更多,歡迎加入我們的開發者社區共同討論!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章