Продвинутый
В чем разница между 2PC (Two-Phase Commit) и Saga?
Оба паттерна решают проблему распределенных транзакций.
2PC (Двухфазный коммит):
- Синхронный. Координатор блокирует записи во всех БД-участниках, спрашивает "Готовы?", и если все согласны — делает
COMMIT. - Минус: Жесткие блокировки, низкая производительность, не работает при обрыве сети (нарушает CAP-теорему).
Saga (Сага):
- Асинхронная. Разбивает процесс на цепочку локальных транзакций. Блокировок нет.
- Если шаг падает, запускаются компенсирующие транзакции (откаты) для предыдущих шагов.
- Плюс: Высокая скорость и масштабируемость. Идеально для микросервисов.