Руководство о том, как заставить микросервисы эффективно взаимодействовать

#rest #design-patterns #microservices #api-design

#rest #шаблоны проектирования #микросервисы #api-дизайн

Вопрос:

Мы приступаем к разработке нового проекта, в котором у нас будет несколько микросервисов, взаимодействующих друг с другом для предоставления информации в облачной системе. Наше приложение будет разделено на множество сервисов, таких как Text Cleaner, Entities Extractor, Entities Resolver, Output Converter. Как вы можете видеть на диаграмме, у нас есть некоторое разветвление, когда ввод данных в одну службу требуется другой службе и так далее.

Только одна служба будет доступна снаружи. Другие будут внутренними. И мы должны обеспечивать синхронный ответ клиентам.

Я хотел проверить, может ли кто-нибудь указать мне здесь лучшие шаблоны:

1- Должны ли мы иметь один класс-оболочку, который содержит классы моделей для всех проектов как один, все детали необходимы в конечных выходных преобразователях или как должен передаваться поток данных, чтобы данные сортировались в последнем микросервисе. Мы хотим, чтобы системы были слабо связаны, и думаем о том, как организовать этот поток, не имея среднего уровня, который составляет все эти данные?

2- Как организовать этот поток? Сервисная сетка / шлюз Api?

Шаблоны потоков данных сервиса

Комментарии:

1. все ли эти сервисы доступны внешнему миру как независимые микросервисы? Или доступен только Test Cleaner? Кроме того, как ожидается результат .. это синхронный или асинхронный ответ?

2. Только один из сервисов будет доступен снаружи. Другие будут внутренними. Мы обеспечиваем синхронный ответ клиентам

Ответ №1:

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

если все эти службы развернуты на разных серверах (что должно быть в случае определения микросервисов для обеспечения масштабируемости); вы можете обмениваться данными через HTTP или с помощью какого-либо решения для обмена сообщениями, такого как JMS, или если вы развернуты в облаке; они предоставляют сервисы на основе рабочего процесса..

Комментарии:

1. Мы будем использовать облачный сервис в кластере ecs. Сроки очень жесткие, но мы посмотрим и сделаем это.. Спасибо

2. если вы уверены, что хотите ответить потребителю синхронно и после завершения всего процесса; тогда HTTP является единственным решением для связи между различными службами.. потому что мы используем JMS, чтобы сделать вещи асинхронными.