Сообщения: как выглядят ваши сообщения

Этот вопрос касается очереди сообщений между сервисной архитектурой. Вряд ли что-то найти по этой теме.

Ситуация: Микросервис А и микросервис Б. Микросервис А имеет дело с сущностью "что-то", а Б необходимо о. Я придерживаюсь общих принципов, чтобы избежать дискуссий о границах.

В нашем случае A отправляет сообщение, которое содержит идентификатор события и связанной сущности, такой как Event: somethingCreated SomethingID: 1234

B использует это сообщение, и, если ему нужна дополнительная информация, он извлекает ее из A с SomethingID.

Второй подход заключается в том, что сообщение содержит не только приведенную выше информацию, но и метаданные, такие как Event: SomeCreated SomethingID: 1234 SomeFieldKey: someFieldValue...

Lean message: Pro: * Меньшее использование сети * Всегда одинаковая структура сообщений Минусы: * Если информация от A требуется по требованию, должен быть какой-то механизм для отлова, например, сбои сети

Толстое сообщение: Pro: * Информация уже есть Con: * Что, если приложенной информации недостаточно?

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

Спасибо за ответы заранее

1 ответ

Ответ прост: все зависит от того, есть ли у нас сервисы, которые предоставляют все данные своим событиям, и у нас есть сервисы, которые просто разделяют ссылочный идентификатор, а также сервисы, которые находятся между этими двумя, когда дело доходит до полезной нагрузки события.

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

Когда потоки данных между сетями сервисов не являются проблемой для нас (я имею в виду не из-за увеличения размера полезной нагрузки)

Таким образом, вы должны разрешить вашим индивидуальным службам принимать вызовы. У каждого сервиса есть SLA, который соответствует времени отклика, и когда его нарушают, вы проверяете, выявляете узкие места и устраняете их.

Другие вопросы по тегам