Golang 語言微服務的服務發現組件 Consul 的系統架構介紹

01 

介紹

在上篇文章「Golang 語言微服務的服務註冊與發現組件 Consul」中,我們已經介紹服務註冊與發現是什麼,Golang 語言微服務架構爲什麼需要使用服務註冊與發現組件,Golang 語言開發的服務註冊與發現組件 Consul 的主要特性和基本介紹。

本文我們介紹 Consul 的系統架構,讀者朋友們閱讀完本文可以瞭解 Consul 的工作原理。

02 

Consul 術語

在介紹 Consul 系統架構之前,我準備先介紹幾個 Consul 術語,目的是讓讀者朋友們更容易理解 Consul 系統架構的介紹內容。

Consul 原生支持多數據中心,數據中心中包含 Consul 集羣,集羣由客戶端、服務器或客戶端和服務器混合體的節點組成。

多個部署和運行 Agent 的節點組成 Consul Cluster,集羣中包含 Client、Server 或 Client 和 Server 的混合體。

如果節點運行的 Agent 開啓 Server 模式,那麼該節點爲 Server。

如果節點運行的 Agent 未開啓 Server 模式,那麼該節點爲 Client。

Agent 是 Consul 集羣中所有節點都運行的一個守護進程,負責維護成員身份信息、註冊服務、運行健康檢查、響應查詢等。

03 

Consul 系統架構

Consul 官方爲我們提供了一張 Consul 系統架構圖,在這張圖中,我們可以看到包含兩個數據中心,分別標記爲 DATACENTER 1 和 DATACENTER 2。由此可見,Consul 原生支持多數據中心。

在每個數據中心中都包含一個 Consul 集羣,DATACENTER 1 中的集羣由 6 個部署並運行 Agent 的節點組成,其中三個是以 Server 模式運行的,另外三個是以 Client 模式運行的。

而 DATACENTER 2 中的集羣由 3 個部署並運行 Agent 的節點組成,並且這三個節點都是以 Server 模式運行的。

由此可以得出一個結論,DATACENTER 中的集羣可以是包含 Client 和 Server 的混合體,也可以是僅包含 Server 節點。

需要注意的是,每個 Consul 數據中心中的集羣,官方建議 Server 模式運行的節點控制在 3 至 5 個,因爲 3 至 5 個 Server 節點發生故障時,就可以提供一致性和可用性,並且 Server 節點是以 Raft 協議選舉 Leader,Server 節點越多,Leader 選舉越慢。而 Client 節點的數量沒有限制,它是輕量級進程,我們甚至可以創建成千上萬個 Client 節點。

Server 負責基於 Raft 協議選舉 Leader,維護集羣狀態,響應 RPC 查詢,與其他 DATACENTER 交換 WAN Gossip,將查詢請求轉發給 Leader 或遠程 DATACENTER。

Client 是無狀態的,負責將所有查詢請求轉發給 Server,而且 Client 不需要與其他 DATACENTER 交換 WAN Gossip,只需參與 LAN Gossip,資源開銷很小,只消耗少量網絡帶寬。

**04 **

總結

本文我們介紹 Consul 的系統架構,我們先從宏觀上了解 Consul 的工作原理,也就是先抓住綱,然後再詳細學習 Consul 的各個組件。

參考資料:
https://www.consul.io/docs/architecture

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/CWD2V8oQ7sWTJBpV42flVg