簡單的概念
zk是高性能曙博,高可用的分布式協(xié)調(diào)框架,
zk并沒有完全采用paxos協(xié)議否灾,而是采用自定義的zab(原子消息廣播協(xié)議)協(xié)議保證事務的一致性。
zab協(xié)議是為分布式協(xié)調(diào)服務zk專門設計的一種支持奔潰恢復的原子廣播協(xié)議蒜危。
基于這種協(xié)議,zk實現(xiàn)了一種主備模式的系統(tǒng)架構來保持集群各個副本之間的數(shù)據(jù)的一致性
設計的目標
提供了一個高性能睹耐、高可用并且具有嚴格順序訪問的控制能力的分布式協(xié)調(diào)服務
- 高性能使得zk能夠應用于那些對系統(tǒng)吞吐量有明確要求的的大型分布式系統(tǒng)中
- 高可用使得分布式單點問題得到了很好的解決
- 嚴格的順序訪問控制使得客戶端能夠基于zk實現(xiàn)一些復雜同步原語言
目標一 簡單的數(shù)據(jù)模型
使得分布式程序能夠通過一個共享的辐赞、樹型結構的名字空間來進行相互協(xié)調(diào)
這里所說的樹型結構的名字空間,是指zk服務器內(nèi)存中一個數(shù)據(jù)模型硝训,其由一系列被稱為znode的數(shù)據(jù)節(jié)點組成
總體來說响委,其數(shù)據(jù)模型類似一個文件系統(tǒng),而znode之間的層次
目標二 可以構建集群
一個zookeeper集群通常由一組機器組成 一般3-5臺機器就可以組成一個zookeeper集群
組成zk集群的每臺機器都會在內(nèi)存中維護當前的服務器的狀態(tài)窖梁。并且每臺機器之間相互通信
值得一提的是赘风,只要集群中存在超過一半機器能夠正常工作,那么整個集群就能夠正常對外服務纵刘。
zk的客戶端程序會選擇和集群中任意一臺機器共同來創(chuàng)建一個tcp連接邀窃。一旦客戶端和某臺zk服務器之間的連接斷開后,客戶端會自動連接到集群中某個機器
目標三 順序訪問
對于來自客戶端的每個更新請求假哎,zk都會分配一個全局唯一的遞增編號瞬捕,這個編號反映了所有事務操作的先后順序,應用程序可以使用zk的這個特性來來實現(xiàn)
目標四 高性能
由于zk將全景數(shù)據(jù)都存放在內(nèi)存中舵抹,并直接服務于客戶端所有的非事務請求肪虎,因此尤其適用于讀操作為主的應用場景
未完 補充中