#rabbitmq #microservices #distributed-computing #amqp #service-discovery
#rabbitmq #микросервисы #распределенные вычисления #amqp #обнаружение службы
Вопрос:
Я хотел бы поддерживать топологию микросервисов (нескольких разных типов) через AMQP (RabbitMQ) с центральным реестром для поддержания времени безотказной работы и конфигурации:
- Все микросервисы подключаются к AMQP и публикуют его присутствие
- Основная служба хочет обнаружить все рабочие службы определенного типа
- Перезапущенная рабочая служба считала бы свою последнюю конфигурацию из центрального хранилища
Такие продукты, как etcd и ZooKeeper, работают через HTTP, а не через AMQP.
Есть ли стандартный способ сделать это через AMQP?
Спасибо
Ответ №1:
Проблема RabbitMQ здесь заключается в том, что вам нужна особая настойчивость, но ее нет в RabbitMQ.
В частности, вы можете рассмотреть возможность использования функции «состояние мира» (отсутствует в RabbitMQ). По сути, это означает, что брокер запоминает последнее сообщение для данного ключа (или другой комбинации). Это может быть использовано для реализации службы обнаружения.
НО я все же рекомендую использовать, например, ZooKeeper, поскольку он также предоставляет инструменты для обнаружения внезапного отключения микросервиса; функция, которая требует активной функциональности «на стороне сервера».