博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
四:ZK客户端Curator
阅读量:6684 次
发布时间:2019-06-25

本文共 1418 字,大约阅读时间需要 4 分钟。

hot3.png

apache原生的zookeeper不太友好,现在市面上有两种,一种是zkclient,在一中就是apache的curator,

相比于zkclient来说,curator文档更友好,提供了Fluent风格的API,更加易懂易操作

首先是创建zk连接

CuratorFramework client = builder.connectString("192.168.11.56:2180")  //ip:port

       .sessionTimeoutMs(30000)  //session timeouot

       .connectionTimeoutMs(30000)   //connect timeout

      .canBeReadOnly(false)  

       .retryPolicy(new ExponentialBackoffRetry(1000, 3))  //重试策略

       .namespace(namespace)  //命名空间

       .build();  

if(!client.isStart())

    client.start();  

创建节点:

    if(client.checkExists().forPath(path) == null)

        client.create().forPath(path, value.toBytes);

创建节点的时候还有临时节点,临时有序节点,永久有序节点,采用withMode(CreateMode.),CreateMode提供了集中实现

如果不判断的话,在节点存在的时候会抛出NodeExistsException

判断节点是否存在

    Stat stat = client.checkExists().forPath(path);

    stat类里面包含了很多信息,包括version,zxid,等信息,zk里面每次更新都会更新一次版本,采用乐观锁的策略,zxid是事务的id(zk里面,事务id采用64位,前32位表示了leader的统治期,后32位表示了事务的序号)

更新数据

  if(client.checkExists().forPath(path) != null)

        client.setData().forPath(path, value.toBytes);

如果不判断的话,在节点存在的时候会抛出NodeExistsException

删除数据:

if(client.checkExists().forPath(path) != null)

        client.delete().forPath(path);

如果不判断的话,在节点存在的时候会抛出NoNodeException

获取子节点:

if(client.checkExists().forPath(path) != null)

       List<String> childList = client.getChildren().forPath(path);

如果不判断的话,在节点存在的时候会抛出NoNodeException

监听:

监听分为监听Node和Path,node有nodeUpdate和nodeDelete时间,PathChildrenCache有添加子节点,删除子节点等监听,此处不再细说

其余Election,Lock,Automic等有兴趣的话可以去百度,很多

 

 

转载于:https://my.oschina.net/u/1034481/blog/823980

你可能感兴趣的文章
好程序员web前端技术之CSS3过渡
查看>>
java B2B2C源码电子商务平台 - Zuul回退机制
查看>>
记录Docker in Docker 安装(CentOS7)
查看>>
简单的写一个发布订阅器
查看>>
重学前端-js的类型问题
查看>>
Function类型
查看>>
Python学习
查看>>
ES6之let和const
查看>>
不用软件,手动修复双系统引导进win7,xp的多种方法
查看>>
python 访问需要HTTP Basic Authentication认证的资源
查看>>
java中比较字符串的大小用String的compareTo()
查看>>
plist使用
查看>>
Linux RAR 安装和使用
查看>>
【OC】【一秒就会】【collectionView 头部吸住功能】
查看>>
51CTO下载 好资料分享
查看>>
linux 下转换UTC到本地时间
查看>>
Linux的起源与各发行版的基本知识
查看>>
单播包、广播包、组播包、洪泛包
查看>>
iptables命令结构之命令
查看>>
RabbitMQ之Exchange分类
查看>>