【Consul】Consul架构-Gossip协议
?Consul使用gossip協議管理成員關系、廣播消息到整個集群。詳情可參考Serf library,Serf使用到的gossip協議可以參閱"SWIM: Scalable Weakly-consistent Infection-styleProcess Group Membership Protocol",
? ? ? ?本節主要講解consul內部技術細節,使用consul不需要必須了解這些細節的。這些文章是為那些不愿意深入源代碼但是希望技術細節的人準備的。
1.1 Gossip in Consul
? ? ? ?Consul利用兩個不同的gossip pool。我們分別把他們稱為局域網池(LAN Pool)或廣域網池(WAN Pool)。每個Consul數據中心都有一個包含所有成員(Server和Client)的LANgossip pool。LAN Pool有如下幾個目的:首先,成員關系允許Client自動發現Server節點,減少所需的配置量。然后,分布式故障檢測允許的故障檢測的工作在某幾個Server幾點執行,而不是集中整個集群所有節點上。最后,gossip允許可靠和快速的事件廣播,比如,Leader選舉。
? ? ? ?WAN Pool是全局唯一的,無論屬于哪一個數據中心,所有Server應該加入到WAN Pool。由WAN Pool提供會員信息讓Server可節電執行跨數據中心的請求。集成中故障檢測允許Consul妥善處理整個數據中心失去連接,或在遠程數據中心只是單個的Server節點。
? ? ? ?所有這些功能都是通過利用Serf提供。從用戶角度來看,它是作為一個嵌入式庫提供這些功能。但其被Consul屏蔽,用戶無需關心。作為開發人員可以去了解這個庫是如何利用。
?
1.2 Lifguard增強
? ? ? ?SWIM假設本地節點是健康的,是的軟實時處理數據包稱為可能。然而,當本地節點正CPU或網絡耗盡時,該假設就稱為了現實。結果是,serfhealth狀態就會“抖動”——擺來擺去,造成虛假報警,增加噪聲遙測,簡單可預見的結果就是——導致集群浪費CPU和網絡資源的來處理不存在的故障。
? ? ? ?Lifeguard通過SWIM完美的解決了該問題,Serf's gossip protocolguide。
總結
以上是生活随笔為你收集整理的【Consul】Consul架构-Gossip协议的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 搭建consul 集群
- 下一篇: raft原理的动画演示