天天看點

Consul實踐之Consul是什麼A. Consul是什麼?B. Consul解決了什麼問題?C. Consul可以應用到哪些場景?D. Consul的更多資訊

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

先舉一個虛拟的例子。

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

再舉一個實際的例子。

最終使用者向某個網站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可以實作配置共享,需要讀取配置的服務可以從consul中讀取到準确的配置資訊。

借助consul,可以使得第三方應用更輕松的內建自己開發的應用,可以第三方提供更清晰的服務接口聲明、保證可用的服務資訊。

consul可以整合多種環境,能将複雜系統中的多種環境整合到一起,開發者或者使用者不需要關心系統的複雜性和多種元件之間的複雜聯系,通過consul可以直接查詢獲得自己可以使用哪些服務。比如系統中有些資料庫可以使用,有哪些redis可以使用。

consul可以幫助系統管理者更清晰的了解複雜系統内部的系統架構,運維人員可以将consul看成一種監控軟體,也可以看成一種資産(資源)管理系統。

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

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

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

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

--end--

繼續閱讀