簡介
- consul是一個服務發現框架
- 類似的還有zookeeper,eureka,etcd等
作用
- 服務發現(service discovery)
- 健康檢查(health checking)
- 配置存儲管理(key/value storage)
- 可支持任意數量的區域:multi-datacente
consul與eureka比較
- 最大的區別是Eureka保證AP, Consul為CP
- Consul強一致性(C)帶來的是:
服務注冊相比Eureka會稍慢一些。因為Consul的raft協議要求必須過半數的節點都寫入成功才認為注冊成功
Leader掛掉時,重新選舉期間整個consul不可用。保證了強一致性但犧牲了可用性。 - Eureka保證高可用(A)和最終一致性:
服務注冊相對要快,因為不需要等注冊信息replicate到其他節點,也不保證注冊信息是否replicate成功
當數據出現不一致時,雖然A, B上的注冊信息不完全相同,但每個Eureka節點依然能夠正常對外提供服務,這會出現查詢服務信息時如果請求A查不到,但請求B就能查到。如此保證了可用性但犧牲了一致性。 - 服務的健康檢查
Euraka 使用時需要顯式配置健康檢查支持;Zookeeper,Etcd 則在失去了和服務進程的連接情況下任務不健康,而 Consul 相對更為詳細點,比如內存是否已使用了90%,文件系統的空間是不是快不足了。 - 多數據中心支持
Consul 通過 WAN 的 Gossip 協議,完成跨數據中心的同步;而且其他的產品則需要額外的開發工作來實現; - KV 存儲服務
除了 Eureka ,其他幾款都能夠對外支持 k-v 的存儲服務,所以后面會講到這幾款產品追求高一致性的重要原因。而提供存儲服務,也能夠較好的轉化為動態配置服務哦。
總結
- 了解有限,筆者想了想連套件eureka都沒搞明白呢,而且自覺地分布式服務可靠性比一致性重要點~,雖然Eureka現在還在不斷完善中,我還是很看好他的,決定先研究它了
參考博客
https://www.cnblogs.com/xiaohanlin/p/8016803.html
https://blog.csdn.net/ZYC88888/article/details/81453647