支持断线重连、永久watcher、递归操作并且能跨平台(.NET Core)的ZooKeeper异步客户端

 

在公司内部的微服务架构中有使用到了“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)

使用说明

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

创建连接

创建节点

获取节点数据

获取子节点

判断节点是否存在

删除节点

更新节点

订阅数据变化

订阅子节点变化

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. 站内私信我

最新文章

  1. CocosStudio文件解析工具CsdAnalysis
  2. Java线程(七):Callable和Future
  3. visor 发布
  4. [转]android笔记--Intent和IntentFilter详解
  5. 将函数传给webworker
  6. [转]Windows系统注册表知识完全揭密
  7. CodeForces 148B Escape
  8. 13、SQL基础整理(流程控制begin……end)
  9. OpenSSL 双向认证
  10. Brush、Color、String相互转换
  11. poj 1265 Area( pick 定理 )
  12. 为Angular-UEditor增加工具栏属性
  13. java 类排序
  14. iOS、真机调试
  15. JAVA提高十:ArrayList 深入分析
  16. awk打印第n个参数到最后一个技巧/将n行组成一列
  17. Django的时区问题
  18. js-刮刮卡效果,由jquery-eraser源码改的vue组件
  19. Office2010安装出现“错误1907”的解决方法(未验证)
  20. 使用GetAdaptersInfo时,网卡类型的值为71

热门文章

  1. iOS-H5学习篇-02
  2. ASP.NET中常用的几个李天平开源公共类LTP.Common,Maticsoft.DBUtility,LtpPageControl
  3. Tomcat指定特定JDK版本
  4. 0019 Java学习笔记-面向对象-方法
  5. linux下如何打包压缩?解包解压?.tar文件.gz文件
  6. android 利用Path.cubicTo 画 贝塞尔曲线
  7. seq
  8. @RestController注解下返回到jsp视图页面
  9. sshpass批量执行操作
  10. Windows Azure文件共享服务--File Service