`
liyonghui160com
  • 浏览: 775516 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Zookeeper .Net客户端代码

阅读更多

 

本来此客户端可以通过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);
            }

        }
    }
}

 

 

 

 

  • 大小: 1 KB
分享到:
评论
1 楼 yicong 2015-11-02  
    
非常感谢!
发现github里面的log4net版本太旧,和我们项目的版本冲突,只能再编译一个zookeepernet。

相关推荐

    支持.Net Core的ZooKeeper异步客户端.zip

    该项目使用了 Apache ZooKeeper .NET async Client 组件,除提供了基本的zk操作,还额外封装了常用的功能以便让.net开发者更好的使用zookeeper。 提供的功能 session过期重连 永久watcher 递归删除...

    zookeeper dotnet客户端源码

    ZooKeeper是一个分布式的...通过分析`ClientTests`类,我们可以深入理解ZooKeeper.NET客户端如何与服务器交互,以及如何在.NET环境中利用ZooKeeper实现分布式协调。这对于开发和维护使用ZooKeeper的应用程序至关重要。

    Zookeeper客户端Curator Framework使用代码

    Zookeeper客户端Curator Framework是Apache Zookeeper项目的一个高级封装库,它为开发者提供了一系列便捷的API,使得操作Zookeeper变得更加简单。本篇文章将深入探讨Curator Framework的主要功能、使用方法以及示例...

    dotnet-封装了常用的功能以更方便net开发者更好的使用zookeeper

    描述中的“提供了基本的zk操作外,还额外封装了常用的功能以更方便.net开发者更好的使用zookeeper”意味着这个.NET客户端不仅包含了Zookeeper的基本操作,如创建、删除、读取和更新节点,还扩展了一些实用功能,可能...

    C# 关于zookeeper主从选举的源码

    - 实际项目中,可以结合Zookeeper的.NET客户端库(如JilZK、NettyZK等)来更好地集成Zookeeper服务。 总的来说,这个项目提供了深入理解Zookeeper主从选举机制的机会,通过阅读和分析C#源码,开发者可以掌握如何在...

    ZooKeeperDemo示例

    在`ZooKeeperDemo-master`这个项目中,你可以期待看到如何在C#环境中设置ZooKeeper客户端,创建、读取、更新、删除ZNode以及注册和响应Watcher事件的示例代码。通过这些示例,你可以更好地理解和应用ZooKeeper在...

    ZookeeperNet实现分布式锁

    ZookeeperNet是.NET平台下的Zookeeper客户端库,它提供了简单易用的API来与Zookeeper服务器交互。主要功能包括连接、创建节点、读写节点数据、监听节点变化等。在本解决方案中,我们使用ZookeeperNet来实现分布式锁...

    zookeeper.zip

    通过阅读源代码,我们可以深入理解Zookeeper的内部工作机制,包括数据模型、选举算法、客户端与服务器通信等核心组件。 在分布式部署Zookeeper时,通常采用伪分布式模式进行测试和学习。在"zookeeper.zip"压缩包中...

    Spring+mybatis+SpingMVC+dubbo+zookeeper集成

    通过Spring+mybatis+SpingMVC+dubbo+zookeeper集成,客户端和服务端完成代码。运行代码前请先修改配置数据库配置文件log4j.properties和dubbo配置文件 spring-dubbo.xml。同时需要搭建好自己的zookeeper服务器。

    PyPI 官网下载 | Mopidy-Podcast-gpodder.net-0.1.0.tar.gz

    压缩包内的文件名称“Mopidy-Podcast-gpodder.net-0.1.0”很可能包含该插件的源代码、元数据、文档和其他资源。用户需要解压这个文件,然后按照Python项目的标准结构安装和配置。这通常包括查看项目根目录下的`setup...

    zookeeper + thrift实现的RPC 服务治理框架演示

    服务治理框架,一般存在与RPC的上一层,用来在大量RPC服务至上,协调客户端和服务器的调用工作。这个示例工程和我的博客《架构设计:系统间通信(13)——RPC实例Apache Thrift 下篇》...

    gRPC 之 .NET 6 中的使用介绍

    GRPC是一个高性能、通用的开源远程过程调用(RPC...gRPC还提供了很多扩展点,用于对框架进行功能定制和扩展,例如,通过开放负载均衡接口可以无缝的与第三方组件进行集成对接(Zookeeper、域名解析服务、SLB 服务等)。

    ZooKeeper 实现分布式锁的方法示例

    创建 .NET Core 控制台程序 Nuget 安装 ZooKeeperNetEx.Recipes 创建 ZooKeeper Client,然后实现锁方法。 锁方法 添加 Lock 方法,可以使用 ZooKeeper 分布式锁来实现锁的获取和释放操作。 ZooKeeper 分布式锁...

    利用myeclipse插件构建zk开发环境

    利用zk提供的API,开发者可以编写客户端代码来连接zk服务器,进行数据的增删改查、节点的创建和删除、设置和监听节点事件等操作。 7. **调试与测试**: MyEclipse的集成开发环境提供了强大的调试工具,可以设置...

    web服务开发学习实录(光盘)

    源码通常包括服务端的接口定义(如WSDL文档)、业务逻辑代码(可能使用Java、.NET或其他编程语言)以及客户端的调用示例。 视频教学讲座虽然未包含在提供的压缩包中,但通常会涵盖书中的关键概念和实际操作步骤。...

    webservicedemo

    通过这个"webservicedemo"项目,学习者可以深入理解Web服务的工作原理,如何创建服务接口,编写服务端代码,以及如何编写客户端代码来调用这些服务。同时,还可以了解到如何测试和调试Web服务,以及如何处理跨平台、...

    PyPI 官网下载 | pyrez-0.8.1.tar.gz

    pyrez-0.8.1.tar.gz是PyPI上发布的资源包,它是一个Python库,主要用于与暴雪娱乐公司的游戏平台——战网(Battle.net)进行数据交互。这个压缩包包含了pyrez库的源代码、文档和其他相关资源,供开发者在本地环境中...

    dubbo使用例子

    1. `dubbo_test_client`:这很可能是示例中的客户端代码,用于演示如何消费Dubbo服务。在Dubbo中,客户端通常负责发起远程调用,通过服务接口与服务提供者进行通信。这部分代码可能会包含服务引用(Service ...

    apollo1.9.0服务端.zip

    - **多语言支持**:Apollo提供了Java和.Net两种语言的客户端,同时社区也正在开发其他语言的客户端。 在部署Apollo服务端时,你需要按照官方文档的指引,配置相应的环境,包括数据库、Zookeeper或Etcd等依赖服务,...

    DistributedLock-master.zip

    1. **Redis分布式锁**:Redis因其高性能、丰富的数据结构和丰富的客户端支持,常被用作实现分布式锁的存储后端。`.netCore`中可以使用StackExchange.Redis库来与Redis交互,创建基于`SETNX`(设置如果不存在)和`...

Global site tag (gtag.js) - Google Analytics