Что делать, если между несколькими микросервисами нужно скоординированно записать какие-то данные?

Сначала проверьте, действительно ли данные должны принадлежать разным сервисам. Для распределённой операции обычно нужны локальные транзакции, надёжные события и координация с компенсациями.

Короткий ответ

Что ответить на собеседовании

Сначала проверьте, действительно ли данные должны принадлежать разным сервисам. Для распределённой операции обычно нужны локальные транзакции, надёжные события и координация с компенсациями.

Подробный разбор

Ответ с пояснениями

Сначала проверьте, действительно ли данные должны принадлежать разным сервисам. Для распределённой операции обычно нужны локальные транзакции, надёжные события и координация с компенсациями.

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

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее