概況
Gossip 協(xié)議,利用一種隨機帶有傳染性的方式將信息傳播到整個網(wǎng)絡(luò)中,并在一定的時間內(nèi)使得所有節(jié)點數(shù)據(jù)一致。
一些定義
直接郵寄
直接將更新數(shù)據(jù)發(fā)送到對應(yīng)節(jié)點,發(fā)送失敗將數(shù)據(jù)緩存下來然后重傳
反熵
每隔一段時間隨機選擇某個其他節(jié)點相互交換自己的所有數(shù)據(jù)消除兩者之間的數(shù)據(jù)差異,實現(xiàn)數(shù)據(jù)最終一致。
實現(xiàn)方式有:推、拉、推拉
每次反熵都需要對比所有的數(shù)據(jù),所以很消耗性能和通信,可以通過校驗和等機制減少通信數(shù)據(jù)量
謠言傳播
當(dāng)一個節(jié)點有了新的數(shù)據(jù)后,這個節(jié)點變成活躍狀態(tài),周期地聯(lián)系其他節(jié)點發(fā)送新數(shù)據(jù),直到所有節(jié)點都有了新的數(shù)據(jù)。
因為傳遞到別的節(jié)點后,別的節(jié)點也會變成活躍節(jié)點去傳播這個數(shù)據(jù),所以就像謠言一樣廣泛被傳播。
這個和網(wǎng)絡(luò)中的泛洪更新時類似的。
過程
其實 gossip 協(xié)議的過程非常簡單
- 收到新數(shù)據(jù)的節(jié)點將數(shù)據(jù)直接郵遞給別人
- 通過謠言不斷傳播
- 最終所有節(jié)點數(shù)據(jù)一致
- 過程中如果出現(xiàn)意外進行重傳
- 定期進行反熵保證數(shù)據(jù)最終一致
總結(jié)
其實 gossip 就是一個不斷傳播更新的過程,只是在過程中添加了協(xié)調(diào)讓節(jié)點的數(shù)據(jù)竟可能去往最終一致上靠。很顯然,雖然數(shù)據(jù)最終一致,但是過程中肯定會有不一致的情況存在,雖然更新收斂速度很快,但是還是存在,并且網(wǎng)絡(luò)中的通信會很頻繁也是一個問題。
設(shè)計合理的反熵策略,利用一個閉環(huán)的更新或者是一個快速比較器或許能更加快速的得到同步的信息。