Consul:Gossip協議


  Consul使用gossip協議來管理成員和廣播消息到集群。所有這些都是通過使用Serf庫提供的。Serf使用的gossip協議基於“SWIM: Scalable Weakly-consistent Infection-style Process Group Membership Protocol”,有一些小的修改。更多關於Serf的協議細節見此文檔

Consul中的Gossip

  Consul使用兩個不同的gossip池。我們分別稱為LAN和WAN池。每個數據中心有一個LAN gossip池,它包含數據中心的所有成員——client和server。LAN池用於幾個目的:成員關系運行client自動發現server,減少配置量;分布式的故障檢測允許故障檢測的工作由整個集群承擔,而不是集中在少數server上;最后gossip池允許可靠和快速的事件廣播,比如leader選舉。

  WAN池是全局唯一的,以為所有的server都應該加入WAN池,不論是哪個數據中心的。WAN池提供的成員關系允許server執行跨數據中心請求。集成的故障檢測允許Consul優雅的處理整個數據中心失聯,或者遠程數據中心只有一個server。

  所有這些特征通過Serf提供。它被用來作為一個嵌入式的包來提供這些特征。從用戶的角度,這是不重要的,因為這些抽象應該被Consul屏蔽。然而這對於開發者理解這個包是如何應用是很有用的。

Lifeguard Enhancements

  SWIM假設本地節點是健康的,在這個意義上軟實時處理數據包是可能的。然而,在本地節點正處於CPU或者網絡資源枯竭的情況下,這個假設就不成立了。結果就是serfHealth檢查狀態會偶爾的抖動,導致錯誤的報警,增加遙測噪聲,和簡單的導致整個集群浪費CPU和網絡資源來診斷一個可能並不真的存在的故障。

  Lifeguard通過增加SWIM徹底解決了這個問題。Lifeguard的更多的細節請看Serf的gossip協議引導部分


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM