在公司內部的微服務架構中有使用到了「ZooKeeper」,雖然官方有提供了.NET的SDK,但易用性很是的差,且搜遍github、nuget,沒有發現一個能夠跨平臺且易用的組件,因此我又「美化」了一個輪子。java
ZooKeeper是一個分佈式的,開放源碼的分佈式應用程序協調服務,是Google的Chubby一個開源的實現,是Hadoop和Hbase的重要組件。它是一個爲分佈式應用提供一致性服務的軟件,提供的功能包括:配置維護、域名服務、分佈式同步、組服務等。git
ZooKeeper的目標就是封裝好複雜易出錯的關鍵服務,將簡單易用的接口和性能高效、功能穩定的系統提供給用戶。github
該項目使用了 Apache ZooKeeper .NET async Client 組件,除提供了基本的zk操做,還額外封裝了經常使用的功能以便讓.net開發者更好的使用zookeeper。 api
此項目是開源的,採用了:Apache 2.0開源協議。 session
GitHub:https://github.com/RabbitTeam/zookeeper-client 架構
NuGet:https://www.nuget.org/packages/Rabbit.Zookeeper/ async
下面列一下經常使用的使用方法,不只限於此哦!分佈式
在如下狀況下會觸發經過 "SubscribeDataChange" 方法訂閱的事件: 微服務
在如下狀況下會觸發經過 "SubscribeChildrenChange" 方法訂閱的事件: oop
在事件觸發參數會有個類型爲 "EventType" 的屬性 "Type",經過該屬性能夠清楚的區分出節點變動的緣由。
官方提供的組件,只提供了基本的api,在正常的zk使用情景中須要作很是複雜的事情,滋生出不少額外的代碼而且不能保證其執行的正確性。
在java語言中也有對官方zk進行封裝的包 ZKClient,當前組件也是參考了這個項目。具體組件包提供了什麼功能請參考 "提供的功能" 這一節。
能夠經過如下方式聯繫我(依據最容易獲得處理優先級排序):