CAP理論是指,在分佈式系統中不可能同時知足C(一致性)、A(可用性)、P(分區容錯性)這三個需求,最多隻能知足兩項數據庫
分佈式系統對分區容錯性是確定要能夠支持的,若是不支持的話那其實就是單機數據庫網絡
因此分佈式系統通常會選擇CP或者AP分佈式
在分佈式環境下,一致性是指數據在多個副本之間可否保持一致的特性。在一致性的需求下,當一個系統在數據一致的狀態下執行更新操做後,應該保證系統的數據仍然處於一直的狀態。設計
對於一個將數據副本分佈在不一樣分佈式節點上的系統來講,若是對第一個節點的數據進 行了更新操做而且更新成功後,卻沒有使得第二個節點上的數據獲得相應的更新,因而在對第二個節點的數據進行讀取操做時,獲取的依然是老數據(或稱爲髒數 據),這就是典型的分佈式數據不一致的狀況。在分佈式系統中,若是可以作到針對一個數據項的更新操做執行成功後,全部的用戶均可以讀取到其最新的值,那麼 這樣的系統就被認爲具備強一致性集羣
可用性是指系統提供的服務必須一直處於可用的狀態,對於用戶的每個操做請求老是可以在有限的時間內返回結果。這裏的重點是"有限時間內"和"返回結果"。zookeeper
"有限時間內"是指,對於用戶的一個操做請求,系統必須可以在指定的時間內返回對 應的處理結果,若是超過了這個時間範圍,那麼系統就被認爲是不可用的。另外,"有限的時間內"是指系統設計之初就設計好的運行指標,一般不一樣系統之間有很 大的不一樣,不管如何,對於用戶請求,系統必須存在一個合理的響應時間,不然用戶便會對系統感到失望。請求
"返回結果"是可用性的另外一個很是重要的指標,它要求系統在完成對用戶請求的處理後,返回一個正常的響應結果。正常的響應結果一般可以明確地反映出隊請求的處理結果,即成功或失敗,而不是一個讓用戶感到困惑的返回結果。數據
分區容錯性約束了一個分佈式系統具備以下特性:分佈式系統在遇到任何網絡分區故障的時候,仍然須要可以保證對外提供知足一致性和可用性的服務,除非是整個網絡環境都發生了故障。系統設計
網絡分區是指在分佈式系統中,不一樣的節點分佈在不一樣的子網絡(機房或異地網絡) 中,因爲一些特殊的緣由致使這些子網絡出現網絡不連通的情況,但各個子網絡的內部網絡是正常的,從而致使整個系統的網絡環境被切分紅了若干個孤立的區域。 須要注意的是,組成一個分佈式系統的每一個節點的加入與退出均可以看做是一個特殊的網絡分區。分佈式系統
而BASE理論就是對於CAP的一個權衡的結果
BASE理論的核心思想是:即便沒法作到強一致性,但每一個應用均可以根據自身業務特色,採用適當的方式來使系統達到最終一致性。
zookeeper做爲分佈式協調系統,因此對一致性的要求就很高,zookeeper就是典型的CP
eureka做爲服務的註冊中心對可用性要求更高因此eureka是AP,因此eureka若是集羣狀態下有可能會發生數據不一致的狀況