原文:https://www.consul.io/intro/index.htmlhtml
consul是什麼?mysql
consul是HashiCorp公司推出的一款工具,主要用於實現分佈式系統的服務發現與配置,它提供瞭如下幾個關鍵特性:sql
服務發現:Consul客戶端能夠提供如 api或mysql之類的服務,其餘客戶端使用Consul去發現一個指定服務的提供者.經過DNS或者HTTP應用程序可用很容易的找到他所依賴的服務.api
健康檢查:consul客戶端能夠提供任意數量的健康檢查,,能夠結合具體的服務(「Web服務器返回200 OK」)或本地節點(「內存利用率低於90%」)。操做者能夠經過檢測信息來監視羣集運行情況,服務發現組件會將流量從不健康的主機路由到健康主機。服務器
K/V存儲:應用程序能夠根據須要使用consul的層級K/V存儲,如動態配置,功能標記,一致性協調,leader選舉等。簡單的HTTP API使其易於使用。架構
多數據中心:consul支持開箱即用的多數據中心。用戶不用擔憂須要創建額外的抽象層讓業務擴展到多個區域.。分佈式
Consul面向DevOps和應用開發者友好.很是適合現代的彈性的基礎設施.ide
Consul基礎架構工具
consul是一個分佈式,高可用性的系統。這裏只是簡單介紹一下基礎知識,故意省略了一些沒必要要的細節,以便可以快速瞭解consul的工做原理,詳細架構見 https://www.consul.io/docs/internals/architecture.html代理
每一個提供Consul服務的節點都會運行一個consul代理。發現服務或者獲取、設置key/value數據的節點不須要運行代理。代理負責對節點上運行的服務以及節點自己進行健康檢查。
agent鏈接一個或者多個Consul server,Consul server存儲,複製數據,選取leaader。雖然Consul server能夠只運行一個,可是一般建議每一個數據中心運行由3到5個consul server組成的集羣,以防單點故障形成數據丟失。
須要發現其餘服務或節點的組件能夠查詢任何consul server或consul agent。consul agent會自動將請求轉發給consul server。
每一個數據中心都運行一組Consul server集羣。當進行跨數據中心服務發現或配置請求時,本地consul server會將請求轉發到遠程數據中心並返回結果。