gossip protocol 也叫 epidemic protocol (流行病協議),實際上它還有很多別名,比如:「流言演算法」、「疫情傳播演算法」等。
這個協議的作用就像其名字表示的意思一樣,非常容易理解,它的方式其實在我們日常生活中也很常見,比如電腦病毒的傳播,森林大火,細胞擴散等等。
gossip protocol 最早是在 1987 年發表在 acm 上的** 《epidemic algorithms for replicated database maintenance》中被提出。主要用在分布式資料庫系統中各個副本節點同步資料之用,這種場景的乙個最大特點就是組成的網路的節點都是對等節點,是非結構化網路,這區別與之前介紹的用於結構化網路中的 dht 演算法 kadmelia。
我們知道,很多知名的 p2p 網路或區塊鏈專案,比如 ipfs,ethereum 等,都使用了 kadmelia 演算法,而大名鼎鼎的 bitcoin 則是使用了 gossip 協議來傳播交易和區塊資訊。
實際上,只要仔細分析一下場景就知道,ethereum 使用 dht 演算法並不是很合理,因為它使用節點儲存整個鏈資料,不像 ipfs 那樣分片儲存資料,因此 ethereum 真正適合的協議應該像 bitcoin 那樣,是 gossip 協議。
這裡先簡單介紹一下 gossip 協議的執行過程:
gossip 過程是由種子節點發起,當乙個種子節點有狀態需要更新到網路中的其他節點時,它會隨機的選擇周圍幾個節點散播訊息,收到訊息的節點也會重複該過程,直至最終網路中所有的節點都收到了訊息。這個過程可能需要一定的時間,由於不能保證某個時刻所有節點都收到訊息,但是理論上最終所有節點都會收到訊息,因此它是乙個最終一致性協議。
1)擴充套件性
網路可以允許節點的任意增加和減少,新增加的節點的狀態最終會與其他節點一致。
2)容錯
網路中任何節點的宕機和重啟都不會影響 gossip 訊息的傳播,gossip 協議具有天然的分布式系統容錯特性。
3)去中心化
gossip 協議不要求任何中心節點,所有節點都可以是對等的,任何乙個節點無需知道整個網路狀況,只要網路是連通的,任意乙個節點就可以把訊息散播到全網。
4)一致性收斂
gossip 協議中的訊息會以一傳
十、十傳百一樣的指數級速度在網路中快速傳播,因此系統狀態的不一致可以在很快的時間內收斂到一致。訊息傳播速度達到了 logn。
5)簡單
gossip 協議的過程極其簡單,實現起來幾乎沒有太多複雜性。
márk jelasity 在它的 《gossip》一書中對其進行了歸納:
分布式網路中,沒有一種完美的解決方案,gossip 協議跟其他協議一樣,也有一些不可避免的缺陷,主要是兩個:
1)訊息的延遲
由於 gossip 協議中,節點只會隨機向少數幾個節點傳送訊息,訊息最終是通過多個輪次的散播而到達全網的,因此使用 gossip 協議會造成不可避免的訊息延遲。不適合用在對實時性要求較高的場景下。
2)訊息冗餘
gossip 協議規定,節點會定期隨機選擇周圍節點傳送訊息,而收到訊息的節點也會重複該步驟,因此就不可避免的存在訊息重**送給同一節點的情況,造成了訊息的冗餘,同時也增加了收到訊息的節點的處理壓力。而且,由於是定期傳送,因此,即使收到了訊息的節點還會反覆收到重複訊息,加重了訊息的冗餘。
gossip 有兩種型別:
rumor-mongering 是 sir model,節點有三種狀態,suspective,infective 和 removed,叫做 complex epidemics。
其實,anti-entropy 反熵是乙個很奇怪的名詞,之所以定義成這樣,jelasity 進行了解釋,因為 entropy 是指混亂程度(disorder),而在這種模式下可以消除不同節點中資料的 disorder,因此 anti-entropy 就是 anti-disorder。換句話說,它可以提高系統中節點之間的 similarity。
在si model下,乙個節點會把所有的資料都跟其他節點共享,以便消除節點之間資料的任何不一致,它可以保證最終、完全的一致。
由於在 si model 下訊息會不斷反覆的交換,因此訊息數量是非常龐大的,無限制的(unbounded),這對乙個系統來說是乙個巨大的開銷。
但是在rumor mongering (sir model)模型下,訊息可以傳送得更頻繁,因為訊息只包含最新 update,體積更小。而且,乙個 rumor 訊息在某個時間點之後會被標記為 removed,並且不再被傳播,因此,sir model 下,系統有一定的概率會不一致。
而由於,sir model 下某個時間點之後訊息不再傳播,因此訊息是有限的,系統開銷小。
在 gossip 協議下,網路中兩個節點之間有三種通訊方式:
現在,我們通過乙個具體的例項來深入體會一下 gossip 傳播的完整過程
為了表述清楚,我們先做一些前提設定
(1)gossip 是週期性的散播訊息,把週期限定為 1 秒
(2)被感染節點隨機選擇 k 個鄰接節點(fan-out)散播訊息,這裡把 fan-out 設定為 3,每次最多往 3 個節點散播。
(3)每次散播訊息都選擇尚未傳送過的節點進行散播
(4)收到訊息的節點不再往傳送節點散播,比如 a -> b,那麼 b 進行散播的時候,不再發給 a。
這裡一共有 16 個節點,節點 1 為初始被感染節點,通過 gossip 過程,最終所有節點都被感染:
對於乙個節點數為 n 的網路來說,假設每個 gossip 週期,新感染的節點都能再感染至少乙個新節點,那麼 gossip 協議退化成乙個二叉樹查詢,經過 logn 個週期之後,感染全網,時間開銷是 o(logn)。由於每個週期,每個節點都會至少發出一次訊息,因此,訊息複雜度(訊息數量 = n * n)是 o(n^2) 。注意,這是 gossip 理論上最優的收斂速度,但是在實際情況中,最優的收斂速度是很難達到的。
假設某個節點在第 i 個週期被感染的概率為 pi,第 i+1 個週期被感染的概率為 pi+1 ,
1)則 pull 的方式:
2)push 方式:
可見,pull 的收斂速度大於 push ,而每個節點在每個週期被感染的概率都是固定的 p (0全文完!
P2P技術原理
組織結構 點對點技術又稱對等網際網路絡技術,是一種網路新技術,依賴網路中參與者的計算能力和頻寬,而不是把依賴都聚集在較少的幾台伺服器上。p2p網路通常用於通過adhoc連線來連線節點。這類網路可以用於多種用途,各種檔案分享軟體已經得到了廣泛的使用。p2p技術也被使用在類似voip等實時 業務的資料通...
P2P技術概要
p2p peer to peer 也就是 對等網路,即對等計算機網路,是一種在對等者 peer 之間分配任務和工作負載的分布式應用架構 1 是對等計算模型在應用層形成的一種組網或網路形式。peer 在英語裡有 對等者 夥伴 對端 的意義。因此,從字面上,p2p可以理解為對等計算或對等網路。國內一些 ...
P2P網路模型
1 靜態配置模型 靜態配置模型是一種相對靜態而簡單的對等點定位模型。在該模型中,每個對等點都確切地知道存在於其p2p 網路中其它對等點的位置以及它們所提供的共享資源內容。缺點 網路無法應付不能預知的隨機事件和臨時變更,比如對等點隨機進入和退出網路。優點 整個網路在外部攻擊面前表現得很穩固。2 動態配...