ZkClient之删除节点、更新节点、检测节点是否存在。
删除节点
在ZkClient中,可以通过以下API来删除指定节点:
- boolean delete(final String path)
- boolean delete(final String path, final AsyncCallback.VoidCallback callback, final Object context)
boolean deleteRecursive(String path)
该API方法的参数说明如下表所示。
参数名 说明 path 数据节点的完整节点路径 callback 注册一个异步回调函数 context 用于传递上下文信息的对象
通过调用这个接口,就可以对指定节点进行删除操作了。下面主要来看deleteRecursive接口。“在ZooKeeper中,只允许删除叶子节点。也就是说,如果一个节点存在至少一个子节点的话,那么该节点将无法被直接删除,必须先删除掉所有子节点”。但是在真正的生产使用中,我们的节点层级往往比较复杂,通常在4层左右。在这种情况下,如果每次都需要逐层遍历来删除节点,那么会非常繁琐。在ZkClient中,deleteRecursive这个接口将自动帮我们完成逐层遍历删除节点的工作,这为开发人员带来了不少便利。
更新节点
在ZkClient中,可以通过以下API来更新指定节点的数据:
- void writeData(String path, Object data)
- void writeData(final String path, Object data, final int expectedVersion)
该API方法的参数说明如下表所示。
参数名 说明 path 数据节点的完整节点路径 data 数据内容,可以是null expectedVersion 预期的数据版本。可以使用这个数据版本来实现类似CAS的原子操作
通过调用这个接口,就可以对指定节点进行数据更新了。
检测节点是否存在
在ZkClient中,可以通过以下API来检测指定节点是否存在:
boolean exists(final String path)
通过调用这个接口,就可以检测指定节点是否存在了。
还没有评论,来说两句吧...