Eureka 与Zookeeper 的区别,Eureka相较于Zookeeper好在哪?
生活随笔
收集整理的這篇文章主要介紹了
Eureka 与Zookeeper 的区别,Eureka相较于Zookeeper好在哪?
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
傳統的ACID
- A(Atomicity) 原子性
- C(Consistency) 一致性
- I (Isolation)獨立性
- D(Durability)持久性
關系型數據庫(MySQL,Oracle,SqlServer)
CAP
- C(Consistency)強一致性
- A(Availability)可用性
- P(Partition tolerance)分區容錯性
NOSQL (redis/mongdb)
任何一個分布式系統最多滿足兩個
CAP理論的核心是:一個分布式系統不可能同時很好的滿足一致性,可用性和分區容錯性這三個需求,因此,根據CAP原理將NoSQL數據庫分成了滿足CA原則、滿足CP原則和滿足AP原則則三大類:
- CA 單點集群,滿足一致性,可用性的系統,通常在可擴展性上不太強大
- CP 原則 滿足一致性,分區容忍必的系統,通常性能不是特別高
- AP 滿足可用性,分區容忍性的系統,通常可能對一致性要求低一些
作為服務注冊中心,Eureka比Zookeeper好在哪里
著名的CAP理論指出,一個分布式系統不可能同時滿足C(一致性)、A(可用性)和P(分區容錯性)。由于分區容錯性P在是分布式系統中必須要保證的,因此我們只能在A和C之間進行權衡。
因此
- Zookeeper保證的是CP,
- Eureka則是AP。
- Zookeeper保證CP
當向注冊中心查詢服務列表時,我們可以容忍注冊中心返回的是幾分鐘以前的注冊信息,但不能接受服務直接down掉不可用。也就是說,服務注冊功能對可用性的要求要高于一致性。但是zk會出現這樣一種情況,當master節點因為網絡故障與其他節點失去聯系時,剩余節點會重新進行leader選舉。問題在于,選舉leader的時間太長,30 ~ 120s, 且選舉期間整個zk集群都是不可用的,這就導致在選舉期間注冊服務癱瘓。在云部署的環境下,因網絡問題使得zk集群失去master節點是較大概率會發生的事,雖然服務能夠最終恢復,但是漫長的選舉時間導致的注冊長期不可用是不能容忍的。 - Eureka保證AP
Eureka看明白了這一點,因此在設計時就優先保證可用性。Eureka各個節點都是平等的,幾個節點掛掉不會影響正常節點的工作,剩余的節點依然可以提供注冊和查詢服務。而Eureka的客戶端在向某個Eureka注冊或時如果發現連接失敗,則會自動切換至其它節點,只要有一臺Eureka還在,就能保證注冊服務可用(保證可用性),只不過查到的信息可能不是最新的(不保證強一致性)。除此之外,Eureka還有一種自我保護機制,如果在15分鐘內超過85%的節點都沒有正常的心跳,那么Eureka就認為客戶端與注冊中心出現了網絡故障,此時會出現以下幾種情況:
因此, Eureka可以很好的應對因網絡故障導致部分節點失去聯系的情況,而不會像zookeeper那樣使整個注冊服務癱瘓。
總結
以上是生活随笔為你收集整理的Eureka 与Zookeeper 的区别,Eureka相较于Zookeeper好在哪?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 有AI青年最可爱
- 下一篇: 签约中国搜索,第四范式助力智慧媒体转型发