看起来像zookeeper CLI(zkCli.sh)不支持通配符 - 我没有看过动物园管理员代码来弄清楚它是否可能是设计明智的,或者我是否在这里遗漏了一些愚蠢的东西.
然后以递归方式删除以字符串开头的节点的最佳方法是什么.我想做的事情如下:
./zkCli.sh rmr abc*
Run Code Online (Sandbox Code Playgroud)
删除所有以abc开头的节点.除了使用Java/Python或类似的客户端之外,还有更简单的方法吗?或者换句话说,这只能通过ZK CLI实现吗?
不,当前zkCli.sh不支持通配符删除(根据DeleteCommand和DeleteAllCommand的实现
,它们是使用的类zkCli.sh)
但是,创建一个变通方法是非常直截了当的,例如在Python中使用Kazoo.查看这个要点,用法是:python zkDelAll.py /abc
有趣的是,它*是一个有效的路径字符,因此您可以使用路径创建一个znode /abc*.
编辑:要点的核心实现如下:
from kazoo.client import KazooClient
zk = KazooClient(hosts='localhost:2181')
zk.start()
for child in zk.get_children('/'):
if child.startswith('abc'):
zk.delete('/' + child)
zk.stop()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4280 次 |
| 最近记录: |