WikiSort.ru - Не сортированное

ПОИСК ПО САЙТУ | о проекте

XA (от англ. extended architecture[1], X/Open XA) — спецификация распределённых транзакций, определяющая принципы совместного участия транзакционных ресурсов в транзакции в условиях распределённых вычислений. Впервые описана в 1992 году, является фактическим стандартом реализации в менеджерах распределенных транзакций и реляционных базах данных.

XA-тразнакция — распределённая транзакция, выполняемая под управлением системы, удовлетворяющей спецификации XA.

История

К началу 1990-х годов существовало несколько различных стандартов распределённых транзакций, например, TPF, используемый и в гражданской авиации США и в 2010-е годы[2], CISC, VMS и другие. Один из них, SNA от IBM стал к тому времени стандартом de facto. Под влиянием этого стандарта и стандарта LU6.2 ISO создала несколько новых стандартов[3]:

  • Remote Operations Services (ROSE), определяющий как клиент вызывает сервер
  • Commit, Concurrency Control, and Recovery (OSI-CCR), определяющий сообщение фиксации (commit) в пределах одной сессии
  • Transaction Processing (OSI-TP), определяющий, как следует создавать идентификаторы транзакций и как ими управлять

Основным недостатком этих стандартов было отсутствие API, таким образом, они сообщали как менеджеры транзакций должны взаимодействовать, но не предоставляли правил написания переносимых приложений.

X/Open решил эту проблему, предоставив модель распределённых транзакций, и, одновременно с этим, специфицировав процедурный интерфейс взаимодействия участников транзакции (CLI), спецификацию XA.

Модель

В XA используется модель распределенных транзакций, состоящая из трёх компонент:

  1. Прикладная программа (AP) — программа, определяющая, из каких частей должна состоять транзакция, какие RM использовать и так далее. По сути именно здесь описывается бизнес-логика.
  2. Менеджер распределенных транзакций (TM) — он же координатор, координирует работу RM и принимает решение о закреплении или откате транзакции, используя двухфазный протокол фиксации транзакции (англ. Two-phase commit protocol).
  3. Менеджеры ресурсов (RM), такие как СУБД, используются для хранения информации.

Несмотря на то, что в модели фигурируют три компонента, спецификация XA определяет только взаимодействие между менеджерами ресурсов и транзакций.

Спецификация XA разделяет транзакции на локальные и глобальные. Локальные транзакции — самый простой вид транзакций, в них прикладная программа обращается только к одной СУБД и сама определяет, когда закреплять или откатывать транзакцию. То есть в них роль TM отводится AP. Глобальные (распределённые) транзакции — более сложный случай, в нём решение о фиксации изменений или откате ложится на плечи координатора, прикладная программа определяет только границы транзакций. Менеджер транзакций делит одну глобальную транзакцию на несколько выполняющихся локально веток (англ. branch), и при успешной фиксакции на каждой из веток осуществляет фиксацию всей глобальной транзакции, и осуществляет откат в противном случае.

Кроме того, спецификация поддерживает вложенные транзакции (nested transactions), которые полезны, например, для журналирования.

XA+

В спецификации XA+, выпущенной в 1994 году, определяются также транзакции, распределенные относительно приложений. В XA+ появляется ещё один участник транзакции — менеджер по ресурсному взаимодействию (Communication Resource Manager, CRM), который отвечает за координацию между несколькими менеджерами распределённых транзакций, в этой модели он отвечает за новые ветви транзакции, которые, в свою очередь, содержат ещё несколько ветвей, а также за генерацию идентификаторов транзакций.

Стандарты, основанные на XA

Несмотря на то, что XA специфицирует API лишь для языка Си, существуют реализации и на других языках программирования.

Java Transaction API — реализация XA для платформы J2EE, впервые выпущенная в 1999 году. В .Net Framework поддержка распределённых транзакций появилась лишь в версии 2.0, кроме XA, реализация распределённых транзакций .NET поддерживает OLE[4].

XA и OTS

В спецификации Object Transaction Service от Object Management Group 1991 года вносится транзакционность в CORBA. Благодаря тому, что спецификация не разделяет участников транзакции на RM и TM, только на клиент и сервер, имеется возможно использовать XA и OTS в одном клиент-серверном приложении. Кроме того, если один из RM не поддерживает XA, но поддерживает OTS, то эта связка является единственно возможным решением проблемы распределённых транзакций в таком окружении.

Связка XA и OTS используется в Java EE, где обёрткой над OTS является Java Transaction Service[en], а Java Transaction API в свою очередь отделяет JTS от AP.

Примечания

  1. Oracle FAQ: What does XA stand for
  2. См Transaction Processing: Concepts and Techniques, раздел 1.5
  3. См Transaction Processing: Concepts and Techniques, раздел 2.7.4
  4. INFO: Connections May Not Participate in MTS/COM+ Transactions When You Use OLE DB Directly

Ссылки

Литература

Данная страница на сайте WikiSort.ru содержит текст со страницы сайта "Википедия".

Если Вы хотите её отредактировать, то можете сделать это на странице редактирования в Википедии.

Если сделанные Вами правки не будут кем-нибудь удалены, то через несколько дней они появятся на сайте WikiSort.ru .




Текст в блоке "Читать" взят с сайта "Википедия" и доступен по лицензии Creative Commons Attribution-ShareAlike; в отдельных случаях могут действовать дополнительные условия.

Другой контент может иметь иную лицензию. Перед использованием материалов сайта WikiSort.ru внимательно изучите правила лицензирования конкретных элементов наполнения сайта.

2019-2025
WikiSort.ru - проект по пересортировке и дополнению контента Википедии