лучший способ скопировать данные через 2 кластера zookeeper?

У меня запущено несколько кластеров zookeeper, моя цель — объединить данные об этих кластерах zk в один кластер zookeeper.

Поэтому копирование всех данных и журналов одного кластера zk в другой кластер zk для меня невозможно. Кроме того, мне может потребоваться изменить базу всего пути к каталогу, например, мне может потребоваться скопировать данные для /service1 в кластере zk1 в /c1/service1 в кластере zk 2.

в настоящее время я выполняю эту работу, пишу код клиента zk для чтения всего дерева каталогов с данными и информацией ACL в кластере zk 1 и записываю его в кластер zk 2.

Однако при таком подходе остаются некоторые проблемы:

  1. Трудно определить, какой узел обновляется в процессе копирования.
  2. последовательный узел может быть проблемой, я могу написать его только как обычный непоследовательный узел, в то время как для дальнейшего создания последовательного узла в новом кластере, поскольку порядковый номер последовательного узла создается в соответствии с информацией Cversion родительского узла (код выглядит как это, но кажется, что если какая-то операция удаления будет выполнена, значение немного сдвинется), так как я не мог контролировать Cversion родительского узла ( Могу ли я? ). Если Cversion меньше, чем порядковый номер существующего последовательного узла (это может произойти, поскольку мы копируем данные в новый кластер и игнорируем операцию истории), дальнейшее создание последовательного узла может привести к ошибке node.exist.

Так есть ли лучший способ достичь моей цели?


person Raymond    schedule 14.04.2015    source источник


Ответы (1)


Вы можете использовать zkcopy для копирования данных между двумя кластерами zookeeper.

person Raboo    schedule 13.06.2016