分佈式框架CAP,大家都知道,zookeeper可以保證狀態同步服務(一致性),能作分佈式鎖
- C:Consistency,一致性,數據一致更新,所有數據變動都是同步的
- A:Availability,可用性,系統具有好的響應性能
- P:Partition tolerance,分區容錯性
一致性分爲 五個 級別:
強一致性: 保證每次讀取到的數據,都是最近一次更新的數據(最新的數據)
單調一致性:任何時刻讀取到某個時刻更新的某個值,那麼就再也不會讀取到比這個時刻還舊的值(就好比數組的遍歷,每次的下標都最新的)
會話一致性:功能和單調一致性一樣,只是範圍更加縮小了,表示的是單個用戶的單個會話
最終一致性:用戶可以讀取到某個時間更新後的值,但系統可以保證這個值最終將會被更新爲最新的值(達到一致的狀態),但是時間無法保證
弱一致性:無法在確定的時間內獲取到最新更新的值
那麼zookeeper是屬於什麼一致性?
單調一致性
原因:
1. 假設有2n+1個server,在同步流程中,leader向follower同步數據,當同步完成的follower數量大於 n+1時同步流程結束,系統可接受client的連接請求。如果client連接的並非同步完成的follower,那麼得到的並非最新數據,但可以保證單調性。
2. follower接收寫請求後,轉發給leader處理;leader完成兩階段提交的機制。向所有server發起提案,當提案獲得超過半數(n+1)的server認同後,將對整個集羣進行同步,超過半數(n+1)的server同步完成後,該寫請求完成。如果client連接的並非同步完成的follower,那麼得到的並非最新數據,但可以保證單調性。