Consul 架構

Consul是一個複雜的系統,它有不少不一樣的可組裝的部分。爲了幫助Consul的用戶和開發者造成一個它如何工做的運轉模型,本文介紹它的系統架構。html

注意:本文覆蓋了Consul的內部技術細節。高效的操做和使用Consul並不須要你知道這些細節。這些細節記錄在這裏是爲了方便那些但願學些Consul,可是並無去探尋源碼的人的。因爲每一個節點都必須運行一個agent,緩存

術語

在描述架構以前,這裏提供了一些術語來幫助聲明正在探討的東西:安全

  • Agent——agent是一直運行在Consul集羣中每一個成員上的守護進程。經過運行 consul agent 來啓動。agent能夠運行在client或者server模式。指定節點做爲client或者server是很是簡單的,除非有其餘agent實例。全部的agent都能運行DNS或者HTTP接口,並負責運行時檢查和保持服務同步。
  • Client——一個Client是一個轉發全部RPC到server的代理。這個client是相對無狀態的。client惟一執行的後臺活動是加入LAN gossip池。這有一個最低的資源開銷而且僅消耗少許的網絡帶寬。
  • Server——一個server是一個有一組擴展功能的代理,這些功能包括參與Raft選舉,維護集羣狀態,響應RPC查詢,與其餘數據中心交互WAN gossip和轉發查詢給leader或者遠程數據中心。
  • DataCenter——雖然數據中心的定義是顯而易見的,可是有一些細微的細節必須考慮。例如,在EC2中,多個可用區域被認爲組成一個數據中心?咱們定義數據中心爲一個私有的,低延遲和高帶寬的一個網絡環境。這不包括訪問公共網絡,可是對於咱們而言,同一個EC2中的多個可用區域能夠被認爲是一個數據中心的一部分。
  • Consensus——在咱們的文檔中,咱們使用Consensus來代表就leader選舉和事務的順序達成一致。因爲這些事務都被應用到有限狀態機上,Consensus暗示複製狀態機的一致性。
  • Gossip——Consul創建在Serf的基礎之上,它提供了一個用於多播目的的完整的gossip協議。Serf提供成員關係,故障檢測和事件廣播。更多的信息在gossip文檔中描述。這足以知道gossip使用基於UDP的隨機的點到點通訊。
  • LAN Gossip——它包含全部位於同一個局域網或者數據中心的全部節點。
  • WAN Gossip——它只包含Server。這些server主要分佈在不一樣的數據中心而且一般經過因特網或者廣域網通訊。
  • RPC——遠程過程調用。這是一個容許client請求server的請求/響應機制。

俯視圖

  從一萬英尺的高空俯視Consul的架構就像這樣:網絡

  讓咱們分解這張圖並描述每一個部分。首先,咱們能看到有兩個數據中心,標記爲「1」和「2」。Consul對多數據中心有一流的支持而且但願這是一個常見的狀況。架構

  在每一個數據中心,client和server是混合的。通常建議有3-5臺server。這是基於有故障狀況下的可用性和性能之間的權衡結果,由於越多的機器加入達成共識越慢。然而,並不限制client的數量,它們能夠很容易的擴展到數千或者數萬臺。分佈式

  同一個數據中心的全部節點都必須加入gossip協議。這意味着gossip協議包含一個給定數據中心的全部節點。這服務於幾個目的:第一,不須要在client上配置server地址。發現都是自動完成的。第二,檢測節點故障的工做不是放在server上,而是分佈式的。這是的故障檢測相比心跳機制有更高的可擴展性。第三:它用來做爲一個消息層來通知事件,好比leader選舉發生時。性能

  每一個數據中心的server都是Raft節點集合的一部分。這意味着它們一塊兒工做並選出一個leader,一個有額外工做的server。leader負責處理全部的查詢和事務。做爲一致性協議的一部分,事務也必須被複制到全部其餘的節點。由於這一要求,當一個非leader得server收到一個RPC請求時,它將請求轉發給集羣leader。優化

  server節點也做爲WAN gossip Pool的一部分。這個Pool不一樣於LAN Pool,由於它是爲了優化互聯網更高的延遲,而且它只包含其餘Consul server節點。這個Pool的目的是爲了容許數據中心可以以low-touch的方式發現彼此。這使得一個新的數據中心能夠很容易的加入現存的WAN gossip。由於server都運行在這個pool中,它也支持跨數據中心請求。當一個server收到來自另外一個數據中心的請求時,它隨即轉發給正確數據中想一個server。該server再轉發給本地leader。spa

  這使得數據中心之間只有一個很低的耦合,可是因爲故障檢測,鏈接緩存和複用,跨數據中心的請求都是相對快速和可靠的。3d

深刻了解

  這裏咱們已經覆蓋了Consul的高層次架構,可是每一個子系統還有不少的細節。一致性協議的詳細文檔是gossip協議。使用的安全模型和協議的文檔也是可用的。

  其餘的細節,這麼經過查閱代碼,在線詢問或者發送郵件。

相關文章
相關標籤/搜索