Я только что реализовал распределенную блокировку, используя Apache Curator и ZooKeeper в автономном режиме.
Я инициализировал CuratorFramework следующим образом:
CuratorFramework client = CuratorFrameworkFactory.newClient("localhost:2182", retryPolicy);
Все работало нормально, поэтому я попытался использовать ZooKeeper в режиме кластера. Я запустил три экземпляра и инициализировал CuratorFramework следующим образом:
CuratorFramework client = CuratorFrameworkFactory.newClient("localhost:2182,localhost:2182,localhost:2183", retryPolicy);
Как видите, я только что добавил адреса двух новых узлов.
Пока все хорошо.
Но как мне инициализировать клиента, когда я не знаю адреса каждого узла и соответственно размер кластера, потому что я хочу динамически масштабировать его? *
Я мог бы инициализировать его, указав только адрес первого узла, который будет всегда запускаться. Но если этот узел выходит из строя, куратор теряет соединение со всем кластером (я только что попробовал).