Saga pattern управляет распределёнными транзакциями между микросервисами без опоры на традиционные двухфазные коммиты. Он разбивает транзакцию на последовательность локальных транзакций, где каждый сервис завершает собственную операцию и запускает следующий шаг. Если какой-то шаг не удаётся, выполняются компенсирующие транзакции для отката предыдущих операций.
В choreography нет центрального контроллера — каждый сервис независимо реагирует на события.
Ключевая черта: децентрализованная, событийно-ориентированная коммуникация
Лучше всего подходит для: простых воркфлоу с небольшим количеством сервисов.
В orchestration центральный координатор (оркестратор) явно указывает каждому сервису, что делать.
Ключевая черта: централизованное управление и видимость
Лучше всего подходит для: сложных воркфлоу, требующих чёткого контроля и более простой отладки.
Оба подхода полагаются на компенсирующие транзакции для обработки ошибок — это обратные операции, которые отменяют эффект ранее выполненной локальной транзакции, обеспечивая итоговую согласованность во всей системе.
Паттерн Saga исключает необходимость в компенсирующих транзакциях, используя механизм распределённого консенсуса, подобный двухфазному коммиту.
Новый — ещё не проверен сообществом
Вы