Consul - 簡介



Consul 是一個基於 HashiCorp 的工具,用於發現和配置基礎設施中的各種不同服務。它基於並構建在 Golang 上。構建 Consul 的核心原因之一是為了維護分散式系統中存在的服務。Consul 提供的一些重要功能如下。

  • 服務發現 - 使用 DNS 或 HTTP,應用程式可以輕鬆找到它們所依賴的服務。

  • 健康檢查狀態 - 它可以提供任意數量的健康檢查。服務發現元件使用它來將流量從不健康的宿主機路由出去。

  • 鍵值儲存 - 它可以將 Consul 的分層鍵值儲存用於任意數量的目的,包括動態配置、特性標記、協調、領導者選舉等。

  • 多資料中心部署 - Consul 支援多個數據中心。它用於構建額外的抽象層,以擴充套件到多個區域。

  • Web UI - Consul 為其使用者提供了一個漂亮的 Web 介面,使用它可以輕鬆使用和管理 Consul 中的所有功能。

服務發現

服務發現是 Consul 最重要的功能之一。它被定義為檢測不同的服務和網路協議,使用這些協議可以找到服務。服務發現的使用對分散式系統來說是一個福音。這是當今大型行業面臨的主要問題之一,隨著分散式系統在其環境中的發展而出現。

與 Etcd 和 Zookeeper 的比較

當我們檢視此領域中的其他服務發現工具時,我們有兩個流行的選項。過去,軟體行業的一些主要參與者一直在使用它。這些工具是EtcdZookeeper

讓我們考慮以下表格來比較每個工具的不同方面。我們還將瞭解它們每個在內部使用什麼。

屬性 Consul Etcd Zoo Keeper
使用者介面 可用
RPC 可用 可用
健康檢查 HTTP API HTTP API TCP
鍵值 3 種一致性模式 良好的一致性 強一致性
令牌系統 可用
語言 Golang Golang Java

Consul - 成員和代理

Consul 成員可以定義為使用它們部署 Consul 叢集的不同代理和伺服器模式的列表。Consul 為我們提供了一個命令列功能,使用它我們可以輕鬆列出與 Consul 關聯的所有代理。

Consul 代理是 Consul 的核心程序。代理維護成員資訊、註冊服務、執行檢查、響應查詢等。任何代理都可以以兩種模式之一執行:客戶端伺服器。這兩種模式可以根據使用 Consul 時決定的角色使用。Consul 代理透過提供以下資訊來幫助我們。

  • 節點名稱 - 這是機器的主機名。

  • 資料中心 - 代理配置為在其上執行的資料中心。每個節點都必須配置為向其資料中心報告。

  • 伺服器 - 它指示代理是執行在伺服器模式還是客戶端模式。伺服器節點參與共識仲裁,儲存叢集狀態並處理查詢。

  • 客戶端地址 - 代理用於客戶端介面的地址。它包括 HTTP、DNS 和 RPC 介面的埠。

  • 叢集地址 - 叢集中 Consul 代理之間通訊使用的地址和埠集。所有其他節點都必須能夠訪問此地址。

在下一章中,我們將瞭解 Consul 的架構。

廣告

© . All rights reserved.