網(wǎng)站開發(fā)語言對比熱搜詞工具
系列文章目錄
Zookeeper安裝教程
目錄
一、Zookeeper簡介
二、Zookeeper的數(shù)據(jù)結(jié)構(gòu)
三、CPA理論
四、BASE 理論
五、ZooKeeper的特性
前言
這是我的學(xué)習(xí)筆記,以便后面翻閱。
一、Zookeeper簡介
ZooKeeper是一個分布式的、開放源碼的分布式應(yīng)用程序協(xié)調(diào)服務(wù),它是Google的Chubby一個開源的實現(xiàn),是Hadoop和Hbase的重要組件。
ZooKeeper的目標是封裝好復(fù)雜易出錯的關(guān)鍵服務(wù),將簡單易用的接口和性能高效、功能穩(wěn)定的系統(tǒng)提供給用戶。它以Fast Paxos算法為基礎(chǔ),通過選舉產(chǎn)生一個領(lǐng)導(dǎo)者(leader),只有領(lǐng)導(dǎo)者才能提交提議,從而解決了Paxos算法存在的問題。
ZooKeeper為分布式應(yīng)用提供了一致性服務(wù),其功能包括配置維護、域名服務(wù)、分布式同步、組服務(wù)等。它還提供了分布式獨享鎖、選舉、隊列的接口,其中分布鎖和隊列有Java和C兩個版本,選舉只有Java版本
二、Zookeeper的數(shù)據(jù)結(jié)構(gòu)
zookeeper 提供的名稱空間類似于標準文件系統(tǒng),key-value 的形式存儲。名稱 key 由斜線?/?分割的一系列路徑元素,zookeeper 名稱空間中的每個節(jié)點都是由一個路徑標識。
三、CPA理論
CAP 理論指出對于一個分布式計算系統(tǒng)來說,不可能同時滿足以下三點:
- 一致性(Consistency):在分布式環(huán)境中,一致性是指數(shù)據(jù)在多個副本之間是否能夠保持一致的特性,等同于所有節(jié)點訪問同一份最新的數(shù)據(jù)副本。在一致性的需求下,當一個系統(tǒng)在數(shù)據(jù)一致的狀態(tài)下執(zhí)行更新操作后,應(yīng)該保證系統(tǒng)的數(shù)據(jù)仍然處于一致的狀態(tài)。
-
可用性(Availability):每次請求都能獲取到正確的響應(yīng),但是不保證獲取的數(shù)據(jù)為最新數(shù)據(jù)。
-
分區(qū)容錯性(Partition tolerance):分布式系統(tǒng)在遇到任何網(wǎng)絡(luò)分區(qū)故障的時候,仍然需要能夠保證對外提供滿足一致性和可用性的服務(wù),除非是整個網(wǎng)絡(luò)環(huán)境都發(fā)生了故障。
一個分布式系統(tǒng)最多只能同時滿足一致性、可用性和分區(qū)容錯性這三項中的兩項。但是P 是必須的,因此只能在 CP 和 AP 中選擇,zookeeper 保證的是 CP,對比 spring cloud 系統(tǒng)中的注冊中心 eruka 實現(xiàn)的是 AP。
四、BASE 理論
BASE 理論是對 CAP 中的一致性和可用性進行一個權(quán)衡的結(jié)果,理論的核心思想就是:我們無法做到強一致,但每個應(yīng)用都可以根據(jù)自身的業(yè)務(wù)特點,采用適當?shù)姆绞絹硎瓜到y(tǒng)達到最終一致性。
-
基本可用(Basically Available):在分布式系統(tǒng)出現(xiàn)故障,允許損失部分可用性(服務(wù)降級、頁面降級)。
-
軟狀態(tài)(Soft-state):允許分布式系統(tǒng)出現(xiàn)中間狀態(tài)。而且中間狀態(tài)不影響系統(tǒng)的可用性。這里的中間狀態(tài)是指不同的 data replication(數(shù)據(jù)備份節(jié)點)之間的數(shù)據(jù)更新可以出現(xiàn)延時的最終一致性。
- 最終一致性(Eventually Consistent):data replications 經(jīng)過一段時間達到一致性。
五、ZooKeeper的特性
- 順序一致性:從一個客戶端發(fā)起的事務(wù)請求,最終都會嚴格按照其發(fā)起順序被應(yīng)用到ZooKeeper中。
- 原子性:所有事務(wù)請求的處理結(jié)果在整個集群中所有機器上都是一致的,不存在部分機器應(yīng)用了該事務(wù),而另一部分沒有應(yīng)用的情況。
- 單一視圖:所有客戶端看到的服務(wù)端數(shù)據(jù)模型都是一致的。
- 可靠性:一旦服務(wù)端成功應(yīng)用了一個事務(wù),則其引起的改變會一直保留,直到被另外一個事務(wù)所更改。
- 實時性:一旦一個事務(wù)被成功應(yīng)用后,ZooKeeper可以保證客戶端立即可以讀取到這個事務(wù)變更后的最新狀態(tài)的數(shù)據(jù)。
此外ZooKeeper還具有簡單的數(shù)據(jù)模型、構(gòu)建集群和順序訪問等功能和特性。