Как распределить заказ между всеми участниками? - PullRequest
0 голосов
/ 27 сентября 2019

Существует система, в которой участвуют три бизнес-участника:

  1. исполнителей
  2. клиентов (мобильное устройство, веб-интерфейс)
  3. заказов

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

Какой архитектурный подход и инструменты, протоколы использовать?

Правильно ли утверждать, что если я распределю бизнес-модель, то этоозначает, что я должен использовать распределенные системы, такие как Rabbit, Kafka?

Я знаю, что этот вопрос так широко, но в любом случае я буду рад получить любые предложения и рекомендации.

Ответы [ 2 ]

1 голос
/ 27 сентября 2019

Я бы порекомендовал посмотреть на Cadence Workflow .Его модель программирования значительно упрощает реализацию таких сценариев использования сервис-оркестрации.

Системы обмена сообщениями не подходят для оркестрации сервисов, которая выходит за рамки простых сценариев потоковой передачи или уведомлений.

1 голос
/ 27 сентября 2019

Обычно различают два типа модели обмена сообщениями - модель точка-точка (очередь семантическая) и модель издатель-подписчик (тема семантическая).Из вашего вопроса кажется, что вам нужно реализовать модель точка-точка.Таким образом, некоторые службы customer публикуют order в очереди, а один performer получает и обрабатывает их.Таким образом, диспетчеризация orders между performers автоматически обрабатывается системой обмена сообщениями.

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

Например, с Kafka вы можете достичь двухточечного , имея orders Kafka-topic и помещая все performers в одну группу потребителей.Таким образом, когда приходит order, он будет сбалансирован нагрузкой Kafka среди performers в той же группе потребителей, поэтому только один performer получит и обработает его.

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