1,zookeeper
2,zookeeper使用場景
分布式搜尋
分布式日誌收集系統
動態資訊獲取
命名服務(naming service)
在分布式系統中,通過使用命名服務,客戶端應用能夠根據指定名字來獲取資源或服務的位址,提供者等資訊
被命名的實體通常可以是集群中的機器,提供的服務位址,遠端物件等等——這些我們都可以統稱他們為名字(name)
較為常見的就是一些分布式服務框架中的服務位址列表。通過呼叫zk提供的建立節點的api,能夠很容易建立乙個全域性唯一的path,這個path就可以作為乙個名稱
分布式通知/協調原理
使用場景
另一種系統排程模式
另一種工作匯報模式
集群管理與master選舉
利用zookeeper有兩個特性,就可以實施另一種集群機器存活性監控系統
使用場景
master選舉則是zookeeper中最為經典的應用場景
動態master選舉
搜尋系統
hbase
分布式鎖
分布式鎖,這個主要得益於zookeeper為我們保證了資料的強一致性。鎖服務可以分為兩類,乙個是保持獨佔,另乙個是控制時序獨佔控制時序分布式佇列
佇列方面,簡單地講有兩種,一種是常規的先進先出佇列,另一種是要等到佇列成員聚齊之後的才統一按序執行(屏障/barrier)
先進先出佇列(fifo),和分布式鎖服務中的控制時序場景基本原理一致
等到佇列成員聚齊之後的才統一按序執行,屏障(barrier)
3,zookeeper原理
znode
永續性分類細分session
client與zookeeper之間的通訊,需要建立乙個session,這個session會有乙個超時時間
因為zookeeper集群會把client的session資訊持久化,所以在session沒超時之前,client與zookeeper server的連線可以在各個zookeeper server之間透明地移動
在實際的應用中,如果client與server之間的通訊足夠頻繁,session的維護就不需要其它額外的訊息了,
否則,zookeeper client會每t/3 ms發一次心跳給server,如果client 2t/3 ms沒收到來自server的心跳回應,就會換到乙個新的zookeeper server上。這裡t是使用者配置的session的超時時間zab協議
zookeeper 的核心是原子廣播,這個機制保證了各個server之間的同步
zab協議有兩種模式,它們分 別是恢復模式(選主)和廣播模式(同步)
當服務啟動或者在領導者崩潰後,zab就進入了恢復模式,當領導者被選舉出來,且大多數server完成了和 leader的狀態同步以後,恢復模式就結束了
狀態同步保證了leader和server具有相同的系統狀態
為 了保證事務的順序一致性,zookeeper採用了遞增的事務id號(zxid)來標識事務。所有的提議(proposal)都在被提出的時候加上 了zxid。實現中zxid是乙個64位的數字,它高32位是epoch用來標識leader關係是否改變,每次乙個leader被選出來,它都會有乙個新的epoch,標識當前屬於那個leader的統治時期。低32位用於遞增計數
leader(選舉)選主流程
基於fast paxos演算法實現資料一致性與paxos演算法zookeeper三個角色
observer
client
locks
barriers
counters
caches
nodes
queues
frameworkutilitiesclienterrorsextensions
zookeeper
Zookeeper重點總結
zookeeper原子廣播協議,zookeeper使用zab協議,實現分布式資料一致性。具體的,zk使用乙個單一的主程序來接受並處理客戶端的事務請求,並使用zab協議,將資料的變更狀態以事務proposal的形式廣播到所有follower。leader 1,可以進行事務操作 寫操作 和非事務操作 讀...
zookeeper技術總結
1 zookeeper概念介紹 zookeeper是乙個分部式協調服務 就是為使用者的分布式應用程式提供協調服務 a zookeeper是為別的分布式程式服務的 b zookeeper本身就是乙個分布式程式 只要有半數以上節點存活,zk就能正常服務 c zk所提供的的服務涵蓋 主從協調 伺服器節點動...
Zookeeper重點總結
類似於一棵樹,每個znode預設能夠儲存1mb的資料 服務1啟動 首先選舉自己 服務2啟動,首先選舉自己,服務1轉投id比自己大的服務2 服務3啟動 首先選舉自己 服務1服務2轉投序號比較大的伺服器3,這時master選舉出來了 服務4啟動,這時已經選舉出來且過半不會觸發重新選舉 服務5啟動,同服務...