Межсервисное общение в Микросервисах - PullRequest
0 голосов
/ 22 октября 2018

Я понимаю архитектуру, управляемую событиями, где служба подписывается на события для межсервисного взаимодействия.Событие может быть инициировано, когда объект создается / обновляется / удаляется ... но как можно добиться межсервисного взаимодействия в случае запросов GET.

Например: микросервис уведомлений, который возвращает список уведомлений продуктов дляконечный пользователь - должен прочитать настройки уведомлений пользователя (для каких продуктов он хочет получать уведомления), ему необходимо получить основную информацию о продукте (название продукта, цена) и службу уведомлений для самих данных уведомления.

Это можетбыть легко достижимым путем организации всех сервисов (сервис предпочтений, сервис продуктов) внутри сервиса уведомлений - но это приведет к тесной связи там.

Как правильно реализовать межсервисную связь в микросервисах, когда данныенужно получить из нескольких служб?

1 Ответ

0 голосов
/ 23 октября 2018

Здесь есть несколько недоразумений, и я постараюсь перечислить их.Событийно-ориентированные архитектуры на самом деле не предназначены для «межсервисного взаимодействия».Термин событие здесь относится к событиям, произошедшим с вашей системой, которые могут вызвать изменения состояния.Например, клише в этом примере - «депозит» и «снятие» - это события, связанные с доменом, которые произошли с вашей системой.Депозит в этом сценарии представляет собой сложение суммы транзакции в событии депозита , а снятие - вычитание события снятия .Управляемая событиями архитектура эффективно разъединяет данные и обрабатывает данные.

Этого можно легко достичь, организовав все сервисы (сервис предпочтений, сервис продуктов) внутри сервиса уведомлений - но это приведет кв тесной связи там.

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

Для управления продуктами вы можете получать уведомления длякаждый раз, когда вы создаете новый продукт, вы можете распространять имя продукта или идентификатор на шину событий с событием «ProductAdded», которое может заинтересовать службу уведомлений. Служба уведомлений может затем создать продукт как параметр, который пользователи могутподписаться на получение уведомлений.Дайте мне знать, если все это поможет, и если я могу уточнить что-нибудь еще.

...