Можем ли мы использовать веб-сокеты для связи между микросервисами? - PullRequest
0 голосов
/ 04 февраля 2019

У нас есть случай использования, когда у нас есть два микроуслуги, Microservice A переводит долгосрочную задачу на Microservice B.

Microservice B начинает обработку задачи и продолжает обновлять статус задачи.Теперь Microservice A должен постоянно опрашивать Microservice B на предмет обновления статуса задачи.

У нас нет очередей в текущей настройке.

Итак, мы подумали о создании web socket между Microservice A и Microservice B, чтобы микросервис B мог выдвигать обновления статуса до Microservice A.Будет ли этот дизайн нарушать какой-либо из принципов Web sockets, а также будет ли он лучше по сравнению с постоянным опросом?

Ответы [ 2 ]

0 голосов
/ 18 марта 2019

Apache Pulsar может работать в качестве брокера сообщений и имеет интерфейс WS для отправки сообщений и прослушивания тем.Я сам еще не пробовал ... но я попробую использовать его для отправки и прослушивания событий в различных типах микросервисов.Pulsar сам по себе масштабируем и обеспечивает постоянную передачу сообщений и может быть установлен и запущен, например, в Kubernetes.Но я только прочитал об этом ... теперь я должен попробовать это сам :)).

0 голосов
/ 04 февраля 2019

Наиболее рекомендуемый вариант - добавить очередь:

  • Это уменьшит связь между микросервисом A и микросервисом B
  • Это позволит использовать Microservice C, который также будет заинтересованв статусе / результате задачи, чтобы знать об этом без каких-либо изменений для Microservices B

Если вы все еще пользуетесь websocket, вам придется рассмотреть случаи масштабируемости (что, если у вас есть два экземпляра MicroserviceB, какой из них вызывать), сбои (что, если произойдет сбой одного сервиса, кто перезапустит сокет ...) и несколько других.Вот почему это не лучший вариант для выполнения асинхронных вызовов в среде Microservices.

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