Регистрация и обнаружение микросервисов через AMQP

#rabbitmq #microservices #distributed-computing #amqp #service-discovery

#rabbitmq #микросервисы #распределенные вычисления #amqp #обнаружение службы

Вопрос:

Я хотел бы поддерживать топологию микросервисов (нескольких разных типов) через AMQP (RabbitMQ) с центральным реестром для поддержания времени безотказной работы и конфигурации:

  • Все микросервисы подключаются к AMQP и публикуют его присутствие
  • Основная служба хочет обнаружить все рабочие службы определенного типа
  • Перезапущенная рабочая служба считала бы свою последнюю конфигурацию из центрального хранилища

Такие продукты, как etcd и ZooKeeper, работают через HTTP, а не через AMQP.

Есть ли стандартный способ сделать это через AMQP?

Спасибо

Ответ №1:

Проблема RabbitMQ здесь заключается в том, что вам нужна особая настойчивость, но ее нет в RabbitMQ.

В частности, вы можете рассмотреть возможность использования функции «состояние мира» (отсутствует в RabbitMQ). По сути, это означает, что брокер запоминает последнее сообщение для данного ключа (или другой комбинации). Это может быть использовано для реализации службы обнаружения.

НО я все же рекомендую использовать, например, ZooKeeper, поскольку он также предоставляет инструменты для обнаружения внезапного отключения микросервиса; функция, которая требует активной функциональности «на стороне сервера».