跨2个zookeeper集群复制数据的最佳方法? [英] best way to copy data across 2 zookeeper cluster?

查看:45
本文介绍了跨2个zookeeper集群复制数据的最佳方法?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一些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:

  1. 难以确定在复制过程中更新了哪个节点.
  2. 顺序节点可能有问题,我只能把它写成普通的非顺序节点,而为了在新集群上进一步创建顺序节点,因为顺序节点的序号是根据父节点的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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