本来此客户端可以通过NuGet获取,如果会使用NuGet, 则可以使用命令Install-Package ZooKeeperNet(需要最新版本的NuGet)
如果不会,就去 NuGet官网了解http://docs.nuget.org/docs/start-here/using-the-package-manager-console
如果你想自己编译 你可以去GitHub下载源码https://github.com/ewhauser/zookeeper
donet编译时会报出Genrated里的文件无法打开,实际上刚开始是没有的;
最后在网上查了很多资料和源码里的说明文档
ewhauser-zookeeper-a52ff80\src\java\main\org\apache\jute\package.html
ewhauser-zookeeper-a52ff80\src\java\main\org\apache\jute\compiler\package.html,
原来是hadoop的Rcc(是用JAVA编写的 源文件中可以找到),这个东西作用是src下的zookeeper.jute文件转换为C C++ java的数据结构 好像原来是没有C#的,是后来作者加上的,这里就先不管了,可以用就行,接下来说说怎么生成 ewhauser-zookeeper-a52ff80\src\dotnet\ZooKeeperNet\Generated的文件
我们需要运行ant命令
如果不知道ant,那google把
配置好ant 后 运行
ant -file build.xml
这样运行后等待build successfully 你的ewhauser-zookeeper-a52ff80\src\dotnet\ZooKeeperNet\Generated就有文件了
现在就能将zookeeperNet编译为Dll了
我编译的时候发现有MiscUtil.dll不存在的警告 ,所以我还是去把这个dll下载了下来
注意这个客户端必须要用.NET4.0编译
以下整理过的donet的源文件包,大家参考使用
通过C#代码使用zookeeper
Zookeeper的使用主要是通过创建其Nuget ZooKeeperNet包下的Zookeeper实例,并且调用其接口方法进行
的,主要的操作就是对znode的增删改操作,监听znode的变化以及处理。
using System; using System.Collections.Generic; using System.Linq; using System.Text; using ZooKeeperNet; namespace ZookeeperDemo { class Watcher : IWatcher { public void Process(WatchedEvent @event) { if (@event.Type == EventType.NodeDataChanged) { Console.WriteLine(@event.Path); } } } } using System; using System.Collections.Generic; using System.Linq; using System.Text; using ZooKeeperNet; namespace ZookeeperDemo { class Program { static void Main(string[] args) { //创建一个Zookeeper实例,第一个参数为目标服务器地址和端口,第二个参数为Session超时时间,第三个为节点变化时的回调方法 using (ZooKeeper zk = new ZooKeeper("127.0.0.1:2181", new TimeSpan(0, 0, 0, 50000), new Watcher())) { var stat = zk.Exists("/root",true); ////创建一个节点root,数据是mydata,不进行ACL权限控制,节点为永久性的(即客户端shutdown了也不会消失) //zk.Create("/root", "mydata".GetBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.Persistent); //在root下面创建一个childone znode,数据为childone,不进行ACL权限控制,节点为永久性的 zk.Create("/root/childone", "childone".GetBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.Persistent); //取得/root节点下的子节点名称,返回List<String> zk.GetChildren("/root", true); //取得/root/childone节点下的数据,返回byte[] zk.GetData("/root/childone", true, null); //修改节点/root/childone下的数据,第三个参数为版本,如果是-1,那会无视被修改的数据版本,直接改掉 zk.SetData("/root/childone", "childonemodify".GetBytes(), -1); //删除/root/childone这个节点,第二个参数为版本,-1的话直接删除,无视版本 zk.Delete("/root/childone", -1); } } } }
相关推荐
该项目使用了 Apache ZooKeeper .NET async Client 组件,除提供了基本的zk操作,还额外封装了常用的功能以便让.net开发者更好的使用zookeeper。 提供的功能 session过期重连 永久watcher 递归删除...
ZooKeeper是一个分布式的...通过分析`ClientTests`类,我们可以深入理解ZooKeeper.NET客户端如何与服务器交互,以及如何在.NET环境中利用ZooKeeper实现分布式协调。这对于开发和维护使用ZooKeeper的应用程序至关重要。
Zookeeper客户端Curator Framework是Apache Zookeeper项目的一个高级封装库,它为开发者提供了一系列便捷的API,使得操作Zookeeper变得更加简单。本篇文章将深入探讨Curator Framework的主要功能、使用方法以及示例...
描述中的“提供了基本的zk操作外,还额外封装了常用的功能以更方便.net开发者更好的使用zookeeper”意味着这个.NET客户端不仅包含了Zookeeper的基本操作,如创建、删除、读取和更新节点,还扩展了一些实用功能,可能...
- 实际项目中,可以结合Zookeeper的.NET客户端库(如JilZK、NettyZK等)来更好地集成Zookeeper服务。 总的来说,这个项目提供了深入理解Zookeeper主从选举机制的机会,通过阅读和分析C#源码,开发者可以掌握如何在...
在`ZooKeeperDemo-master`这个项目中,你可以期待看到如何在C#环境中设置ZooKeeper客户端,创建、读取、更新、删除ZNode以及注册和响应Watcher事件的示例代码。通过这些示例,你可以更好地理解和应用ZooKeeper在...
ZookeeperNet是.NET平台下的Zookeeper客户端库,它提供了简单易用的API来与Zookeeper服务器交互。主要功能包括连接、创建节点、读写节点数据、监听节点变化等。在本解决方案中,我们使用ZookeeperNet来实现分布式锁...
通过阅读源代码,我们可以深入理解Zookeeper的内部工作机制,包括数据模型、选举算法、客户端与服务器通信等核心组件。 在分布式部署Zookeeper时,通常采用伪分布式模式进行测试和学习。在"zookeeper.zip"压缩包中...
通过Spring+mybatis+SpingMVC+dubbo+zookeeper集成,客户端和服务端完成代码。运行代码前请先修改配置数据库配置文件log4j.properties和dubbo配置文件 spring-dubbo.xml。同时需要搭建好自己的zookeeper服务器。
压缩包内的文件名称“Mopidy-Podcast-gpodder.net-0.1.0”很可能包含该插件的源代码、元数据、文档和其他资源。用户需要解压这个文件,然后按照Python项目的标准结构安装和配置。这通常包括查看项目根目录下的`setup...
服务治理框架,一般存在与RPC的上一层,用来在大量RPC服务至上,协调客户端和服务器的调用工作。这个示例工程和我的博客《架构设计:系统间通信(13)——RPC实例Apache Thrift 下篇》...
GRPC是一个高性能、通用的开源远程过程调用(RPC...gRPC还提供了很多扩展点,用于对框架进行功能定制和扩展,例如,通过开放负载均衡接口可以无缝的与第三方组件进行集成对接(Zookeeper、域名解析服务、SLB 服务等)。
创建 .NET Core 控制台程序 Nuget 安装 ZooKeeperNetEx.Recipes 创建 ZooKeeper Client,然后实现锁方法。 锁方法 添加 Lock 方法,可以使用 ZooKeeper 分布式锁来实现锁的获取和释放操作。 ZooKeeper 分布式锁...
利用zk提供的API,开发者可以编写客户端代码来连接zk服务器,进行数据的增删改查、节点的创建和删除、设置和监听节点事件等操作。 7. **调试与测试**: MyEclipse的集成开发环境提供了强大的调试工具,可以设置...
源码通常包括服务端的接口定义(如WSDL文档)、业务逻辑代码(可能使用Java、.NET或其他编程语言)以及客户端的调用示例。 视频教学讲座虽然未包含在提供的压缩包中,但通常会涵盖书中的关键概念和实际操作步骤。...
通过这个"webservicedemo"项目,学习者可以深入理解Web服务的工作原理,如何创建服务接口,编写服务端代码,以及如何编写客户端代码来调用这些服务。同时,还可以了解到如何测试和调试Web服务,以及如何处理跨平台、...
pyrez-0.8.1.tar.gz是PyPI上发布的资源包,它是一个Python库,主要用于与暴雪娱乐公司的游戏平台——战网(Battle.net)进行数据交互。这个压缩包包含了pyrez库的源代码、文档和其他相关资源,供开发者在本地环境中...
1. `dubbo_test_client`:这很可能是示例中的客户端代码,用于演示如何消费Dubbo服务。在Dubbo中,客户端通常负责发起远程调用,通过服务接口与服务提供者进行通信。这部分代码可能会包含服务引用(Service ...
- **多语言支持**:Apollo提供了Java和.Net两种语言的客户端,同时社区也正在开发其他语言的客户端。 在部署Apollo服务端时,你需要按照官方文档的指引,配置相应的环境,包括数据库、Zookeeper或Etcd等依赖服务,...
1. **Redis分布式锁**:Redis因其高性能、丰富的数据结构和丰富的客户端支持,常被用作实现分布式锁的存储后端。`.netCore`中可以使用StackExchange.Redis库来与Redis交互,创建基于`SETNX`(设置如果不存在)和`...