zookeeper和Eureka的區別


RDBMS==>(MySql,Oracle,SqlServer等關系型數據庫)遵循的原則是:ACID原則

A:Atomicity 原子性

C:Consistency 一致性

I:Isolation 獨立性

D:Durability 持久性

 

NoSql==>    (redis,Mogodb等非關系型數據庫)遵循的原則是:CAP原則

C:Consistency 強一致性

A:  Availability 可用性

P:Partition Tolerance分區容錯性

 

分布式領域有一個很著名的CAP定理:

C:Consistency 數據一致性

A:Availability 服務可用性

P:Partition Tolerance 分區容錯性(服務對網絡分區故障的容錯性)

 

任何分布式系統只能保證兩個

CAP理論也就是說在分布式存儲系統中,最多只能實現以上兩點。

而由於當前網絡延遲故障會導致丟包等問題,所以我們分區容錯性是必須實現的。也就是NoSqL數據庫P肯定要有,我們只能在一致性和可用性中進行選擇,沒有Nosql數據庫能同時保證三點。(==>AP 或者 CP)

我覺得A:Availability 也很重要 要我選擇 我會選擇AP優先於CP 但是也要看具體的需求場景

回到問題

ureka和Zookeeper就是CAP定理中的實現,Eureka(保證AP),Zookeeper(保證CP)。

ureka的各個節點都是對等的,失去其中任何一個 不影響服務的AP

Zookeeper是主從關系master-slave的,當主節點掛掉,需要選出來新的主節點。需要耗費時間,這期間A:Availability是不能保證的(這里有一個重要點 Zookeeper 的選舉機制)

總結:

Zookeeper的設計理念就是分布式協調服務,保證數據(配置數據,狀態數據)在多個服務系統之間保證一致性,這也不難看出Zookeeper是屬於CP特性(Zookeeper的核心算法是Zab,保證分布式系統下,數據如何在多個服務之間保證數據同步)。Eureka是吸取Zookeeper問題的經驗,先保證可用性。


免責聲明!

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



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