Что такое сага в контексте микросервисов?
- Что такое сага?
Сага — цепочка локальных транзакций в разных сервисах с компенсациями вместо одной распределённой транзакции.
- Каждый шаг коммитится в своей базе
- При сбое — компенсирующие действия для выполненных шагов
- Координация событиями или оркестратором
А ещё Пример: заказ → резерв на складе → оплата; оплата не прошла — снять резерв, отменить заказ
Подробно
У каждого сервиса своя база, поэтому общей транзакции на весь процесс не существует. Сага разбивает процесс на шаги: каждый коммитится локально, а при сбое на каком-то шаге выполняются компенсирующие действия для уже завершённых — например, возврат списанных денег. Важно, что компенсация не отменяет прошлое, а совершает обратное по смыслу действие, и промежуточные состояния видны другим участникам.
Что хотят услышать
- Определение и пример.
- Компенсации.
Частые ошибки
- Считать сагу разновидностью двухфазного коммита.
- Рассчитывать на атомарность всего процесса.
Проверьте себя
Один верный вариант. Подумайте, потом откройте ответ.
Показать варианты и ответ
- ✗Способ реплицировать базу данных между сервисами
- ✓Цепочка локальных транзакций с компенсациями вместо отката
- ✗Распределённая транзакция с общим координатором и двухфазным коммитом
- ✗Формат описания контрактов между сервисами
Что спросят дальше
- Чем хореография отличается от оркестрации?
- Почему в микросервисах отказались от двухфазного коммита?
Разбор темы
- Saga, CDC и event-driven consistency
Почему 2PC не подходит, сага и компенсации, хореография vs оркестрация, CDC и outbox-relay, eventual consistency и границы.
Связанные вопросы
Разбор собеседования с sotto
После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.