Событийный сервис Kubernetes - PullRequest
1 голос
/ 13 января 2020

Я ищу решение для межсервисной связи.

У меня есть 1 служба и несколько модулей с входящим потоком gRP C. Первоначальный запрос вызывает внешний ресурс, который в конечном итоге инициирует запрос к этой службе с сообщением о состоянии. Это в отдельном потоке, и в этом примере он заканчивается на Pod B. Я бы хотел, чтобы PodA ответил этим сообщением о состоянии. Я попытался продемонстрировать это с помощью приведенного ниже рабочего процесса.

service workflow

Очевидное решение здесь заключается в добавлении некоторого шаблона обмена сообщениями, но я бы искал Помощь в определении, какой подход является лучшим. В приведенном ниже примере представлен сервис me sh sidecar, который направляет внешние запросы в очередь, на которую Pod A затем подписывается. При использовании AMQP, я бы, вероятно, хотел бы использовать прямой обмен .

servicemesg-solution

Любая дополнительная информация, пожалуйста, дайте мне знать.

1 Ответ

1 голос
/ 14 января 2020

Связь Pub-Sub между двумя микросервисами - это хорошая схема общения. Книга Облачные собственные шаблоны описывает именно это, и в некоторых случаях преимущество использования этого шаблона перед запросом-ответом. См. Главу 12.

12.2 Переход от запроса / ответа к событию, управляемому

12.3 Журнал событий

12.4 Источник событий

Это может быть реализовано с помощью нескольких технологий, но использование Kafka с микросервисами хорошо подходит. Kafka также является распределенной системой, разработанной для облачных вычислений, аналогичной принципам, используемым в Kubernetes.

Ваш пример

Чтобы применить это к вашему примеру, Очередь является брокером Kafka (или RabbitMQ?), и вам нужен способ отправки данных из внешнего ресурса в брокер. Если Внешний ресурс всегда отвечает на модуль, из которого поступил запрос, решение может быть sidecar . Если можно настроить «адрес ответа», это может быть независимая «служба адаптера», например, Kafka REST proxy , если Kafka используется в качестве посредника. Вероятно, есть соответствующие прокси для, например, RabbitMQ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...