Как получить znode ip

У меня есть много сервисов, подключенных к zookeeper, и я хочу, чтобы сервис A мог получать IP-адрес сервиса B, когда сервис B подключен к zookeeper, есть ли какой-нибудь API, способный это сделать? Или я должен использовать другой файл конфигурации, чтобы записать IP всех служб?

1 ответ

Решение

Посмотрите, решит ли это вашу проблему: http://curator.apache.org/curator-x-discovery/

Zookeeper не предоставляет сервисное обнаружение "из коробки", но его легко реализовать самостоятельно.

Вы не сможете получить IP-адреса других подключенных клиентов (сервисов, в вашем случае) прямо из API Zookeeper. Чтобы подключить другие службы к кластеру, каждая служба должна по отдельности создать временный znode по определенному пути, например, /services, и установить необходимую информацию об адресации и именовании в качестве данных znode (IP, порт и т. Д.). Таким образом, вы можете перечислить этот путь и обнаружить активные службы, или посмотреть путь / services для любых изменений в конфигурации вашей службы.

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

Другие вопросы по тегам