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); }