zookeeper初探
統一名稱空間
在zookeeper裡面,所有節點都稱為znode,znode作用:
1,存放資料,上限是1M
2,ACL(access control list)訪問控制列表,哪個客戶端可以訪問該節點
許可權 允許的操作
CREATE create(子節點)
READ getChildren
getData
WRITE setData
DELETE delete(子節點)
ADMIN setACL
zookeeper中的資料模型
短暫znode:當客戶端訪問時建立,當客戶端斷掉連線,znode將刪掉,生存週期僅僅為客戶端與zookeeper伺服器的一次連線裡面
持久znode:
順序號:在建立znode時在名稱後面追加一個唯一的編號
觀察:在節點上放一個觀察,當節點改變狀態時會通知客戶端
使用zookeeper構建應用
1,配置服務
在zookeeper的樹形結構中,儲存著叢集的各種配置,每個客戶端在有配置的znode上放一個watch,當一個客戶端的配置修改後,它會對zookeeper的znode進行修改(setData),znode就會通知在此放有watch的其它客戶端進行setData,這樣就同步了配置更新
2,分散式鎖
指定一個作為鎖的znode,用它來描述被鎖的實體,稱為leader,然後希望獲取鎖的客戶端建立一些短暫順序znode,作為leader的子節點,任何時候,順序號小的客戶端將持有鎖,客戶端釋放鎖,或者客戶端程式死亡,對應的短暫znode將會被刪除,然後緊跟的下一個順序號的客戶端將持有鎖,透過建立一個關於leader刪除的watch,可使客戶端在獲得鎖時得到通知。
羊群效應
在以上實現過程中,當節點發生變化,所有客戶端都會得到通知,嘗試獲取鎖,會對zookeeper伺服器造成壓力,為了避免這種情況,需要最佳化通知,僅僅只有前一個順序號的子節點消失時才會通知下一個客戶端,而不是刪除(或者建立)任何子節點時都需要通知。例如在上圖中,只有lock-2消失時才需要通知lock-3對應的客戶端,lock-1消失或者有新的子節點加入時,不需要通知lock-3。
在zookeeper裡面,所有節點都稱為znode,znode作用:
1,存放資料,上限是1M
2,ACL(access control list)訪問控制列表,哪個客戶端可以訪問該節點
許可權 允許的操作
CREATE create(子節點)
READ getChildren
getData
WRITE setData
DELETE delete(子節點)
ADMIN setACL
zookeeper中的資料模型
短暫znode:當客戶端訪問時建立,當客戶端斷掉連線,znode將刪掉,生存週期僅僅為客戶端與zookeeper伺服器的一次連線裡面
持久znode:
順序號:在建立znode時在名稱後面追加一個唯一的編號
觀察:在節點上放一個觀察,當節點改變狀態時會通知客戶端
使用zookeeper構建應用
1,配置服務
在zookeeper的樹形結構中,儲存著叢集的各種配置,每個客戶端在有配置的znode上放一個watch,當一個客戶端的配置修改後,它會對zookeeper的znode進行修改(setData),znode就會通知在此放有watch的其它客戶端進行setData,這樣就同步了配置更新
2,分散式鎖
指定一個作為鎖的znode,用它來描述被鎖的實體,稱為leader,然後希望獲取鎖的客戶端建立一些短暫順序znode,作為leader的子節點,任何時候,順序號小的客戶端將持有鎖,客戶端釋放鎖,或者客戶端程式死亡,對應的短暫znode將會被刪除,然後緊跟的下一個順序號的客戶端將持有鎖,透過建立一個關於leader刪除的watch,可使客戶端在獲得鎖時得到通知。
羊群效應
在以上實現過程中,當節點發生變化,所有客戶端都會得到通知,嘗試獲取鎖,會對zookeeper伺服器造成壓力,為了避免這種情況,需要最佳化通知,僅僅只有前一個順序號的子節點消失時才會通知下一個客戶端,而不是刪除(或者建立)任何子節點時都需要通知。例如在上圖中,只有lock-2消失時才需要通知lock-3對應的客戶端,lock-1消失或者有新的子節點加入時,不需要通知lock-3。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28912557/viewspace-1109690/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Apache ZooKeeper - 事件監聽機制初探Apache事件
- 搞懂分散式技術3:初探分散式協調服務zookeeper分散式
- Zookeeper-Zookeeper clientclient
- 【zookeeper】zookeeper分散式鎖分散式
- 【Zookeeper】zookeeper叢集安裝
- 【zookeeper之七】Zookeeper客戶端客戶端
- Zookeeper之Zookeeper的Client的分析client
- Zookeeper原始碼分析(二) —– zookeeper日誌原始碼
- ZooKeeper 系列(一)—— ZooKeeper核心概念詳解
- zookeeper學習04 zookeeper收尾+dubbo前瞻
- ZooKeeper 06 - ZooKeeper 的常用命令
- Zookeeper系列一:Zookeeper基礎命令操作
- Zookeeper原始碼分析(二) ----- zookeeper日誌原始碼
- ZooKeeper管理員指南——部署與管理ZooKeeper
- zookeeper理解
- Zookeeper流程
- zookeeper原理
- zookeeper:spark-project專案的zookeeper配置SparkProject
- 【Zookeeper】zookeeper客戶端KeeperErrorCode = ConnectionLoss客戶端Error
- [Zookeeper-01]什麼是zookeeper?& Linux / Windows Zookeeper安裝和部署(單點)LinuxWindows
- ZooKeeper筆記(1):ZooKeeper特性與基本概念筆記
- ZooKeeper系列(4):ZooKeeper的配置檔案詳解
- ZooKeeper系列(2):ZooKeeper命令列工具zkCli.sh命令列
- zookeeper入門(2)解讀zookeeper的配置項
- Deno 初探
- ELK初探
- Nginx 初探Nginx
- Mobx 初探
- jQuery初探jQuery
- 初探IndexedDBIndex
- 初探PWA
- Puppeteer 初探
- Redis初探Redis
- 初探Firewalld
- Serverless初探Server
- Promise初探Promise
- Quantum 初探
- 初探TCPTCP