gossip協議的原理和實戰應用

2021-08-17 15:35:50 字數 3273 閱讀 5889

先理解一下gossip協議:在乙個有界網路中,每個節點都隨機地與其他節點通訊,經過一番雜亂無章的通訊,最終所有節點的狀態都會達成一致。每個節點可能知道所有其他節點,也可能僅知道幾個鄰居節點,只要這些節可以通過網路連通,最終他們的狀態都是一致的,當然這也是疫情傳播的特點。

簡單的描述下這個協議,首先要傳播謠言就要有種子節點。種子節點每秒都會隨機向其他節點傳送自己所擁有的節點列表,以及需要傳播的訊息。任何新加入的節點,就在這種傳播方式下很快地被全網所知道。這個協議的神奇就在於它從設計開始就沒想到資訊一定要傳遞給所有的節點,但是隨著時間的增長,在最終的某一時刻,全網會得到相同的資訊。當然這個時刻可能僅僅存在於理論,永遠不可達。

這個演算法已經有大神實現了,參見memberlist

我這裡先通過乙個demo演示一下,怎麼使用

//廣播資料

//建立gossip網路

m, err := memberlist.create(c)

if err != nil

//第乙個節點沒有member,但從第二個開始就有member了

}這裡通過乙個簡單的http服務查詢和插入資料,找兩台機器,第一台執行

memberlist
會生成gossip監聽的服務ip和埠

使用上面的ip和埠在第二台執行

memberlist --members=***.***

.***

.***:***x

那麼乙個gossip的網路就搭建完成了。

curl "http://另一台機器:4001/get?key=foo"

Gossip協議的乙個概率問題

今日看到redis的集群用到了 gossip 協議,於是網上搜尋,大致看了這篇文章 其中關於概率這部分讀起來總是不解,如下所示 在文中的模型下,很顯然最後都會被感染,因為只有兩種型別,感染者和非感染者,而這裡的被感染概率越來越小最後趨於0,似乎不符合結果,因為是百分之百會被感染,所以猜測這裡描述的大...

4 11 和Gossip相關的配置引數

和gossip相關的配置引數如下所示 啟動連線節點,可以是多個 bootstrap 127.0.0.1 7051 自動選擇主節點還是指定主節點 useleaderelection false 只在useleaderelection設定為false的時候生效 orgleader true 本地節點的i...

XMPP 協議的原理和介紹

xmpp 協議是什麼 xmpp 的優點 1 xmpp 協議是公開的,並不屬於某個機構或者個人 2 xmpp 協議具有良好的擴充套件性,xmpp 充分的發揮了 xml 結構化資料的通用傳輸層的作用,它將出席和上下文敏感資訊嵌入到 xml 結構化資料中,從而使得資料以高效率傳送。3 分布式的網路架構 它...