zookeeper设置临时节点失效时间_ZooKeeper 相关概念以及使用小结
Dubbo 通過注冊中心在分布式環境中實現服務的注冊與發現,而注冊中心通常采用 ZooKeeper,研究注冊中心相關源碼繞不開 ZooKeeper,所以學習了 ZooKeeper 的基本概念以及相關 API 操作。
ZooKeeper 相關概念
session
客戶端與服務端采用 TCP 長連接,服務端在為客戶端創建 Session 會分配一個唯一 sessionId。在 Session timeout 時間內,客戶端可以向服務端發送請求以及接受 watcher 事件通知。
數據結構
Zookeeper 將所有數據存儲在內存中,數據模型是一棵樹(Znode Tree),由斜杠(/)的進行分割的路徑,就是一個Znode,例如/foo/path1。
Znode
Znode 將會保存數據內容以及相關屬性信息。在 Znode 中使用 Stat 數據結保存相關屬性信息。Stat 屬性中有三種版本信息,分別為 version:當前節點版本信息,cversion:當前節點子節點版本,aversion 當前節點的 ACL 版本。每次發生改動,版本數值將會單調遞增。
更新,刪除 Znode 可以傳入版本數值,如果版本數值不對,將會導致刪除/更新失敗,這個特性類似于 CAS 操作。
Znode 有以下幾種類型:
一旦創建,將會一直存在,除非手動刪除。dubbo 目錄節點為永久節點。
臨時節點基于客戶端 Session,Session 有效期內將會一直存在,Session 失效,節點將會自動刪除。
利用這個機制,Dubbo 服務者創建的節點就是臨時節點。如果 Dubbo 服務者程序意外宕機,在 Session 超時之后,也能自動刪除服務節點,自動下線有問題的服務。
3 順序節點
創建順序節點將會自動在名字后追加整形數字,默認長度為 10 位。順序節點也分為永久與臨時。
利用臨時順序節點,我們可以用來實現分布式鎖 https://juejin.im/post/5c01532ef265da61362232ed。
Watcher 機制
客戶端可以在指定節點注冊監聽器(Watcher),在觸發特定事件后,ZooKeeper 服務端會將事件通知到客戶端。在 Dubbo 中消費者基于 watcher 機制可以動態感知到新的服務者加入。
ZooKeeper 可以在三種請求中設置監聽,分別為:
- getData(),獲取節點數據
- getChildren() 獲取子節點
- exists() 判斷節點是否存在
通知事件類型分為,增刪改事件,以及子節點變動事件。
需要注意的是,watcher 通知過一次之后將會失效,若想繼續監聽通知,需要重新注冊。
ZooKeeper 原生 API 操作
ZooKeeper 官方提供 Java API 實現,提供相關操作的方法。
創建連接
ZooKeeper zk=new ZooKeeper("127.0.0.1:2181總結
以上是生活随笔為你收集整理的zookeeper设置临时节点失效时间_ZooKeeper 相关概念以及使用小结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 怎么判断对方是一个怎样的人 我以前有个朋
- 下一篇: 打开闪光灯_用手机拍照这么久,你居然还不