Consul是什么
Consul由多個組件組成府怯,但是作為一個整體它是一個服務注冊和發(fā)現(xiàn)的工具卓囚。提供的功能有這些:
- 服務發(fā)現(xiàn):consul的客戶端可以作為提供類似api 或者mysq的服務,而其他consul客戶端可以通過consul來發(fā)現(xiàn)這個服務實例的提供方。通過DNS或者HTTP,應用程序可以很容易的發(fā)現(xiàn)他們所依賴的服務坡脐。
- 監(jiān)控檢查:不管是一個給定的服務還是一個本地的實例節(jié)點,consul客戶端都可以提供大量的檢查檢查咖气。這個既可以用來檢查集群的監(jiān)控狀態(tài)也可以用戶服務發(fā)現(xiàn)組件將不健康的host剔除服務路由列表挨措。
- KV存儲:應用程序可以使用Consul的KV來存儲任何數(shù)據(jù)挖滤,包括動態(tài)的配置信息,leader選舉等等浅役。它提供了很方便使用的HTTP API接口斩松。
- 多數(shù)據(jù)中心:Consul提供了拆箱即用的多數(shù)據(jù)中心服務功能,這就意味著使用consul的用戶不必擔心構建額外的抽象層來擴展到多個區(qū)域觉既。
Consul對DevOps社區(qū)和應用開發(fā)者友好的設計實現(xiàn)讓它完美適配現(xiàn)代彈性的架構風格惧盹。
Consul基本的架構
Consul是一個分布式高可用的系統(tǒng)。每一個節(jié)點作為一個consul agent來運行并且將服務提供給Consul瞪讼。作為一個agent運行不需要發(fā)起其他的服務或或者查詢設置key/value的數(shù)據(jù)钧椰。這個agent只是為用于節(jié)點本身和運行在本節(jié)點的服務的健康檢查使用。
需要發(fā)現(xiàn)其他服務或節(jié)點的基礎設施組件可以查詢?nèi)魏蝐onsul server?或任何consul agent符欠,這個代理就會自動將查詢轉發(fā)到consul server嫡霞。
每一個數(shù)據(jù)中心都是作為consul server 的一個集群來來運行的。當出現(xiàn)跨數(shù)據(jù)中心的服務或者配置請求的時候希柿。本地的consul server就會直接將這個請求轉發(fā)到遠程的數(shù)據(jù)中心并且返回結果诊沪。