1. 程式人生 > >Eureka和ZooKeeper的區別

Eureka和ZooKeeper的區別

首先我們先說下:

 RDBMS==>(MySql,Oracle,SqlServer等關係型資料庫)遵循的原則是:ACID原則(A:原子性。C:一致性。I:獨立性。D:永續性。)。

NoSql==>    (redis,Mogodb等非關係型資料庫)遵循的原則是:CAP原則(C:強一致性。A:可用性。P:分割槽容錯性)。

在分散式領域有一個很著名的CAP定理:C:資料一致性。A:服務可用性。P:分割槽容錯性(服務對網路分割槽故障的容錯性)。

在這個特性中任何分散式系統只能保證兩個。

CAP理論也就是說在分散式儲存系統中,最多隻能實現以上兩點。而由於當前網路延遲故障會導致丟包等問題,所以我們分割槽容錯性是必須實現的。

也就是NoSqL資料庫P肯定要有,我們只能在一致性可用性中進行選擇,沒有Nosql資料庫能同時保證三點(==>AP 或者 CP)

提出一個想法,當你面對雙十一這種業務處理時,你是選擇AP還是CP呢?

個人想法是在面對這種業務處理時,先保證可用性也就是AP原則(伺服器不能癱瘓),在過了雙十一高峰,再核對資料,保證資料一致性。

前面鋪墊了那麼多也就是想說下,Eureka和Zookeeper就是CAP定理中的實現,Eureka(保證AP),Zookeeper(保證CP)。

Zookeeper的設計理念就是分散式協調服務,保證資料(配置資料,狀態資料)在多個服務系統之間保證一致性,這也不難看出Zookeeper是屬於CP特性(Zookeeper的核心演算法是Zab,保證分散式系統下,資料如何在多個服務之間保證資料同步)。

Eureka是吸取Zookeeper問題的經驗,先保證可用性。