Компенсационная сделка
В этой статье есть несколько проблем. Пожалуйста, помогите улучшить его или обсудите эти проблемы на странице обсуждения . ( Узнайте, как и когда удалять эти шаблонные сообщения )
|
Выполнение бизнес-процесса состоит из одной или нескольких транзакций . Каждая транзакция может состоять из нескольких отдельных операций, но в целом она перемещает систему между согласованными состояниями.
Существует две группы систем, в которых компенсационная сделка может применяться :
1. В контексте базы данных этого часто легко достичь с помощью транзакций и механизма фиксации / отката . [1] Логика компенсирующей транзакции может быть реализована как дополнительная поверх базы данных, поддерживающая фиксацию/откат. В этом случае мы можем уменьшить детализацию бизнес-транзакций.
2. Для систем, в которых отсутствует механизм фиксации/отката, можно отменить неудачную транзакцию с помощью компенсирующей транзакции , которая вернет систему в исходное состояние. Обычно это всего лишь обходной путь , который необходимо реализовать вручную, и он не может гарантировать, что система всегда будет находиться в согласованном состоянии. Разработчику системы, возможно, придется подумать о том, что произойдет, если компенсирующая транзакция также завершится неудачей.
Компенсирующие транзакции также используются в случае, если транзакция является долговременной (обычно называемой транзакциями Saga ), например, в бизнес-процессе, требующем ввода данных пользователем. В таких случаях данные будут помещены в постоянное хранилище, но впоследствии может потребоваться откат, возможно, из-за того, что пользователь решил отменить операцию. В отличие от обычных откатов, для отката долгоживущей транзакции и восстановления системы в исходное состояние обычно требуется определенная бизнес-логика. Этот тип транзакции отличается от распределенных транзакций (часто реализуемых с использованием протокола двухфазной фиксации ), поскольку, хотя оба типа транзакций могут привести к обновлению нескольких хранилищ данных, компенсирующие транзакции позволяют обновлениям охватывать длительный период времени.
Компенсирующие транзакции часто создаются в веб-сервисах , которые участвуют в выполнении бизнес-процессов и являются частью решения сервис-ориентированной архитектуры .
Обратите внимание, что компенсирующие транзакции не всегда работают. [2]
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Грей, Джим (июнь 1981 г.). «Концепция сделки: достоинства и ограничения». Материалы конференции по очень большим базам данных .
- ^ Основы архитектуры программного обеспечения: инженерный подход . О'Рейли Медиа. 2020. ISBN 978-1492043454 .