XA

Поделись знанием:
(перенаправлено с «X/Open XA»)
Перейти к: навигация, поиск

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. Менеджер распределенных транзакций — он же координатор, координирует работу 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.

Напишите отзыв о статье "XA"

Примечания

  1. [www.orafaq.com/usenet/comp.databases.oracle.misc/2004/04/23/0521.htm 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. [support.microsoft.com/kb/240037 INFO: Connections May Not Participate in MTS/COM+ Transactions When You Use OLE DB Directly]

Ссылки

  • www2.opengroup.org/ogsys/jsp/publications/PublicationDetails.jsp?publicationid=11415 - DTP model
  • docs.oracle.com/cd/E13085_01/doc/timesten.1121/e13068/jta.htm - взят отсюда с небольшими изменениями
  • www.webservices.org/weblog/mark_little/web_services_transactions_and_heuristics

Литература

  • [pubs.opengroup.org/onlinepubs/009680699/toc.pdf The XA Specification]
  • [pubs.opengroup.org/onlinepubs/008057699/toc.pdf The XA+ Specification]
  • [www.amazon.com/Transaction-Processing-Concepts-Techniques-Management/dp/1558601902 Transaction Processing: Concepts and Techniques]
  • [www.amazon.com/Java-Transaction-Processing-Design-Implementation/dp/013035290X Java Transaction Processing: Design and Implementation]
  • [www2.opengroup.org/ogsys/jsp/publications/PublicationDetails.jsp?publicationid=11415 DTP Model]


Отрывок, характеризующий XA

– По нашему делу разве увеземся? – сказал Ферапонтов. – Дай до Дорогобужа по семи рублей за подводу. И я говорю: креста на них нет! – сказал он.
– Селиванов, тот угодил в четверг, продал муку в армию по девяти рублей за куль. Что же, чай пить будете? – прибавил он. Пока закладывали лошадей, Алпатыч с Ферапонтовым напились чаю и разговорились о цене хлебов, об урожае и благоприятной погоде для уборки.
– Однако затихать стала, – сказал Ферапонтов, выпив три чашки чая и поднимаясь, – должно, наша взяла. Сказано, не пустят. Значит, сила… А намесь, сказывали, Матвей Иваныч Платов их в реку Марину загнал, тысяч осьмнадцать, что ли, в один день потопил.
Алпатыч собрал свои покупки, передал их вошедшему кучеру, расчелся с хозяином. В воротах прозвучал звук колес, копыт и бубенчиков выезжавшей кибиточки.
Было уже далеко за полдень; половина улицы была в тени, другая была ярко освещена солнцем. Алпатыч взглянул в окно и пошел к двери. Вдруг послышался странный звук дальнего свиста и удара, и вслед за тем раздался сливающийся гул пушечной пальбы, от которой задрожали стекла.
Алпатыч вышел на улицу; по улице пробежали два человека к мосту. С разных сторон слышались свисты, удары ядер и лопанье гранат, падавших в городе. Но звуки эти почти не слышны были и не обращали внимания жителей в сравнении с звуками пальбы, слышными за городом. Это было бомбардирование, которое в пятом часу приказал открыть Наполеон по городу, из ста тридцати орудий. Народ первое время не понимал значения этого бомбардирования.
Звуки падавших гранат и ядер возбуждали сначала только любопытство. Жена Ферапонтова, не перестававшая до этого выть под сараем, умолкла и с ребенком на руках вышла к воротам, молча приглядываясь к народу и прислушиваясь к звукам.
К воротам вышли кухарка и лавочник. Все с веселым любопытством старались увидать проносившиеся над их головами снаряды. Из за угла вышло несколько человек людей, оживленно разговаривая.
– То то сила! – говорил один. – И крышку и потолок так в щепки и разбило.
– Как свинья и землю то взрыло, – сказал другой. – Вот так важно, вот так подбодрил! – смеясь, сказал он. – Спасибо, отскочил, а то бы она тебя смазала.
Народ обратился к этим людям. Они приостановились и рассказывали, как подле самих их ядра попали в дом. Между тем другие снаряды, то с быстрым, мрачным свистом – ядра, то с приятным посвистыванием – гранаты, не переставали перелетать через головы народа; но ни один снаряд не падал близко, все переносило. Алпатыч садился в кибиточку. Хозяин стоял в воротах.
– Чего не видала! – крикнул он на кухарку, которая, с засученными рукавами, в красной юбке, раскачиваясь голыми локтями, подошла к углу послушать то, что рассказывали.
– Вот чуда то, – приговаривала она, но, услыхав голос хозяина, она вернулась, обдергивая подоткнутую юбку.
Опять, но очень близко этот раз, засвистело что то, как сверху вниз летящая птичка, блеснул огонь посередине улицы, выстрелило что то и застлало дымом улицу.
– Злодей, что ж ты это делаешь? – прокричал хозяин, подбегая к кухарке.
В то же мгновение с разных сторон жалобно завыли женщины, испуганно заплакал ребенок и молча столпился народ с бледными лицами около кухарки. Из этой толпы слышнее всех слышались стоны и приговоры кухарки:
– Ой о ох, голубчики мои! Голубчики мои белые! Не дайте умереть! Голубчики мои белые!..
Через пять минут никого не оставалось на улице. Кухарку с бедром, разбитым гранатным осколком, снесли в кухню. Алпатыч, его кучер, Ферапонтова жена с детьми, дворник сидели в подвале, прислушиваясь. Гул орудий, свист снарядов и жалостный стон кухарки, преобладавший над всеми звуками, не умолкали ни на мгновение. Хозяйка то укачивала и уговаривала ребенка, то жалостным шепотом спрашивала у всех входивших в подвал, где был ее хозяин, оставшийся на улице. Вошедший в подвал лавочник сказал ей, что хозяин пошел с народом в собор, где поднимали смоленскую чудотворную икону.
К сумеркам канонада стала стихать. Алпатыч вышел из подвала и остановился в дверях. Прежде ясное вечера нее небо все было застлано дымом. И сквозь этот дым странно светил молодой, высоко стоящий серп месяца. После замолкшего прежнего страшного гула орудий над городом казалась тишина, прерываемая только как бы распространенным по всему городу шелестом шагов, стонов, дальних криков и треска пожаров. Стоны кухарки теперь затихли. С двух сторон поднимались и расходились черные клубы дыма от пожаров. На улице не рядами, а как муравьи из разоренной кочки, в разных мундирах и в разных направлениях, проходили и пробегали солдаты. В глазах Алпатыча несколько из них забежали на двор Ферапонтова. Алпатыч вышел к воротам. Какой то полк, теснясь и спеша, запрудил улицу, идя назад.
– Сдают город, уезжайте, уезжайте, – сказал ему заметивший его фигуру офицер и тут же обратился с криком к солдатам:
– Я вам дам по дворам бегать! – крикнул он.
Алпатыч вернулся в избу и, кликнув кучера, велел ему выезжать. Вслед за Алпатычем и за кучером вышли и все домочадцы Ферапонтова. Увидав дым и даже огни пожаров, видневшиеся теперь в начинавшихся сумерках, бабы, до тех пор молчавшие, вдруг заголосили, глядя на пожары. Как бы вторя им, послышались такие же плачи на других концах улицы. Алпатыч с кучером трясущимися руками расправлял запутавшиеся вожжи и постромки лошадей под навесом.