SA Шпаргалка

Все ответы в 2 клика

Продвинутый

Как решить проблему распределенных транзакций в микросервисах?

Так как в микросервисах у каждого сервиса своя БД, мы не можем сделать классический SQL COMMIT сразу для трех баз.

Решение: Паттерн Saga (Сага)
Глобальная бизнес-транзакция разбивается на цепочку локальных транзакций.
1. Сервис А делает свою часть и кидает событие.
2. Сервис Б делает свою часть.
3. Если Сервис В падает с ошибкой (например, нет товара на складе), запускается обратный процесс — Компенсирующие транзакции.
4. Сервис Б и Сервис А получают команду отменить свои действия (вернуть деньги, отменить бронь), возвращая систему в исходное консистентное состояние.

Сложная тема? Разберём на мок-интервьюЗаписаться на менторство →

Ещё вопросы раздела «Микросервисы»

Все вопросы раздела «Микросервисы»