.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开源协议。

支持的平台

  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. 给我发邮件,[email protected]
  4. 站内私信我
时间: 2024-12-22 18:48:37

.NET Core)的ZooKeeper异步客户端的相关文章

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

在公司内部的微服务架构中有使用到了"ZooKeeper",虽然官方有提供了.NET的SDK,但易用性非常的差,且搜遍github.nuget,没有发现一个可以跨平台且易用的组件,所以我又"美化"了一个轮子. 什么是ZooKeeper? ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件.它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护.域名服务.分布式

PostgreSQL异步客户端(并模拟redis 数据结构)

以前为了不在游戏逻辑(对象属性)变更时修改数据库,就弄了个varchar字段来表示json,由服务器逻辑(读取到内存)去操作它. 但这对运维相当不友好,也不能做一些此Json数据里查询. 所以后面就用了下ssdb,然而就在前几天才了解到postgresql支持json了(其实早在两年前就行了吧···) 就这点差不多就可以算当作mongodb用了,不过还是不支持redis的高级数据结构. 于是我就想模拟(实现)下redis(的数据结构). 就抽空看了下它的c api库:libpq,发现其请求-等待

Zookeeper【客户端启动】

今天我们来说说 Zookeeper 客户端启动,整个文章分三个部分:第一部分是 Zookeeper 原生 API 客户端,第二部分是开源客户端 ZkClient,第三部分是开源客户端 Curator. [Zookeeper API 客户端]

为什么dubbo使用ZkClient作为zookeeper的客户端

本文内容并非原创,使用资料均来自互联网. dubbo使用了zkClient而不是使用zookeeper本身的客户端与zookeeper进行交互,为什么呢? 先看看zookeeper本身自带的客户端的问题. 1)ZooKeeper的Watcher是一次性的,用过了需要再注册: 2) session的超时后没有自动重连,生产环境中如果网络出现不稳定情况,那么这种情况出现的更加明显:3) 没有领导选举机制,集群情况下可能需要实现stand by,一个服务挂了,另一个需要接替的效果:4) 客户端只提供了

zookeeper开源客户端curator

zookeeper的原生api相对来说比较繁琐,比如:对节点添加监听事件,当监听触发后,我们需要再次手动添加监听,否则监听只生效一次:再比如,断线重连也需要我们手动代码来判断处理等等.对于curator的介绍,从网上百度了一段:Curator是Netflix开源的一套zookeeper客户端框架,用它来操作zookeeper更加方便,按Curator官方所比喻的,guava to JAVA,curator to zookeeper,Curator采用了fluent风格的代码,非常简洁. ----

八:Zookeeper开源客户端Curator的api测试

curator是Netflix公司开源的一套ZooKeeper客户端,Curator解决了很多ZooKeeper客户端非常底层的细节开发工作.包括连接重连,反复注册Watcher等.实现了Fluent风格的API接口,目前已经为Apache的顶级项目,是全世界使用最广泛的ZooKeeper客户端之一 第一:maven依赖 1 <dependency> 2 <groupId>org.apache.curator</groupId> 3 <artifactId>

zookeeper java客户端使用

ZooKeeper是一个优秀的分布式协同工具,很多分布式项目都基于它进行架构设计,不过要想要对其有一个深入的理解(如果你想阅读其源代码),对其客户端API的熟悉必不可少.下面就简要记录一下ZooKeeper中各个API的简单用法. 这篇文章不打算对ZooKeeper的基本概念及安装进行讲解,想要了解这部分内容可以参考:http://zookeeper.apache.org/doc/r3.4.3/zookeeperOver.html , 或者可以参考:http://zookeeper.apache

Zookeeper开源客户端Curator之基本功能讲解

简介 Curator是Netflix公司开源的一套Zookeeper客户端框架.了解过Zookeeper原生API都会清楚其复杂度.Curator帮助我们在其基础上进行封装.实现一些开发细节,包括接连重连.反复注册Watcher和NodeExistsException等.目前已经作为Apache的顶级项目出现,是最流行的Zookeeper客户端之一.从编码风格上来讲,它提供了基于Fluent的编程风格支持. 除此之外,Curator还提供了Zookeeper的各种应用场景:Recipe.共享锁服

zookeeper(5)客户端

zookeeper客户端主要负责与用户进行交互,将命令发送到服务器,接收服务器的响应,反馈给用户.主要分为一下三层: 用户命令处理层 用户命令处理层的功能是读取用户输入的命令,解析用户命令和输入参数,根据命令和参数,进行一些校验,然后执行节点操作. 源码实例(ZooKeeperMain): 1 public class ZooKeeperMain { 2 // 命令解析器.用于解析命令 3 protected MyCommandOptions cl = new MyCommandOptions(