「分散式技術專題」基於Gossip協議的去中心服務
概述
Gossip 協議可以翻譯為流言協議。它是在 1987 年發表在 ACM 上的論文 《Epidemic Algorithms for Replicated Database Maintenance》中被提出的。論文中給 Gossip 協議的定義是一個以流行病傳播的方式為基礎的計算機點對點通訊程式或過程(a procedure or process of computer peer-to-peer communication that is based on the way epidemics spread)。主要是一些分散式系統用來確保對等節點之間的資料同步。基於 Gossip 協議去傳遞公共資料的方法就是依靠每個節點來將資料傳遞給其“鄰居”,類似於生物中病毒的傳播形式,所以 Gossip 協議有的時候也會被稱為流行病協議(epidemic protocol)。
傳播演示
我們去理解 Gossip 協議的傳播時可以直觀地理解為謠言的傳播,一個謠言由某一個人發起後,謠言會不停地散步到每一個人的身邊人,這個過程是一個非同步的過程,可以用一個圖來感受一下。
假設謠言由一個人發起,之後每一個人最多傳播兩個人,可以看到 16 個人最終在五個階段內謠言傳播完成。從圖中可以看出 Gossip 協議的傳播是有著非同步的優點,而且最終所有節點都會接收到資訊。不過也可以看出比較明顯的缺點,一是沒有辦法確定一個準確的時間來保證所有節點都接收到了訊息,二是從第四階段、第五階段可以看出訊息傳播過程中出現了訊息冗餘的情況,第五階段尤為明顯。
型別
•傳播協議(Dissemination Protocols)或者又稱為謠言散播協議(Rumor-mongering Protocols)。此類協議通常是利用 gossip 來傳播資訊,但在一個事務從發生到提交的過程中存在潛在的高延遲,但該缺點在對操作一些比較陳舊的資料時不會有太嚴重的損失。
•計算聚合協議(Protocols that compute aggregates)。此類協議透過在網路中的節點處取樣資訊,並將這些值組合以得到一個系統範圍的值(某些測量節點的最大值,最小值等等)來計算整個網路範圍的集合。關鍵的要求是集合必須可以透過固定大小的成對資訊交換來計算;這些通常在系統大小對數的若干輪資訊交換之後終止,到那時,一個全對全的資訊流模式將已經建立。
優勢
有極強的擴充套件性。可以允許任意節點的新增或刪除,並且新新增的節點狀態可以和其他節點保持一致。
有比較好的容錯。任何一個節點的當機或重啟都不會影響到 Gossip 訊息的傳播。
一致性收斂。 Gossip 協議的訊息是以指數級的速度進行傳播的,系統的不一致性會在短時間內收斂一致。
去中心化。所有節點都是對等的,每個節點都不需要知道現在整個叢集的狀態,只要網路聯通就能透過 gossip 把訊息傳播出去。
以上為基於 Gossip協議的去中心服務, 「分散式技術專題」是國產資料庫 hubble 團隊精心整編,專題會持續更新,歡迎大家保持關注。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70026685/viewspace-2935103/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- GRIT:eBay基於微服務的分散式事務協議微服務分散式協議
- 「分散式技術專題」事務基礎及特性分散式
- 【分散式技術專題】「分散式技術架構」一文帶你釐清分散式事務協議及分散式一致性協議的演算法原理和核心流程機制(Paxos篇)分散式架構協議演算法
- 「分散式技術專題」去中心化服務與中心化服務的優劣分散式中心化
- 分散式技術專題-分散式協議演算法-帶你徹底認識Paxos演算法、Zab協議和Raft協議的原理和本質分散式協議演算法Raft
- 「分散式技術專題」併發系列一:基於加鎖的併發控制分散式
- 「分散式技術專題」併發系列二:基於時間的併發控制分散式
- 「分散式技術專題」基於代價解析的最優路徑規劃分散式
- 搞懂分散式技術3:初探分散式協調服務zookeeper分散式
- Gossip協議和Grpc協議的區別Go協議RPC
- Gossip 協議詳解Go協議
- 啥是Gossip協議?Go協議
- 「分散式技術專題」副本機制分散式
- 「分散式技術專題」故障恢復分散式
- 分散式協議分散式協議
- Gossip協議也叫Epidemic協議(流行病協議)Go協議IDE
- Cassandra Gossip協議的二三事兒Go協議
- Zookeeper分散式過程協同技術 - 概念及基礎分散式
- 「分散式技術專題」SQL 解析的 AP/TP 判別分散式SQL
- 搞懂分散式技術2:分散式一致性協議與Paxos,Raft演算法分散式協議Raft演算法
- MySQL 中基於 XA 實現的分散式事務MySql分散式
- 「分散式技術專題」資料切分與合併分散式
- 揭祕GBase 8c分散式事務處理核心技術之2PC協議分散式協議
- 「分散式技術專題」常用的 SQL 運算元介紹分散式SQL
- 搞懂分散式技術17:淺析分散式事務分散式
- 分散式概念與協議分散式協議
- 分散式技術中不可或缺的分散式互斥方案分散式
- 基於HTTP協議的幾種實時資料獲取技術HTTP協議
- 基於隱私保護技術的DNS通訊協議介紹DNS協議
- 搞懂分散式技術4:ZAB協議概述與選主流程詳解分散式協議
- 技術分享| 基於 Etcd 的分散式鎖實現原理及方案分散式
- 一萬字詳解 Redis Cluster Gossip 協議RedisGo協議
- iOS中基於協議的路由設計iOS協議路由
- 基於 IJKPlayer-concat 協議的視訊無縫拼接技術實現協議
- 「分散式技術專題」事務型、分析型資料資源隔離機制分散式
- 構建基於RocketMQ的分散式事務服務MQ分散式
- 基於可靠訊息方案的分散式事務(二):Java中的事務分散式Java
- 分散式應用中的一致性協議分散式協議