跨2个zookeeper集群复制数据的最佳方法? [英] best way to copy data across 2 zookeeper cluster?
问题描述
我有一些zookeeper集群正在运行,我的目标是将这些zk集群上的数据合并到一个zookeeper集群中.
I have some zookeeper clusters on running, my goal is to combine data on these zk clusters onto one single zookeeper cluster.
因此,将一个 zk 集群的整个数据和日志目录复制到另一个 zk 集群对我来说是不可能的.而且,我可能需要重新设置整个目录的路径,例如,我可能需要将 zk cluster1 上的/service1 的数据复制到 zk 集群 2 上的/c1/service1
So copy the whole data and log dir of one zk cluster to another zk cluster is not a possible approaching for me. And also, I might need to rebase one entire dir's path, for example, I might need to copy data for /service1 on zk cluster1 onto /c1/service1 on zk cluster 2
目前,我正在通过编写一些 zk 客户端代码来读取整个目录树以及 zk 集群 1 上的数据和 ACL 信息并将其写入 zk 集群 2 来完成这项工作.
currently, I am doing this work by write some zk client code to read the entire dir tree with data and ACL info on zk cluster 1 and write it to zk cluster 2.
但是,这种方法仍然存在一些问题:
However, there are some issues remain with this approaching:
- 难以确定在复制过程中更新了哪个节点.
- 顺序节点可能有问题,我只能把它写成普通的非顺序节点,而为了在新集群上进一步创建顺序节点,因为顺序节点的序号是根据父节点的Cversion信息创建的(代码看起来像这样,但似乎如果完成了一些删除操作,该值会移动一些 ) ,因为我无法控制父节点的 Cversion (我可以吗?).如果 Cversion 小于现有顺序节点的序列号(这可能发生,因为我们将数据复制到新集群并忽略历史操作),进一步创建顺序节点可能会导致 node.exist 错误.
那么有没有更好的方法来实现我的目标?
So is there any better way to achieve my goal?
推荐答案
可以使用zkcopy复制两个zookeeper集群之间的数据.
You can use zkcopy to copy data between two zookeeper clusters.
这篇关于跨2个zookeeper集群复制数据的最佳方法?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!