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

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


原文地址: http://www.cnblogs.com/ants/p/6209773.html


.NET社区新闻,深度好文,微信中搜索dotNET跨平台或扫描二维码关注

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/327386.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

云服务器的购买和宝塔面板的使用

为什么程序员都需要一个自己的服务器 1、作为一个程序员,必须要发布自己的网站和项目 2、练习Linux操作 3、自己的远程仓库、远程数据库、远程tomcat…搭建在服务器上 4、练习,Linux进行任意的环境部署操作 服务器如何购买 尽量打折的时候买 香港服务…

mysql循环insert多条数据

https://blog.csdn.net/ZeroBz/article/details/85119528 DROP PROCEDURE IF EXISTS proc_initData;-- 如果存在此存储过程则删掉 DELIMITER $ CREATE PROCEDURE proc_initData() BEGIN DECLARE i INT DEFAULT 1; WHILE i<15000000 DO INSERT INTO t_…

Java 多线程 —— 深入理解 volatile 的原理以及应用

转载自 Java 多线程 —— 深入理解 volatile 的原理以及应用 推荐阅读&#xff1a;《java 多线程—线程怎么来的》 这一篇主要讲解一下volatile的原理以及应用&#xff0c;想必看完这一篇之后&#xff0c;你会对volatile的应用原理以及使用边界会有更深刻的认知。本篇主要内容…

中间件和微服务,Docker以及原生云架构的关系

IT世界的技术更新非常迅速。一年前我曾写过一篇关于&#xff1a;微服务是否是企业服务总线和其他中间件的死亡魔法。本文章是之前文章的后续以及关于微服务、容器和原生云架构的中间件关系讨论的更新。各种规模的企业正在以令人不可思议的速度快速向这些技术靠拢&#xff01; 在…

Linux基本目录解释

以下是对这些目录的解释&#xff1a; /bin&#xff1a;bin是Binary的缩写, 这个目录存放着最经常使用的命令。/boot&#xff1a; 这里存放的是启动Linux时使用的一些核心文件&#xff0c;包括一些连接文件以及镜像文件。(不要动)/dev &#xff1a; dev是Device(设备)的缩写, 存…

No services have been found解决方案

今天在做web服务的时候遇到了一个问题&#xff0c;很是头疼&#xff0c; No services have been found&#xff0c;就是它&#xff01;&#xff01;&#xff01; 我的解决方案是&#xff0c;在web.xml里面加上&#xff1a; <context-param> <param-name>cont…

linux安装jdk8

https://blog.csdn.net/pdsu161530247/article/details/81582980 linux安装jdk8 最后d轻语 2018-08-11 09:25:21 38205 收藏 83 分类专栏&#xff1a; 软件安装 文章标签&#xff1a; centos6安装jdk linux安装jdk 源码包安装 centos6.4 jdk8 版权 目录 1.下载jdk8 2.源…

Java中的读/写锁

转载自 Java中的读/写锁 原文链接 作者&#xff1a;Jakob Jenkov 译者&#xff1a;微凉 校对&#xff1a;丁一 相比Java中的锁(Locks in Java)里Lock实现&#xff0c;读写锁更复杂一些。假设你的程序中涉及到对一些共享资源的读和写操作&#xff0c;且写操作没有读操作那么频…

.net线程池内幕

本文通过对.NET4.5的ThreadPool源码的分析讲解揭示.NET线程池的内幕&#xff0c;并总结ThreadPool设计的好与不足。 线程池的作用线程池&#xff0c;顾名思义&#xff0c;线程对象池。Task和TPL都有用到线程池&#xff0c;所以了解线程池的内幕有助于你写出更好的程序。由于篇幅…

处理目录的常用命令---Linux

处理目录的常用命令 接下来我们就来看几个常见的处理目录的命令吧&#xff1a; ls: 列出目录cd&#xff1a;切换目录pwd&#xff1a;显示目前的目录mkdir&#xff1a;创建一个新的目录rmdir&#xff1a;删除一个空的目录cp: 复制文件或目录rm: 移除文件或目录mv: 移动文件与目…

