- 自序
- 概述
- 安装和运行 Zookeeper
- Zookeeper 开发实例
- ZooKeeper 中的组和成员
- 创建组
- 加入组
- 成员列表
- 删除分组
- Zookeeper 服务
- 数据模型 Data Model
- 操作 Operations
- 实现 Implementation
- 数据一致性 Consistency
- 会话 Sessions
- ZooKeeper 应用程序 Building Applications with ZooKeeper
- 配置服务 Configuration Service
- 坚韧的 ZooKeeper 应用 The Resilient ZooKeeper Application
- 一个稳定的配置服务 A reliable configuration service
- 生产环境中的 ZooKeeper ZooKeeper in Production
- 韧性和性能 Resilience and Performance
- 配置
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
删除分组
下面让我们来看一下如何删除一个分组?
ZooKeeper 的 API 提供一个 delete()
方法来删除一个 znode。我们通过输入 znode 的 path 和版本号(version number)来删除想要删除的 znode。我们除了使用 path 来定位我们要删除的 znode,还需要一个参数是版本号。只有当我们指定要删除的本版号,与 znode 当前的版本号一致时,ZooKeeper 才允许我们将 znode 删除掉。这是一种 optimistic locking 机制,用来处理 znode 的读写冲突。我们也可以忽略版本号一致检查,做法就是版本号赋值为-1。
删除一个 znode 之前,我们需要先删除它的子节点,就下如下代码中实现的那样:
public class DeleteGroup extends ConnectionWatcher {
public void delete(String groupName) throws KeeperException,
InterruptedException {
String path = "/" + groupName;
try {
List<String> children = zk.getChildren(path, false);
for (String child : children) {
zk.delete(path + "/" + child, -1);
}
zk.delete(path, -1);
} catch (KeeperException.NoNodeException e) {
System.out.printf("Group %s does not exist\n", groupName);
System.exit(1);
}
}
public static void main(String[] args) throws Exception {
DeleteGroup deleteGroup = new DeleteGroup();
deleteGroup.connect(args[0]);
deleteGroup.delete(args[1]);
deleteGroup.close();
}
}
最后我们执行如下操作来删除 zoo group:
% java DeleteGroup localhost zoo
% java ListGroup localhost zoo
Group zoo does not exist
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论