В EDA сервисы реагируют на события. Event Notification сообщает о факте изменения, а Event-Carried State Transfer передаёт данные, достаточные для обновления локального состояния потребителя.
Что такое паттерн Event-Driven Architecture (EDA) и в чём разница между подходами Event Notification и Event-Carried State Transfer? Как выбор подхода влияет на степень связанности микросервисов и объём сетевого трафика?
В EDA сервисы реагируют на события. Event Notification сообщает о факте изменения, а Event-Carried State Transfer передаёт данные, достаточные для обновления локального состояния потребителя.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
В EDA сервисы реагируют на события. Event Notification сообщает о факте изменения, а Event-Carried State Transfer передаёт данные, достаточные для обновления локального состояния потребителя.
Уведомление вроде CustomerUpdated(id) компактно, но потребителю может потребоваться дополнительный запрос к источнику. Это создаёт временную зависимость от его доступности и дополнительный сетевой обмен.
Событие с нужными полями крупнее, зато позволяет поддерживать локальную проекцию и работать автономнее. Появляются требования к версиям схемы, порядку, повторной доставке и защите распространяемых данных. Передача состояния уменьшает зависимость во время выполнения, но не устраняет связанность контрактом. Выбирайте состав события по потребностям потребителей, не копируйте всю запись автоматически.