Consul實踐之Consul是什麼

2021-09-22 01:20:13 字數 2574 閱讀 8045

consul是乙個兩年前由hashicorp組織發起的開源專案,因此至今有兩年以上的歷史。consul由go語言開發,部署起來非常容易,只需要極少的可執行程式和配置檔案,具有綠色、輕量級的特點。consul有一組元件,因此能提供多種功能,目前主要的功能就是服務發現,其他的附加功能,比如自動編排,key-value資料庫等,暫時歸屬為附加價值。

服務發現(service discovery)與簡單服務發現協議有概念相似之處,目前還沒有比較好的解釋。根據個人理解,服務發現就是將自己(己方)已知的的服務資訊(服務包含許多服務資訊,如ip位址、埠號、路徑名稱等等,這些資訊通常會以某種特定的格式(資料交換格式)儲存)以主動或被動的方式告知需要知道的那一方。至於誰是己方,誰是對方,根

據實際來定。在consul的服務發現定義中,應用服務(如web服務、資料庫服務、redis服務等)在

向consul服務註冊的過程中是作為提供服務方(具體是由consul agent實現的,後面會提到),consul

是接受服務方,服務資訊由consul agent提供給consul server。在除了向consul服務註冊的過程的其他過程中可能會反過來,consul server可能會主動質詢consul agent。

先舉乙個虛擬的例子。

例如郵遞員去某公司一棟大樓投遞快件,向門衛詢問員工甲在哪乙個房間,門衛拿起桌上的通訊錄查詢,告知郵遞員員工甲在具體什麼位置。假如公司來了乙個員工乙,他想讓郵遞員送過來,就要先讓門衛知道自己在哪乙個房間,需要去門衛那邊登記,員工乙登記後,當郵遞員向門衛詢問時,門衛就可以告訴郵遞員員工乙的具體位置。門衛知道員工乙的具體位置的過程就是服務發現,員工乙的位置資訊可以被看作服務資訊,門衛的通訊錄就是上文中提到的資料交換格式,此例中員工乙就是上文的已方,門衛就是服務發現的提供者。

再舉乙個實際的例子。

終端使用者向某個**a提交使用者資訊,這個**要先從其他**b上獲取這個使用者在**b的其他資訊,而其他**b上的服務模組是有多個的,也就是說**b的後端還有其他提供服務的其他服務模組b1、b2、b3、bn...。那麼**b是如何把這些其他提供服務的其他服務模組b1~bn的資訊整合進來呢?此時在**b的可以借助consul來實現。**b上服務模組將自己的服務資訊告訴consul,並且有consul檢測服務模組的健康狀態,當服務模組不可用時將此服務模組從consul中移除,當**b需要從這些服務模組來提供服務時,就從consul上獲取服務模組的資訊,或者由consul主動告訴**b有哪些服務模組可以使用以及這些可用的服務模組的資訊是什麼。

借助consul,被服務者可以從consul那裡獲得到提供服務者提供了哪些可用的服務、應用。這些服務、應用是隨時可以新增或移除的,借助負載均衡裝置或軟體可以非常容易實現高可用、可擴充套件的、彈性的應用服務架構。

consul解決了動態提供服務資訊、動態更改服務配置的問題。consul可像dubbo一樣,解決dubbo能解決的一些問題,如「服務自動註冊與發現,不再需要寫死服務提供方位址,註冊中心基於介面名查詢服務提供者的ip位址,並且能夠平滑新增或刪除服務提供者。」

consul還能解決其他問題,可以參見下方的「consul可以應用到哪些場景?」

關於consul部署的環境要求。consul可以部署在物理機環境、也可以部署在作業系統虛擬化環境、也可以部署到docker(應用虛擬化)環境,也可以部署物理機、虛擬機器和docker三種環境都有的混合環境中。

consul是支援多資料中心的,多個資料中心要求每個資料中心都要安裝一組consul cluster,每乙個consul cluster中有乙個server,server與另乙個資料中心的server建立連線,根據consul 架構的描述(點這裡,consul architecture),consul實現多個資料中心依賴於gossip protocol協議,不需要依賴於除了consul外的其他的元件。

consul易於使用,可供多種角色人員使用,使用consul的可以是系統運維管理人員、軟體開發人員以及其他相關的技術人員。

可以參考consul的官方**和其他**上提供的資訊。本文列舉一些可用參考的資源如下:

consul官方** 

consul github位址 

consul-template github位址 -template

consul官方介紹 intro/index.html

consul 系統架構 docs/internals/architecture.html

consul與其他開源軟體或解決方案的對比 intro/vs/

dubbo使用者指南  通過此指南可以了解dubbo是什麼,能做什麼

借助 consul 和 docker 支援即插即用的服務發現 (service discovery) 

使用terraform與consul自動化現代資料中心 

基於swarm+consul+nginx達到ha和auto scaling的架構 

使用docker、registrator、consul、consul template和nginx實現高可擴充套件的web框架 

consul入門 

consul多資料中心配置 docs/guides/datacenters.html

consul實踐 

tag: consul是什麼,consul能做什麼,consul應用場景,consul解決方案,consul系統架構

--end--

Consul服務註冊中心 Consul工作原理

consul工作原理如下圖所示 當服務producer啟動時,會將自己的ip host等資訊通過傳送請求告知consul,consul接收到producer的註冊資訊後,每個10s 預設 會向producer傳送乙個健康檢查的請求,檢驗producer是否監控。當consumer請求producer...

服務註冊之Consul

consul是hashicorp公司推出的開源工具,consul由go語言開發,部署起來非常容易,只需要極少的可執行程式和配置檔案,具有綠色 輕量級的特點。consul是分布式的 高可用的 可橫向擴充套件的用於實現分布式系統的服務發現與配置。consul的應用場景包括服務發現 服務隔離 服務配置 這...

consul學習筆記

服務與服務之間的呼叫需要在配置檔案中填好主機和埠,不易於維護且分布式環境中不容易部署與擴容 那麼此時就需要考慮服務啟動時自己把主機和埠以及一些其他資訊註冊到註冊中心,這樣其他服務可以從中找到它,甚至更為簡單的註冊完畢後通過dns的方式來定址。consul提供了一套健康監測機制簡單的說針對http型別...