在公司內部的微服務架構中有使用到了“ZooKeeper”,雖然官方有提供了.NET的SDK,但易用性非常的差,且搜遍github、nuget,沒有發現一個可以跨平臺且易用的元件,所以我又“美化”了一個輪子。
什麼是ZooKeeper?
ZooKeeper是一個分散式的,開放原始碼的分散式應用程式協調服務,是Google的Chubby一個開源的實現,是Hadoop和Hbase的重要元件。它是一個為分散式應用提供一致性服務的軟體,提供的功能包括:配置維護、域名服務、分散式同步、組服務等。
ZooKeeper的目標就是封裝好複雜易出錯的關鍵服務,將簡單易用的介面和效能高效、功能穩定的系統提供給使用者。
專案介紹
該專案使用了 Apache ZooKeeper .NET async Client 元件,除提供了基本的zk操作,還額外封裝了常用的功能以便讓.net開發者更好的使用zookeeper。
此專案是開源的,採用了:Apache 2.0開源協議。
支援的平臺
- .NET 4及以上
- .NET Core
專案地址
GitHub:https://github.com/RabbitTeam/zookeeper-client
NuGet:https://www.nuget.org/packages/Rabbit.Zookeeper/
提供的功能
- session過期重連
- 永久watcher
- 遞迴刪除節點
- 遞迴建立節點
- 跨平臺(支援.net core)
使用說明
下面列一下常用的使用方法,不僅限於此哦!
建立連線
建立節點
獲取節點資料
獲取子節點
判斷節點是否存在
刪除節點
更新節點
訂閱資料變化
訂閱子節點變化
FAQ
什麼時候會觸發 "SubscribeDataChange" 事件 ?
在以下情況下會觸發通過 "SubscribeDataChange" 方法訂閱的事件:
- 節點被建立
- 節點被刪除
- 節點資料發生改變
- zk連線重連成功
什麼時候會觸發 "SubscribeChildrenChange" 事件 ?
在以下情況下會觸發通過 "SubscribeChildrenChange" 方法訂閱的事件:
- 節點被建立
- 節點被刪除
- 節點子節點發生改變
- zk連線重連成功
如何在 "xxxxChange" 事件中區分節點的狀態 ?
在事件觸發引數會有個型別為 "EventType" 的屬性 "Type",通過該屬性可以清楚的區分出節點變更的原因。
為什麼要寫這個程式,它與 "ZooKeeperEx" 有什麼區別 ?
官方提供的元件,只提供了基本的api,在正常的zk使用情景中需要做非常複雜的事情,滋生出很多額外的程式碼並且不能保證其執行的正確性。
在java語言中也有對官方zk進行封裝的包 ZKClient,當前元件也是參考了這個專案。具體元件包提供了什麼功能請參考 "提供的功能" 這一節。
有問題怎麼辦?
可以通過以下方式聯絡我(依據最容易得到處理優先順序排序):
- 在github上建立Issues
- 加入QQ群:384413261(點選加入:RabbitHub)進行提問
- 給我發郵件,majian159@live.com
- 站內私信我