X/Открыть XA
Для обработки транзакций в вычислениях стандарт X/Open XA . (сокращение от «eXtended Architecture») — это спецификация, выпущенная в 1991 году [1] от X/Open (которая позже объединилась с The Open Group ) для распределенной обработки транзакций (DTP).
Цели
[ редактировать ]Цель XA — гарантировать атомарность «глобальных транзакций », которые выполняются в гетерогенных компонентах. Транзакция — это единица работы, такая как перевод денег от одного человека к другому. Распределенные транзакции обновляют несколько хранилищ данных (таких как базы данных, серверы приложений , очереди сообщений, кеши транзакций и т. д.). Чтобы гарантировать целостность, XA использует двухфазную фиксацию (2PC), чтобы гарантировать, что все изменения транзакции либо вступят в силу ( commit ) или не делать ( откатить ), т.е. атомарно .
Архитектура
[ редактировать ]В частности, XA описывает интерфейс между глобальным менеджером транзакций и конкретным приложением. Приложение, которое хочет использовать XA, задействует диспетчер транзакций XA, использующий библиотеку или отдельный сервис. Менеджер транзакций отслеживает участников транзакции (т. е. различные хранилища данных, в которые приложение записывает данные) и работает с ними для выполнения двухфазной фиксации. Другими словами, менеджер транзакций XA отделен от взаимодействия приложения с серверами. XA ведет журнал своих решений о фиксации или откате, который можно использовать для восстановления в случае сбоя системы. [1]
Многие поставщики программного обеспечения поддерживают XA (это означает, что программное обеспечение может участвовать в транзакциях XA), включая различные реляционные базы данных и брокеры сообщений. [1]
Преимущества и недостатки
[ редактировать ]Поскольку XA использует двухфазную фиксацию, преимущества и недостатки этого протокола обычно применимы к XA. Основное преимущество заключается в том, что XA (с использованием 2PC) позволяет выполнять атомарные транзакции с использованием нескольких гетерогенных технологий (например, одна транзакция может охватывать несколько баз данных от разных поставщиков, а также сервер электронной почты и брокер сообщений), тогда как традиционные транзакции с базами данных ограничиваются единая база данных.
Основным недостатком является то, что 2PC является протоколом блокировки: другим серверам приходится ждать, пока менеджер транзакций примет решение о том, следует ли фиксировать или прерывать каждую транзакцию. Если менеджер транзакций отключится от сети, пока транзакции ожидают окончательного решения, они будут зависать и удерживать блокировки базы данных до тех пор, пока менеджер транзакций снова не подключится к сети и не выдаст свое решение. Такое расширенное удержание блокировок может мешать работе других приложений, использующих те же базы данных. [1]
Более того, если менеджер транзакций выходит из строя и его запись о решениях не может быть восстановлена (например, из-за ошибки в протоколировании решений или из-за повреждения данных на сервере), может потребоваться вмешательство вручную. Многие реализации XA предоставляют транзакциям «аварийный люк», позволяющий самостоятельно решить, следует ли их фиксировать или прервать (не дожидаясь ответа от менеджера транзакций), но это рискует нарушить гарантию атомарности и поэтому зарезервировано на случай чрезвычайных ситуаций. [1]
Спецификация
[ редактировать ]Спецификация XA описывает, что должен делать менеджер ресурсов для поддержки транзакционного доступа. Менеджеры ресурсов, соответствующие этой спецификации, считаются XA-совместимыми .
Спецификация XA была основана на интерфейсе, используемом в системе Tuxedo , разработанном в 1980-х годах, но с тех пор принятом несколькими системами. [2]
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Перейти обратно: а б с д и Клеппманн, Мартин (2 апреля 2017 г.). Проектирование приложений с интенсивным использованием данных (1-е изд.). О'Рейли Медиа. стр. 361–364. ISBN 978-1449373320 .
- ^ Филип А. Бернштейн; Эрик Ньюкомер (2009). Принципы обработки транзакций . Морган Кауфманн. стр. 330–336. ISBN 978-1-55860-623-4 .