.NET Core)的ZooKeeper异步客户端
支持断线重连、永久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开源协议。
支持的平台
- .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
- 站内私信我
.NET Core)的ZooKeeper异步客户端的更多相关文章
- 支持断线重连、永久watcher、递归操作并且能跨平台(.NET Core)的ZooKeeper异步客户端
在公司内部的微服务架构中有使用到了"ZooKeeper",虽然官方有提供了.NET的SDK,但易用性非常的差,且搜遍github.nuget,没有发现一个可以跨平台且易用的组件,所 ...
- c#实例化继承类,必须对被继承类的程序集做引用 .net core Redis分布式缓存客户端实现逻辑分析及示例demo 数据库笔记之索引和事务 centos 7下安装python 3.6笔记 你大波哥~ C#开源框架(转载) JSON C# Class Generator ---由json字符串生成C#实体类的工具
c#实例化继承类,必须对被继承类的程序集做引用 0x00 问题 类型“Model.NewModel”在未被引用的程序集中定义.必须添加对程序集“Model, Version=1.0.0.0, Cu ...
- Zookeeper(一)客户端
Zookeeper-客户端 例子: // org.apache.zookeeper.ZooKeeperMain public class ZooKeeperMain { public static v ...
- Tornado 异步客户端
前言 Tornado是很优秀的非阻塞式服务器,我们一般用它来写Web 服务器,据说知乎就是用Tornado写的. 如果对tornado源码不是很了解,可以先看一下另一篇文章: http://yunji ...
- PostgreSQL异步客户端(并模拟redis 数据结构)
以前为了不在游戏逻辑(对象属性)变更时修改数据库,就弄了个varchar字段来表示json,由服务器逻辑(读取到内存)去操作它. 但这对运维相当不友好,也不能做一些此Json数据里查询. 所以后面就用 ...
- 处理ASP.NET Core中的HTML5客户端路由回退
在使用由Angular,React,Vue等应用程序框架构建的客户端应用程序时,您总是会处理HTML5客户端路由,它将完全在浏览器中处理到页面和组件的客户端路由.几乎完全在浏览器中... HTML5客 ...
- Asynchronous MQTT client library for C (MQTT异步客户端C语言库-paho)
原文:http://www.eclipse.org/paho/files/mqttdoc/MQTTAsync/html/index.html MQTT异步客户端C语言库 用于C的异步 MQTT 客 ...
- 微信公众平台.net HttpClient 异步客户端
微信公众平台.net HttpClient 异步客户端 该客户端实现了对微信公众平台的后台管理,包括获取Token,发生客服消息(文本,图片,语音,视频),自定义菜单的创建,查询,删除,查询订阅用户, ...
- zookeeper curator客户端之增删改查
zookeeper curator客户端之增删改查 zookeeper安装:https://www.cnblogs.com/zwcry/p/10272506.html curator客户端是Apach ...
随机推荐
- iOS 学习 - 14.本地联系人
苹果在iOS9的SDK中废除了AddressBookUI.framework的一些功能(是不是这个库都废除了,有待验证),具体和保存联系人相关的几个系统界面如下:联系人选择:AddressBookUI ...
- iOS开发之Runtime使用
runtime简介 RunTime简称运行时.OC就是运行时机制,也就是在运行时候的一些机制,其中最主要的是消息机制. 对于C语言,函数的调用在编译的时候会决定调用哪个函数. 对于OC的函数,属于动态 ...
- selenium+python测试
pip install selenium, 得有图形界面, 这里简单的先演示一个打开浏览器,输入网址的demo,以百度为例 # encoding = utf-8 from selenium impor ...
- CentOS添加新硬盘到新的分区(xfs/ext4) 或者添加新分区
CentOs添加新硬盘到新的分区(xfs/ext4) 添加新分区 转载请注明:http://www.cnblogs.com/juandx/p/5618162.html 这篇文章介绍怎么添加一块新的硬 ...
- 给现有MVC 项目添加 WebAPI
1. 增加一个WebApi Controller, VS 会自动添加相关的引用,主要有System.Web.Http,System.Web.Http.WebHost,System.Net.Http 2 ...
- cocos之观察者模式应用实例
观察位置: 定义宏常量位置: 添加观察者回调函数位置: 回调函数实现位置:
- Python基础之set与函数
set集合 set 是无序,不重复的序列,基本功能包括去重和关系测试,集合中没有插入的方法,只能添加. 集合对象还支持union(联合), intersection(交), difference(差) ...
- iOS 解决导航栏左右 BarButtonItem偏移位置的问题
iOS7 之后,我们直接在导航栏添加barbuttonItem时候,会发现有一定偏移量, 比如: self.navigationItem.leftBarButtonItem = UIBarButton ...
- Mysql数据库上修改日期-->造数据
这次要给客户安装测试ineedle设备,但是安装后不会立刻有数据显示,不能够全面的展示给用户web界面的一些信息.此时需要有一个公网服务器能够展示一下ineedle统计数据,但是公司58设备上没有流量 ...
- linux 中/proc 详解
proc 文件系统 在Linux中有额外的机制可以为内核和内核模块将信息发送给进程-- /proc 文件系统.最初设计的目的是允许更方便的对进程信息进行访问(因此得名),现在它被每一个有有趣的东西报告 ...