總結 ZooKeeper應用分析

2021-08-27 22:37:14 字數 3283 閱讀 6371

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

clientzookeeper之間的通訊,需要建立乙個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啟動,同服務...