说说zookeeper【陆】_zkClient客户端


上篇文章:说说zookeeper【伍】_参数与命令


本文说说zookeeper最常用的两个客户端:zkClient和Curator。


zkClient


zkClient是github上一个开源的zookeeper客户端,在zookeeper原生接口上进行了包装,更加易用,内部实现了如Session超时重连、watcher反复注册等功能。


zkClient的构造参数:



创建节点create接口API



删除节点delete接口API



获取子节点列表


public List<String> getChildren(String path)

监听子节点列表


public List<String> subscribeChildChanges(String path, IZkChildListener listener)



其中,IZkChildListener是一个监听器接口,其定义如下:


public abstract interface IZkChildListener{
  public abstract void handleChildChange(String parentPath, List<String> currentChilds)
    throws Exception;
}



其中handleChildChange用来处理服务端发送过来的事件通知,API如下:



如果客户端对nodeA节点注册的IZkChildListener监听,那么将会收到事件通知类型如下:



三点说明:

1.客户端可以对一个不存在的节点进行子节点监听;

2.当子节点列表发生变化时,服务器会通知客户端,并将最新的子节点列表发送给客户端;

3.该几点本身的创建和删除也会通知客户端;


获取节点内容readDate接口API


public <T> T readData(String path, boolean returnNullIfPathNotExists)

该接口的返回值已经被反序列化为指定对象。



该接口对服务端事件监听采用如下Listener实现:


public abstract interface IZkDataListener
{
  public abstract void handleDataChange(String paramString, Object paramObject)
    throws Exception;

  public abstract void handleDataDeleted(String paramString)
    throws Exception;
}


IZkDataListener API参数


IZkDataListener事件说明




更新数据writeData接口API


public Stat writeDataReturnStat(String path, Object datat, int expectedVersion)




检查节点是否存在exists接口


public boolean exists(String path)

ZkClient和zookeeper原生API的区别


1.节点名称不用序列化;

2.可递归建立节点;

3.使用监听器实现watcher,listener不是一次性的,注册一次一直生效;

4.可逐层遍历删除非叶子节点;

5.可对不存在的节点进行子节点监听;

6.原生API的watcher只是一个监听,由服务端通知客户端,但是不会告知变化情况


下篇文章我们说说zookeeper另外一个客户端Curator的使用。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值