7.使用ZookeeperNet进行CDU操作参数详解

一、创建,删除,更新
1. zkCli.sh 中使用命令执行。
2. 学会查看api文档
  zookeeper C# driver 官方文档,文档是java代码的。
 
3. create操作中 各个参数的作用
  create 中可能抛出的异常(常见的三个异常):
  1. create /ctrip ,如果ctrip已经存在,就会抛出异常。
  2. create /ctrip/train , 如果说ctrip不存在,就会抛异常。
  3. create /ctrip/train , 如果说 ctrip是临时节点,要创建一个永久的train(永久),就会抛异常。
  4. znode数据的最大容量是,1MB
 
二、创建节点
            ZooKeeper zookeeper = new ZooKeeper("192.168.84.136:2181/datamip", TimeSpan.FromSeconds(5),new ZookeeperWatcher());

            //通过wait函数,等待ZookeeperWatcher 回调函数执行成功
            ZookeeperWatcher.countdownEvent.Wait();
            var list = zookeeper.GetChildren("/", false);
            var path = string.Empty;
            try
            {
                //添加节点
                path = zookeeper.Create("/v1dragon", Encoding.UTF8.GetBytes("helloworld"), 
                    Ids.OPEN_ACL_UNSAFE, CreateMode.Persistent); //持久的节点

                //CreateMode.Persistent; 持久的节点
                //CreateMode.EphemeralSequential; 临时顺序节点
                //CreateMode.PersistentSequential; 持久顺序节点
            }
            catch (KeeperException ex)
            {
                throw new Exception(ex.Message);
            }

创建成功
 
三、 删除节点
 
1. version 基于CAS的删除,还是强制删除。
2. delete 可能会有三种异常:
a. NoNode , 没有该节点
b. BadVersion, 错误的版本好
c. NotEmpty, 如果删除的父节点,下面有子节点,是不能被删除的。
递归删除 【stat numChildren: 标识是否有子节点】
  var path = string.Empty;
            try
            {//删除节点
                //先查询vdragon节点数据
                Stat stat = new Stat();
                zookeeper.GetData("/vdragon", false, stat);
                //获取节点版本号
                zookeeper.Delete("/vdragon", stat.Version); 
            }
            catch (KeeperException ex)
            {
                throw new Exception(ex.Message);
            }

节点被删除
 
 
四、更新节点
1. update可能抛出的异常
a. NoNode , 没有该节点
b. BadVersion, 错误的版本好
c. 数据不能超过1MB
 
  var path = string.Empty;
            try
            { 
                Stat stat = new Stat(); 
//修改节点 stat = zookeeper.SetData("/v1dragon", Encoding.UTF8.GetBytes("helloworlddragon"), -1); } catch (KeeperException ex) { throw new Exception(ex.Message); }

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
原文地址:https://www.cnblogs.com/dragon-L/p/8563723.html