com.sun.istack.SAXException2: 在对象图中检测到循环。这将产生无限深的 XML

错误如下所示&#xff1a; javax.xml.ws.soap.SOAPFaultException: Marshalling Error: 在对象图中检测到循环。这将产生无限深的 XML: org.entity.Dept5e54a99b -> org.entity.Emp72433225 -> org.entity.Dept5e54a99b at org.apache.cxf.jaxws.JaxWsClientProxy.i…

Linux下安装nginx (tar解压版安装) nginx1.16.1

https://blog.csdn.net/qq_40431100/article/details/104729504 Linux下安装nginx (tar解压版安装) nginx1.16.1 Jkcc 2020-03-08 16:42:30 2241 收藏 分类专栏&#xff1a; linux 运行环境 文章标签&#xff1a; linux nginx 版权 Linux下安装nginx (tar安装) nginx1.16.…

ASP.NET Core HTTP 管道中的那些事儿

前言 马上2016年就要过去了&#xff0c;时间可是真快啊。 上次写完 Identity 系列之后&#xff0c;反响还不错&#xff0c;所以本来打算写一个 ASP.NET Core 中间件系列的&#xff0c;但是中间遇到了很多事情。首先是 NPOI 的移植工作&#xff0c;移植过后还有一些Bug需要修复&…

详解Java多线程编程中LockSupport类的线程阻塞用法

转载自 详解Java多线程编程中LockSupport类的线程阻塞用法 LockSupport类是Java6(JSR166-JUC)引入的一个类&#xff0c;提供了基本的线程同步原语。LockSupport实际上是调用了Unsafe类里的函数&#xff0c;归结到Unsafe里&#xff0c;只有两个函数&#xff1a; public native…

javaWeb服务详解(含源代码,测试通过,注释)

javaweb服务分为两个部分&#xff0c;一部分是web服务端&#xff0c;另一部分就是你调用的客户端了。首先我说下实现web服务的简单思路&#xff1a; 一、服务器端实现&#xff1a; 1.添加webservice jar包 spring支持 2.添加一个web服务 3.在实体类和接口以及对应的实现类中添…

基本属性---Linux

基本属性 看懂文件属性 Linux系统是一种典型的多用户系统&#xff0c;不同的用户处于不同的地位&#xff0c;拥有不同的权限。为了保护系统的安全性&#xff0c;Linux系统对不同的用户访问同一文件&#xff08;包括目录文件&#xff09;的权限做了不同的规定。 在Linux中我们…

Java中的增强for循环的实现原理与坑

转载自 Java中的增强for循环的实现原理与坑 在JAVA中&#xff0c;遍历集合和数组一般有以下三种形式&#xff1a; for (int i 0; i < list.size(); i) {System.out.print(list.get(i) ","); }Iterator iterator list.iterator(); while (iterator.hasNext())…

Prometheus 系统监控方案

最近一直在折腾时序类型的数据库&#xff0c;经过一段时间项目应用&#xff0c;觉得十分不错。而Prometheus又是刚刚推出不久的开源方案&#xff0c;中文资料较少&#xff0c;所以打算写一系列应用的实践过程分享一下。 Prometheus 是什么&#xff1f; Prometheus是一套开源的监…

文件内容查看---Linux

文件内容查看 概述 Linux系统中使用以下命令来查看文件的内容&#xff1a; cat 由第一行开始显示文件内容tac 从最后一行开始显示&#xff0c;可以看出 tac 是 cat 的倒着写&#xff01;nl 显示的时候&#xff0c;顺道输出行号&#xff01;more 一页一页的显示文件内容less 与…

怎样批量获取文件名,批量提取文件名 文件名读取windows 批处理文件

https://jingyan.baidu.com/article/cdddd41cb0776f53cb00e1e4.html https://jingyan.baidu.com/article/cdddd41cb0776f53cb00e1e4.html 如图&#xff0c;这个文件夹中有一些名字比较奇特的文件&#xff0c;接着我们就开始获取这些文件的文件名。 如图&#xff0c;文件在一…