Eureka與Zookeeper對比

Eureka的優點

著名的CAP理論指出,一個分佈式系統不可能同時滿足C(一致性)、A(可用性)和P(分區容錯性)。由於分區容錯性P是分佈式系統中必須保證的,因此我們只能在A和C中間進行權衡。

  • Zookeeper保證的是CP(一致性和分區容錯性)
  • Eureka保證的是AP(可用性和分區容錯性)

Zookeeper保證CP:

當向註冊中心查詢服務列表時,我們可以容忍註冊中心返回的是幾分鐘以前的註冊信息,但不能接受服務直接down掉不可用。

也就是說,服務註冊功能對可用性的要求要高於一致性。但是zookeeper會出現這樣一種情況,當master節點因爲網絡故障與其它節點失去聯繫時,剩餘節點會重新進行選舉。問題在於,選舉leader的時間太長,30~120s,且選舉期間整個zookeeper集羣都是不可用的,這就導致選舉期間註冊服務癱瘓。在雲部署的環境下,因網絡問題使得zookeeper集羣失去master節點是較大概率事件,雖然服務能夠最終恢復,但是漫長的選舉時間導致註冊長期不可用是不能容忍的。

Eureka保證AP:

Eureka看明白了這一點,因此在設計時就優先保證可用性。Eureka各個節點都是平等的,幾個節點掛掉不會影響正常節點的工作,剩餘的節點依然可以提供註冊和查詢服務。

Eureka的客戶端在向某個Eureka註冊時如果發現連接失敗,則自動切換到其它節點,只要有一臺Eureka還在,就能保證註冊服務可用(保證可用性),除此之外,Eureka還有一種自我保護機制,如果在15分鐘內超過85%的節點都沒有心跳,那麼Eureka就認爲客戶端與註冊中心出現了網絡古箏,此時會出現以下幾種情況:

  1. Eureka不再從註冊列表中移出因爲長時間沒受到心跳而應該過期的服務;
  2. Eureka仍然能夠接受想你的服務的註冊和查詢請求,但是不會被同步到其它節點上(即保證當前節點依然可用);
  3. 當網絡穩定時,當前實例新的註冊信息會被同步到其它節點中;

因此,Eureka可以很好的應對因網絡故障導致部分節點失去聯繫的情況,而不會像zookeeper那樣使整個註冊服務癱瘓。

發佈了777 篇原創文章 · 獲贊 2146 · 訪問量 27萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章