ZooKeeper和Consul的區別及選取

1.ZooKeeper的主要功能:
(1)作爲配置信息的存儲的中心服務器
(2)命名服務
(3)分佈式同步
(4)分組服務
工作原理:
在這裏插入圖片描述
如果只是打算將ZooKeeper作爲微服務發現工具,就需要用到其配置存儲和分佈式同步的功能。前者可以理解成具有一致性的KV存儲,後者提供了ZooKeeper特有的watcher註冊於異步通知機制,ZooKeeper能將節點的狀態實時異步通知給ZooKeeper客戶端。
ZooKeeper提供臨時節點,這些節點是客戶端斷開連接時刪除的K / V條目。這些比心跳系統更復雜,但仍然存在固有的可擴展性問題並增加了客戶端的複雜性。所有客戶端必須保持與ZooKeeper服務器的活動連接並執行保持活動。另外,這需要“厚客戶端”,這些客戶端難以編寫並且經常導致調試挑戰。
2.Consul的主要功能 :
(1) 通過DNS或HTTP,服務發現功能簡單
(2)多種健康的檢查方式:http返回碼200,內存是否超限,tcp連接是否成功
(3) KV存儲
(4)多數據中心(這個zookeeper沒有)
Consul的工作原理:
在這裏插入圖片描述
Consul的使用依靠簡單的http請求就能滿足服務發現的所有邏輯。服務每次都從consul agent獲取其他服務的存活狀態,相比於zookeeper的watcher機制,實時性稍差一點。
Consul使用一種非常不同的架構進行健康檢查。Consul客戶端不是僅具有服務器節點,而是在集羣中的每個節點上運行。

我個人從便於開發,調試簡單,使用範圍上考慮(阿里和京東也都使用的consul),選擇consul,如果對實時性要求較高,建議使用zookeeper

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章