支援斷線重連、永久watcher、遞迴操作並且能跨平臺(.NET Core)的ZooKeeper非同步客戶端

KAnts發表於2016-12-22

在公司內部的微服務架構中有使用到了“ZooKeeper”,雖然官方有提供了.NET的SDK,但易用性非常的差,且搜遍github、nuget,沒有發現一個可以跨平臺且易用的元件,所以我又“美化”了一個輪子。

什麼是ZooKeeper?

ZooKeeper是一個分散式的,開放原始碼的分散式應用程式協調服務,是Google的Chubby一個開源的實現,是Hadoop和Hbase的重要元件。它是一個為分散式應用提供一致性服務的軟體,提供的功能包括:配置維護、域名服務、分散式同步、組服務等。

ZooKeeper的目標就是封裝好複雜易出錯的關鍵服務,將簡單易用的介面和效能高效、功能穩定的系統提供給使用者。

專案介紹

該專案使用了 Apache ZooKeeper .NET async Client 元件,除提供了基本的zk操作,還額外封裝了常用的功能以便讓.net開發者更好的使用zookeeper。

此專案是開源的,採用了:Apache 2.0開源協議。

支援的平臺

  1. .NET 4及以上
  2. .NET Core

專案地址

GitHub:https://github.com/RabbitTeam/zookeeper-client

NuGet:https://www.nuget.org/packages/Rabbit.Zookeeper/

提供的功能

  1. session過期重連
  2. 永久watcher
  3. 遞迴刪除節點
  4. 遞迴建立節點
  5. 跨平臺(支援.net core)

使用說明

下面列一下常用的使用方法,不僅限於此哦!

建立連線

image

建立節點

image

獲取節點資料

image

獲取子節點

image

判斷節點是否存在

image

刪除節點

image

更新節點

image

訂閱資料變化

image

訂閱子節點變化

image

FAQ

什麼時候會觸發 "SubscribeDataChange" 事件 ?

在以下情況下會觸發通過 "SubscribeDataChange" 方法訂閱的事件:

  1. 節點被建立
  2. 節點被刪除
  3. 節點資料發生改變
  4. zk連線重連成功

什麼時候會觸發 "SubscribeChildrenChange" 事件 ?

在以下情況下會觸發通過 "SubscribeChildrenChange" 方法訂閱的事件:

  1. 節點被建立
  2. 節點被刪除
  3. 節點子節點發生改變
  4. zk連線重連成功

如何在 "xxxxChange" 事件中區分節點的狀態 ?

在事件觸發引數會有個型別為 "EventType" 的屬性 "Type",通過該屬性可以清楚的區分出節點變更的原因。

為什麼要寫這個程式,它與 "ZooKeeperEx" 有什麼區別 ?

官方提供的元件,只提供了基本的api,在正常的zk使用情景中需要做非常複雜的事情,滋生出很多額外的程式碼並且不能保證其執行的正確性。

在java語言中也有對官方zk進行封裝的包 ZKClient,當前元件也是參考了這個專案。具體元件包提供了什麼功能請參考 "提供的功能" 這一節。

有問題怎麼辦?

可以通過以下方式聯絡我(依據最容易得到處理優先順序排序):

  1. 在github上建立Issues
  2. 加入QQ群:384413261(點選加入:RabbitHub)進行提問
  3. 給我發郵件,majian159@live.com
  4. 站內私信我

相關文章