Сначала проверьте, действительно ли данные должны принадлежать разным сервисам. Для распределённой операции обычно нужны локальные транзакции, надёжные события и координация с компенсациями.
Что делать, если между несколькими микросервисами нужно скоординированно записать какие-то данные?
Сначала проверьте, действительно ли данные должны принадлежать разным сервисам. Для распределённой операции обычно нужны локальные транзакции, надёжные события и координация с компенсациями.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Сначала проверьте, действительно ли данные должны принадлежать разным сервисам. Для распределённой операции обычно нужны локальные транзакции, надёжные события и координация с компенсациями.
Saga может связывать шаги, но не делает их одной атомарной транзакцией. Outbox помогает не потерять событие после записи, идемпотентность — безопасно повторить обработку. Определите промежуточные состояния и восстановление при сбое. Если инвариант требует немедленной атомарности, возможно, границу данных нужно объединить; 2PC подходит только при поддержке и осознанных компромиссах.