雲計算zookeeper 應用場景

2021-12-30 12:40:48 字數 2120 閱讀 2118

雲計算zookeeper_應用場景。

可基於zookeeper實現資料發布/訂閱、負載均衡、命名服務、分布式協調/通知、集群管理、master選舉、分布式鎖和分布式佇列等功能。

下面我們依次詳細介紹一下具體實現。

資料發布/訂閱

即所謂配置中心,就是發布者將資料發布到zookeeper的乙個或一系列節點上,供訂閱者進行資料訂閱,達到獲取資料的目的,實現配置資訊的集中式管理和資料的動態更新。

通常有兩種實現模式:推模式和拉模式。

推模式是服務端主動將資料更新傳送給素有訂閱的客戶端,拉模式是客戶單主動發起請求來獲取最新資料,通常採用定時輪詢拉取的方式。

zookeeper採用推拉相結合方式:客戶端向伺服器註冊關注的節點,一旦該節點資料變更,那麼服務端就會向客戶端傳送watcher時間通知,客戶端收到通知後,主動到服務端獲取最新的資料。

負載均衡

動態dns,在zookeeper上建立乙個節點進行網域名稱配置,每個應用可以將自己的網域名稱配置上去,並建立乙個屬於自己的資料節點作為網域名稱配置的根節點。

命名服務

在分布式系統中,被命名的實體通常可以是集群中的機器、提供的服務位址或遠端物件等,較為常見的就是一些分布式服務框架(rpc、rmi)中的服務位址列表。通過使用命名服務,客戶端應用能夠根據指定名字來獲取資源的實體、服務位址和提供者的資訊等。

zookeeper通過api介面可建立順序節點,並且在api返回值中會返回這個節點的完整名字。利用這個特性,我們可以借助zookeeper生成全域性唯一id。

分布式協調/通知

zookeeper中特有的watcher註冊與非同步通知機制,能夠很好地實現分布式環境下不同機器,甚至是不同系統之間的協調與通知,從而實現對資料變更的實時處理。基於zookeeper實現分布式協調與通知功能,通常的做法是不同的客戶端都對zookeeper上同乙個資料節點進行watcher註冊,監聽資料節點的變化(包括資料節點本身及其子節點),如果資料節點發生變化,那麼所有訂閱的客戶端都能夠接收到響應的watcher通知,並作出相應的處理。

具體功能實現包括心跳檢測、工作進度匯報、系統排程等。

集群管理

包括集群監控和集群控制兩大塊,前者側重對集群執行時狀態的收集,後者則是對集群進行操作與控制。可以利用zookeeper一下兩大特性實現:

1.客戶端如果對zookeeper的乙個資料節點註冊watcher監聽,那麼當資料節點的內容或其子節點列表發生變更時,zookeeper伺服器就會向訂閱的客戶端傳送變更通知;

2.對在zookeeper上建立的臨時節點,一旦客戶端與伺服器之間的會話失效,那麼該臨時節點也就被自動清除。

分布式日誌收集

使用zookeeper來進行日誌系統收集器的註冊,典型做法是在zookeeper上建立乙個節點作為收集器的根節點(如logs/collector),每個收集器機器在啟動時,都會在收集器節點下建立自己的節點(logs/collector/machine1永久節點)。同時在節點下維護乙個狀態節點(logs/collector/machine1/status),用於記錄狀態。

master選舉

客戶端集群每天定時向zookeeper上建立乙個臨時節點,在此過程中只有乙個客戶端能夠成功建立,那麼這個客戶端就是master。同時其他客戶端則註冊乙個watcher在這個節點上,用於監控當前master機器是否存活,以便 重新發起master選舉。

分布式鎖

分布式鎖是控制分布式系統之間同步訪問共享資源的一種方式,分為互斥鎖和共享鎖兩種實現形式。

互斥鎖通過互斥保證一致性。實現方式是客戶端集群向zookeeper上建立乙個臨時節點,在此過程中只有乙個客戶端能夠成功建立,當客戶端處理完邏輯或宕機時,zookeeper會自動刪除這個節點,其他客戶端可繼續競爭建立此節點。

共享鎖一般場景為讀寫鎖的讀寫操作分離。實現方式是客戶端建立乙個節點,類似"hostname-請求型別-序號",然後獲取所有已經建立的節點。

讀鎖:如果比自己序號小的節點都是讀操作,則直接執行;如果不是,則在比自己小的最後乙個寫請求節點加上watcher事件;

寫鎖:如果自己不是最小序號節點,就在自己小的最後乙個節點加上watcher事件;

分布式佇列

fifo

參照分布式鎖-共享鎖的寫鎖實現。

barrier

在乙個節點設定屏障大小,註冊watcher事件在節點上,關注節點下子節點數,如果達到屏障大小則觸發。

Zookeeper應用場景

zookeeper是乙個高可用的分布式資料管理與系統協調框架。基於對paxos演算法的實現,使該框架保證了分布式環境中資料的強一致性,也正是基於這樣的特性,使得zookeeper能夠應用於很多場景。網上對zk的使用場景也有不少介紹,本文將結合作者身邊的專案例子,系統的對zk的使用場景進行歸類介紹。值...

Zookeeper應用場景

分布式佇列 fifo 先進先出 barrier 同步佇列 共享鎖集群管理 leader選舉 命名服務 分布式應用配置項的管理等 fifo設計思路 1.在 queue fifo的目錄下建立 sequential 型別的子目錄 x i 這樣就能保證所有成員加入佇列時都是有編號的。2.出佇列時通過 get...

Zookeeper應用場景

zookeeper 分布式服務框架是 apache hadoop 的乙個子專案,主要是用來解決分布式應用中經常遇到的一些資料管理問題。如 集群管理 統一命名服務 分布式配置管理 分布式訊息佇列 分布 式鎖 分布式通知協調等。越來越多的分布式計算開始強依賴zk,比如storm hbase zookee...