Consul:Gossip協議

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

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屏蔽。然而這對於開發者理解這個包是如何應用是頗有用的。server

Lifeguard Enhancements

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

  Lifeguard經過增長SWIM完全解決了這個問題。Lifeguard的更多的細節請看Serf的gossip協議引導部分事件

相關文章
相關標籤/搜索