Какова основная проблема микросервисов при раздельных данных и как решать распределённую согласованность?

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

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

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

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

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

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

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

Локальные изменения фиксируют транзакцией сервиса, публикацию события связывают с ними через outbox. Длинный процесс организуют сагой с идемпотентными шагами и компенсациями, которые не всегда являются точным rollback. Для чтения можно строить проекции и показывать промежуточные статусы. Сильная синхронная согласованность тоже возможна специальными протоколами, но увеличивает связность и стоимость отказов. Иногда лучший ответ — не разделять тесно связанный инвариант между сервисами вовсе.

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

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

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

Подробнее