stringtranslate.com

Распределенная транзакция

Распределенная транзакция работает в распределенной среде , обычно вовлекая несколько узлов в сети в зависимости от местоположения данных. Ключевым аспектом распределенных транзакций является атомарность , которая гарантирует, что транзакция будет завершена полностью или не будет выполнена вообще. Важно отметить, что распределенные транзакции не ограничиваются базами данных . [1]

Консорциум поставщиков Open Group предложил модель распределенной обработки транзакций X/Open (X/Open XA), которая стала фактическим стандартом поведения компонентов модели транзакций.

Базы данных являются обычными транзакционными ресурсами, и часто транзакции охватывают несколько таких баз данных. В этом случае распределенную транзакцию можно рассматривать как транзакцию базы данных , которая должна быть синхронизирована (или предоставлять свойства ACID ) среди нескольких участвующих баз данных , которые распределены по разным физическим местоположениям. Свойство изоляции (I от ACID) представляет особую проблему для транзакций с несколькими базами данных, поскольку свойство (глобальной) сериализуемости может быть нарушено, даже если каждая база данных предоставляет его (см. также глобальная сериализуемость ). На практике большинство коммерческих систем баз данных используют сильную строгую двухфазную блокировку (SS2PL) для управления параллелизмом , которая обеспечивает глобальную сериализуемость, если все участвующие базы данных используют ее.

Распространенным алгоритмом для обеспечения корректного завершения распределенной транзакции является двухфазная фиксация (2PC). Этот алгоритм обычно применяется для обновлений, которые могут быть зафиксированы за короткий промежуток времени, от пары миллисекунд до пары минут.

Существуют также долгоживущие распределенные транзакции, например, транзакция по бронированию поездки, которая состоит из бронирования рейса, аренды автомобиля и отеля. Поскольку бронирование рейса может занять до дня, чтобы получить подтверждение, двухфазная фиксация здесь не применима, она заблокирует ресурсы на это время. В этом случае используются более сложные методы, которые включают несколько уровней отмены. Так же, как вы можете отменить бронирование отеля, позвонив на стойку регистрации и отменив бронирование, можно разработать систему для отмены определенных операций (если они не завершены необратимо).

На практике долгоживущие распределенные транзакции реализуются в системах на основе веб-сервисов . Обычно эти транзакции используют принципы компенсирующих транзакций , Оптимизма и Изоляции без блокировки. Стандарт X/Open не охватывает долгоживущие распределенные транзакции. [ необходима цитата ]

Несколько технологий, включая Jakarta Enterprise Beans и Microsoft Transaction Server, полностью поддерживают стандарты распределенных транзакций.

Синхронизация

В архитектурах, управляемых событиями , распределенные транзакции могут быть синхронизированы с использованием парадигмы «запрос-ответ» , и это может быть реализовано двумя способами: [2]

Смотрите также

Ссылки

  1. ^ Грей, Джим. Концепции и методы обработки транзакций . Морган Кауфманн. ISBN 9780080519555.
  2. ^ Ричардс, Марк. Основы архитектуры программного обеспечения: инженерный подход . O'Reilly Media. ISBN 978-1492043454.

Дальнейшее чтение