Ограничьте количество клиентов, выполняющих задачу. Что лучше сдать в аренду или посмотреть событие на эфемерных узлах - PullRequest
0 голосов
/ 17 июня 2020

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

Подробности:

Когда служба запускается, все клиентские машины в кластере проверяют каталог или znode на ZooKeeper, который соответствует имени кластера, «mycluser». Если не существует, создается znode «mycluster». Затем все клиенты пытаются создать эфемерные znodes в каталоге mycluster или znode. Я хочу установить ограничение, скажем 5, на количество эфемерных узлов, которые могут быть созданы в «mycluster», например: mycluster / node_1 mycluster / node_2 ... mycluster / node_5

Другие клиенты блокируют при событии наблюдения . Когда эфемерный znode удаляется из-за узла cra sh, оставшиеся клиенты уведомляются и пытаются создать эфемерный znode. В любое время только клиенты с znode могут собирать данные профилирования. Есть ли сценарий (bash, php, python, perl) для выполнения этой задачи? Я вижу, что доступна клиентская библиотека Python, kazoo, но нужна помощь, чтобы правильно ее использовать для достижения желаемой цели.

...