Как инициализировать CuratorFramework для кластера ZooKeeper с динамическим размером? - PullRequest
1 голос
/ 06 мая 2019

Я только что реализовал распределенную блокировку, используя Apache Curator и ZooKeeper в автономном режиме. Я инициализировал CuratorFramework следующим образом:

CuratorFramework client = CuratorFrameworkFactory.newClient("localhost:2182", retryPolicy);

Все работало нормально, поэтому я попытался использовать ZooKeeper в режиме кластера. Я запустил три экземпляра и инициализировал CuratorFramework следующим образом:

CuratorFramework client = CuratorFrameworkFactory.newClient("localhost:2182,localhost:2182,localhost:2183", retryPolicy);

Как видите, я только что добавил адреса двух новых узлов. Пока все хорошо.
Но как мне инициализировать клиента, когда я не знаю адреса каждого узла и соответственно размер кластера, потому что я хочу динамически масштабировать его? *
Я мог бы инициализировать его, указав только адрес первого узла, который будет всегда запускаться. Но если этот узел выходит из строя, куратор теряет соединение со всем кластером (я только что попробовал).

1 Ответ

0 голосов
/ 18 июля 2019

Вы всегда должны знать, где находятся ваши экземпляры Zookeeper.Невозможно подключиться к чему-либо, если вы не знаете, где оно находится - как вы можете?

Если вы можете подключиться к любому экземпляру, вы можете получить сведения о конфигурации и регулярно опрашивать их, чтобы сохранить данные о вашем соединениив актуальном состоянии, возможно?

может быть, посмотрите на https://zookeeper.apache.org/doc/r3.5.5/zookeeperReconfig.html#ch_reconfig_rebalancing

...