zookeeper和eureka的區別在哪?


zookeeper和eureka的區別在哪?
傳統的關系型數據庫是ACID(原子性,一致性,獨立性,持久性),

nosql數據庫是CAP(強一致性,可用性,分區容錯性),分布式系統只能3進2,三個選兩個

eureka遵守AP原則,zookeeper遵守CP原則

CA-單點集群,滿足一致性,可用性的系統,通常在可擴展性上不太強大
CP-滿足一致性,分區容忍必的系統,通常性能不是特別高。
AP-滿足可用性,分區容忍性的系統,通常可能對一致性要求低一些

分布式系統中,分區容錯性是必須遵守的.

 

Zookeeper

當向注冊中心查詢服務列表時,我們可以容忍注冊中心返回的是幾分鍾以前的注冊信息,但不能接受服務直接down掉不可用。也就是說,服務注冊功能對可用性的要求要高於一致性。

但是zk會出現這樣一種情況,當master節點因為網絡故障與其他節點失去取系時,剩余節點會重新進行leader選舉。問題在於,選舉leader的時間太長, 30 ~ 120s,且選舉期間整個2k集群都是不可用的,這就導致在選舉期間注冊服務癱瘓。在雲部署的環境下,因網絡問題使得zk集群失去master節點是較大概率會發生的事,雖然服務能夠恢復,但是漫長的選舉時間導致的注冊長期不可用是不能容忍的.

 

Eureka

Eureka着明白了這一點,因此在設計時就優先保證可用性。

Eureka各個節點都是平等的,幾個節點掛掉不會影響正常節點的工作剩余的節點依然可以提供注冊和查詢服務。

而Eureka的客戶端在向某個Eureka注冊或時如果發現連接失敗,則會自動切換至其它節點,只要有一台Eureka還在,就能保證注冊服務可用(保證可用性),只不過查到的信息可能不是最新的(不保證強一致性)。

除此之外, Eureka還有一種自我保護機制,如果在15分鍾內超過85%的節點都沒有正常的心跳,那么Eureka就認為客戶端與注冊中心出現了網絡故障,此時會出現以下幾種情況

1, Eureka不再從注冊列表中移除因為長時間沒收到心跳而應該過期的服務

2.Eureka仍然能夠接受新服務的注冊和查詢請求,但是不會被同步到其它節點上(即保證當前節點依然可用)

3,當網絡穩定時,當前實例新的注冊信息會被同步到其它節點中.

因此, Eureka可以很好的應對因網絡故障導致部分節點失去聯系的情況,而不會像zookeeper那樣便整個注冊服務癱瘓。
---------------------
作者:beyond丿q:1559810637
來源:CSDN
原文:https://blog.csdn.net/qq_41594146/article/details/86608190
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM