Саги из моего понимания предназначены для давних транзакций. По-другому, это может быть решением проблемы распределенной системы, которая должна быть завершена после внутренней или внешней координации различных систем. Основная идея c состоит в том, чтобы разбить всю транзакцию на несколько этапов или действий. Эти шаги могут выполняться в транзакциях атома c (единицах работы) и могут быть отменены / откатаны посредством реализации механизма повторного выполнения. Поскольку общие транзакции разбиты на несколько единиц работы, между отдельными единицами нет блокировки. Такая неблокирующая природа позволяет завершать длительные транзакции в минутах / часах или даже днях.
При 2 P C протокол работает в два этапа и является самым большим недостатком протокола двухфазного принятия. является то, что это протокол блокировки Это может быть приемлемо в рамках бизнес-системы (транзакции между службами будут достаточно быстрыми), но не идеально для долгосрочных или координируемых распределенных транзакций.
Сценарий использования Saga: если вы турагент, предоставляющий пакет праздники, ваши системы бронирования должны быть достаточно способными для завершения сквозной обработки пакета. Это включает в себя ваши услуги, проживание, короткие поездки, перелеты, питание, место и т. Д. c. В типичном сценарии система турагентов должна была бы выполнить серию координации между внутренним и внешним бизнесом, чтобы выполнить одну транзакцию, или выполнить откат, если один из участвующих бизнесов не сможет обслуживать.
2 P C сценарий использования: клиенту отправляется подтверждение по электронной почте, когда его продукт готов получить из магазина, при условии, что каждая задача обрабатывается несколькими системами.