Сообщения: как выглядят ваши сообщения
Этот вопрос касается очереди сообщений между сервисной архитектурой. Вряд ли что-то найти по этой теме.
Ситуация: Микросервис А и микросервис Б. Микросервис А имеет дело с сущностью "что-то", а Б необходимо о. Я придерживаюсь общих принципов, чтобы избежать дискуссий о границах.
В нашем случае A отправляет сообщение, которое содержит идентификатор события и связанной сущности, такой как Event: somethingCreated SomethingID: 1234
B использует это сообщение, и, если ему нужна дополнительная информация, он извлекает ее из A с SomethingID.
Второй подход заключается в том, что сообщение содержит не только приведенную выше информацию, но и метаданные, такие как Event: SomeCreated SomethingID: 1234 SomeFieldKey: someFieldValue...
Lean message: Pro: * Меньшее использование сети * Всегда одинаковая структура сообщений Минусы: * Если информация от A требуется по требованию, должен быть какой-то механизм для отлова, например, сбои сети
Толстое сообщение: Pro: * Информация уже есть Con: * Что, если приложенной информации недостаточно?
Так что у него есть как плюсы, так и минусы, и я собираюсь получить общее представление о том, какой подход вы используете.
Спасибо за ответы заранее
1 ответ
Ответ прост: все зависит от того, есть ли у нас сервисы, которые предоставляют все данные своим событиям, и у нас есть сервисы, которые просто разделяют ссылочный идентификатор, а также сервисы, которые находятся между этими двумя, когда дело доходит до полезной нагрузки события.
Наша точка зрения заключается в том, что служба, производящая события, в основном контролирует содержание полезных данных. Мы анализируем сценарий использования и отслеживаем использование вызовов событий и служб и, соответственно, и делаем полезную нагрузку толще или меньше. У нас есть верхний предел размера нашего сообщения, но кроме этого нет ограничений.
Когда потоки данных между сетями сервисов не являются проблемой для нас (я имею в виду не из-за увеличения размера полезной нагрузки)
Таким образом, вы должны разрешить вашим индивидуальным службам принимать вызовы. У каждого сервиса есть SLA, который соответствует времени отклика, и когда его нарушают, вы проверяете, выявляете узкие места и устраняете их.