您好,登錄后才能下訂單哦!
上篇文章《Consul實踐之相關計劃與相關問題》給Consul的相關事情開了個頭,這篇文章首先回答Consul是什么的問題。文中難免有一些關于Consul以及其他的某些知識需要提前了解,文中還可能有些比較難以理解的詞匯或者說法,還請批評指正&留言詢問。
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可以實現配置共享,需要讀取配置的服務可以從Consul中讀取到準確的配置信息。
借助Consul,可以使得第三方應用更輕松的集成自己開發的應用,可以第三方提供更清晰的服務接口聲明、保證可用的服務信息。
Consul可以整合多種環境,能將復雜系統中的多種環境整合到一起,開發者或者用戶不需要關心系統的復雜性和多種組件之間的復雜聯系,通過Consul可以直接查詢獲得自己可以使用哪些服務。比如系統中有些數據庫可以使用,有哪些redis可以使用。
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官方網站 https://www.consul.io/
Consul Github地址 https://github.com/hashicorp/consul
Consul-template Github地址 https://github.com/hashicorp/consul-template
Consul官方介紹 https://www.consul.io/intro/index.html
Consul 系統架構 https://www.consul.io/docs/internals/architecture.html
Consul與其他開源軟件或解決方案的對比 https://www.consul.io/intro/vs/
Dubbo用戶指南 http://dubbo.io/Home-zh.htm 通過此指南可以了解Dubbo是什么,能做什么
借助 Consul 和 Docker 支持即插即用的服務發現 (service discovery) http://www.ibm.com/developerworks/cn/cloud/library/cl-plug-and-play-service-discovery-with-consul-and-docker-bluemix/
使用Terraform與Consul自動化現代數據中心 http://www.infoq.com/cn/news/2015/05/hashimoto-modern-datacenter
基於swarm+consul+nginx達到HA和auto scaling的架構 http://genchilu-blog.logdown.com/posts/317095-based-on-swarm-and-consul-ha-and-dynamically-extensible-architectures
使用Docker、Registrator、Consul、Consul Template和Nginx實現高可擴展的Web框架 http://dockone.io/article/272
Consul入門 http://blog.csdn.net/viewcode/article/details/45915179
Consul多數據中心配置 https://www.consul.io/docs/guides/datacenters.html
consul實踐 http://blog.sina.com.cn/s/blog_72ef7bea0102vuc5.html
tag: Consul是什么,Consul能做什么,Consul應用場景,Consul解決方案,Consul系統架構
--end--
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。