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

Posted DotNet

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了.NET Core的ZooKeeper异步客户端(支持断线重连永久watcher递归操作并且能跨平台)相关的知识,希望对你有一定的参考价值。


来源:KAnts

cnblogs.com/ants/p/6209773.html


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


使用说明


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


创建连接



创建节点


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


获取节点数据


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


获取子节点


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


判断节点是否存在


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


删除节点


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


更新节点


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


订阅数据变化


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


订阅子节点变化



FAQ


什么时候会触发 "SubscribeDataChange" 事件 ?


在以下情况下会触发通过 "SubscribeDataChange" 方法订阅的事件:


  1. 节点被创建


  2. 节点被删除


  3. 节点数据发生改变


  4. zk连接重连成功


什么时候会触发 "SubscribeChildrenChange" 事件 ?


在以下情况下会触发通过 "SubscribeChildrenChange" 方法订阅的事件:


  1. 节点被创建


  2. 节点被删除


  3. 节点子节点发生改变


  4. zk连接重连成功


如何在 "xxxxChange" 事件中区分节点的状态 ?


在事件触发参数会有个类型为 "EventType" 的属性 "Type",通过该属性可以清楚的区分出节点变更的原因。


为什么要写这个程序,它与 "ZooKeeperEx" 有什么区别 ?


官方提供的组件,只提供了基本的api,在正常的zk使用情景中需要做非常复杂的事情,滋生出很多额外的代码并且不能保证其执行的正确性。


在java语言中也有对官方zk进行封装的包 ZKClient,当前组件也是参考了这个项目。具体组件包提供了什么功能请参考 "提供的功能" 这一节。


关注「DotNet」 

看更多精选 .Net 技术文章

↓↓↓

以上是关于.NET Core的ZooKeeper异步客户端(支持断线重连永久watcher递归操作并且能跨平台)的主要内容,如果未能解决你的问题,请参考以下文章

C# ASP.NET Core Entity Framework Core 异步 ToQueryable 比较

gRPC 在.Net core中使用gRPC

.NET Core多线程通关 异步

ASP.NET Core 中的异步延续在哪里排队?

.NET Core DI 中的异步提供程序

在ASP.NET和ASP.NET Core之间互相通讯的Rpc