Стандарты и механизмы управления транзакциями в распределенной corba/J2ee-среде



Дата07.11.2012
Размер97.8 Kb.
ТипДокументы

Секция “Стандарты в средствах интеграции приложений”

Стандарты и механизмы управления транзакциями в распределенной CORBA/J2EE-среде



Цимбал Александр Анатольевич

BiTechnology, Москва

tsimbal@bitechnology.ru

Цель доклада – представление стандартов управления распределенными транзакциями CORBA OTS [Document formal/01-11-03 (Transaction Service, v1.2.1), http://www.omg.org/cgi-bin/doc?formal/2001-11-03] и JTS (http://java.sun.com/products/jts/) и его взаимодействием с серверной компонентной моделью Enterprise JavaBeans (EJB).

CORBA (и ее составная часть – Object Transaction Service) развивается консорциумом OMG (www.omg.org), членами которого являются более 800 производителей и крупнейших потребителей программного обеспечения. JTS стандартизована в рамках Java Community Process (JCP, www.jcp.org). Данная модель управления транзакциями построена в соответствии с моделью Distributed Transaction Process (DTP) консорциума Open Group (www.opengroup.org), созданного в результате слияния консорциумов X/Open и OSF.

Основными языками, на которые ориентированы эти технологии, являются C++ и Java.
Роль транзакций при построении распределенных систем
Управление транзакциями – один из важнейших аспектов при создании надежных распределенных систем, хотя в различных технологиях создания таких систем степень универсальности управления транзакциями может существенно варьироваться.

Распределенная система является совокупностью взаимодействующих объектов, в общем случае имеющих состояния. Важнейшим отличием распределенных (многозвенных) систем от классических клиент-серверных приложений является то, что при начале транзакции в принципе неизвестно, сколько объектов, состояние которых нужно сохранять или восстанавливать по обычным правилам транзакций, принимают в этой транзакции участие. Клиент, посылающий запрос серверному объекту, в общем случае не знает, какую цепочку вызовов (и к каким объектам) породит этот единственный запрос. О цепочке вызовов в целом не имеет представление ни один из участвующих в ней объектов.

Основные проблемы





  • Необходимо иметь дополнительного участника (помимо объектов-участников и клиента), к которому стекается вся информация о транзакции.


  • Уникальный идентификатор транзакции вместе с некоторой дополнительной информацией (“контекст транзакции”) должен передаваться при вызове каждого метода, выполняемого в рамках этой транзакции.

  • Необходимо обеспечить механизм неявной передачи контекста транзакции, так как иначе каждый метод каждого объекта в распределенной системе в общем случае требовал бы наличия такого аргумента.

  • При неявной передаче контекста транзакции необходимо обеспечить универсальный и переносимый механизм доступа к нему из кода вызываемого метода.

  • Необходимо обеспечить универсальный механизм регистрации всех объектов -участников данной транзакции, состояние которых должно управляться по обычным правилам управления транзакциями (“фиксация изменений” -­ “восстановление состояния до транзакции”).

  • Необходимо обеспечить естественную стыковку с программными средствами, которые стандартным образом могут обеспечить сохранение и восстановление состояния объектов (например, с SQL-серверами баз данных).

  • При наличии нескольких объектов, которые участвуют в транзакции и изменяют свое состояние в соответствии с логикой прохождения транзакций, другими словами, при наличии распределенных транзакций – необходимо обеспечить механизм надежного завершения транзакции при “ошибке” в любом из звеньев системы (так называемая “двухфазная схема подтверждения транзакций”).


Модель распределенных транзакций DTP

Согласно несколько упрощенной модели DTP, участниками транзакционной распределенной системы являются;

  • прикладная программа (программы). Это одно или несколько приложений, реализующие бизнес-логику распределенной системы;

  • Менеджер Транзакций (Transaction Manager, TM). Это приложение, задачей которого является управление выполнением транзакций в распределенной системе. TM не начинает и не завершает транзакции – это задача прикладной программы;

  • Менеджер Ресурсов (Resource Manager, RM). Это одно или нескольких приложений, которые обеспечивают сохранение и восстановление состояний объектов, участвующих в транзакции. Концептуально RM выполняет ту же роль, что и, например, CУБД.

Эти три участника должны, естественно, “общаться” между собой в процессе функционирования системы. Для формализации такого взаимодействия DTP определяет два стандартных протокола:

  • Интерфейс TX. Этот интерфейс содержит методы, с помощью которых обращаются друг к другу прикладная программа и Менеджер Транзакций, например tx_begin(), tx_commit() и tx_rollback(). Вызывая эти (и некоторый другие методы), прикладная программа инициирует процессы инициации и завершения транзакций. Реальные действия по управлению транзакциями выполняются Менеджером Транзакций.

  • Интерфейс XA. Этот интерфейс определяет протокол взаимодействия Менеджера Транзакций и Менеджера Ресурсов. Часть вызовов порождается Менеджером Транзакций, например, xa_start() или xa_commit(), часть – Менеджером Ресурсов (ax_reg(), который нужен для сопоставления конкретного Менеджера Ресурсов с конкретной транзакцией).


Сервис транзакций CORBA (OTS)
Сервис транзакций CORBA (Object Transaction Service, OTS) создан в соответствии с моделью DTP. Перечислим основные термины OTS.

Контекст транзакции (transaction context) в OTS представляет собой структуру данных, объявленную на языке IDL. Эта структура совместима с так называемым XID – идентификатором транзакции в модели DTP. Помимо уникального идентификатора конкретной транзакции, представляющего собой массив байтов произвольной длины, контекст транзакции предусматривает сохранение информации о транзакциях, дочерних для данной транзакции, так как OTS поддерживает вложенные транзакции.

Инициатор транзакции (transaction originator) – программа, которая начинает транзакцию с помощью вызова метода tx_begin() (если говорить в терминах протокола TX). Как правило, инициатор транзакций должен ее и завершить, хотя OTS в принципе предоставляет возможность завершить транзакцию и другому ее участнику, не обязательно инициатору.

Транзакционный объект (transactional object) – любой объект, участвующий в транзакции, т.е. объект, получающий тем или иным способом доступ к контексту текущей транзакции. Это не значит, что транзакционный объект обязательно имеет состояние или это состояние должно изменяться в соответствии с классической логикой выполнения транзакций.

Транзакционный сервер (transactional server) – любой сервер приложений (в любом виде), который содержит хотя бы один транзакционный объект.

Восстанавливаемый объект (recoverable object) – это транзакционный объект, но при этом его состояние должно изменяться в соответствии с логикой выполнения транзакции (изменения состояния фиксируются или отменяются при завершении транзакции). Важнейшей особенностью поведения восстанавливаемого объекта явялется то, что он обязательно должен “оповестить” о своем существовании Менеджер Транзакций.

Восстанавливаемый сервер (recoverable server) – это транзакционный сервер, содержащий хотя бы один восстанавливаемый объект.

Основные интерфейсы OTS – TransactionalObject, Current, Control, Coordinator, Terminator и Resource.
Типичная последовательность действий при выполнении транзакций


  • Инициатор транзакции получает объектную ссылку на интерфейс Current и начинает транзакцию с помощью вызова метода begin().

  • Инициатор транзакций вызывает методы удаленных (в общем случае) транзакционных объектов – в контексте текущей транзакции. Контекст транзакции передается ORB’ом автоматически.

  • При вызове метода восстанавливаемого объекта этот объект может зарегистрировать себя у Менеджера Транзакций. Для этого восстанавливаемый объект либо должен иметь объектную ссылку на ресурсный объект, либо сам должен быть ресурсным объектом (т.е. реализовывать интерфейс Resource).

  • Инициатор транзакции завершает транзакцию, вызывая методы commit() или rollback() интерфейса Current. По команде commit() Менеджер Транзакции начинает завершать транзакцию либо как однофазную (если в данной транзакции был зарегистрирован только один ресурсный объект), либо как двухфазную (в случае двух и более ресурсных объектов).


OTS и JTS
В связи созданием на базе языка Java технологии создания распределенных приложений (комплекс технологий, объединенных названием J2EE – Java 2 Enterprise Edition) возникла необходимость формализации управления транзакциями, выраженная в терминах интерфейсов Java. Было принято совершенно естественное решение: поскольку протоколом удаленного взаимодействия в J2EE является стандартный протокол CORBA IIOP (как реализация “бумажного протокола” GIOP “поверх” TCP/IP), то спецификацией Службы Транзакций Java (Java Transaction Service, JTS) стали интерфейсы, полученные путем “пропускания” IDL-интерфейсов OTS через компилятор, выполняющий отображение IDL на Java.
Транзакции и компонентная модель EJB
EJB (Enterprise JavaBeans) представляет собой компонентную модель, ориентированную на создание серверных приложений. Управление транзакциями – одно из важнейших задач, которая должна решать такая модель.

Основным способом управления транзакциями в EJB является возложение обязанностей за это на контейнер EJB (хотя во многих случаях программист может взять управление транзакциями на себя). На практике это означает, что код бизнес-методов EJB-компонентов, как правило, не содержит обращений к интерфейсам JTS. Вместо этого автор компонента помещает некоторую информацию в так называемый “дескриптор развертывания” (deployment descriptor) для данного компонента. Дескриптор развертывания представляет собой XML-документ, и при установке компонента в контейнер последний считывает эту информацию и руководствуется ей в процессе работы системы. Такой режим управления транзакциями называется CMT-режим (Container-Managed Transactions).

При использовании session-компонентов автор компонента сам решает, кто будет управлять транзакциями – контейнер EJB или же сам компонент (режим BMT – Bean-Managed Transactions). Рекомендуется использовать CMT-режим и только в случае, когда это невозможно, управлять транзакциями из кода компонента.

С транзакциями для entity-компонентов дело обстоит в каком-то смысле проще, чем для session-компонентов – ими управляет контейнер и только контейнер. Сигналы о начале и завершении транзакции используются контейнером для синхронизации состояния компонента в долговременном хранилище и экземпляра компонента (т. е. объектного представления его состояния) в оперативной памяти.

Поскольку entity-компонент по определению является объектным представлением информации в той или иной базе данных, возникает проблема автоматического сопоставления транзакции в терминах OTS (JTS) и транзакции в терминах, например SQL-сервера типа ORACLE.
Заключение
Сервис объектных транзакций CORBA OTS и его отображение на Java (JTS) является наиболее комплексной и универсальной моделью управления распределенными транзакциями в объектных системах и выступает как одна из важнейших составляющих комплекса технологий J2EE. Это открытое и стандартное решение, признанное мировой компьютерной индустрией (стандарты ODMG-93; SNA LU 6.2; TxRPC Specification, X/Open Document P305; XA Specification, X/Open Document C193; XATMI Specification, X/Open Document P306; X/Open DTP model; X/Open DTP-compliant Resource Managers).

Реализации OTS/JTS доступны и как отдельные продукты (например, Borland ITS), и как составляющая многих программных средств, относящихся к классу “Серверов Приложений”.


- -

Похожие:

Стандарты и механизмы управления транзакциями в распределенной corba/J2ee-среде iconСтандарты платформы J2ee аристархов Андрей Александрович BiTechnology, Москва
Цель доклада ознакомление слушателей со стандартами технологий, являющихся составной частью Java 2 Enterprise Edition (J2EE)
Стандарты и механизмы управления транзакциями в распределенной corba/J2ee-среде iconИнформационные системы управления процессом интернет-образования в распределенной географической среде

Стандарты и механизмы управления транзакциями в распределенной corba/J2ee-среде iconАвтоматизация управления контингентом участников распределенной обработки данных Н. А. Ащеулова, П. В. Веденеев, Т. В. Волкова
Пользователи иас огу участвуют в различных процессах распределенной обработки данных, среди них
Стандарты и механизмы управления транзакциями в распределенной corba/J2ee-среде iconБезошибочное обращение плохо обусловленных матриц в распределенной среде restful веб-сервисов символьных вычислений

Стандарты и механизмы управления транзакциями в распределенной corba/J2ee-среде iconИспользования технологии corba при построении распределенной системы визуализации векторных и скалярных полей
Для векторных полей методы построения линий тока позволили более детально передавать топологию поля. Текстурные методы [3] позволили...
Стандарты и механизмы управления транзакциями в распределенной corba/J2ee-среде iconКафедра Автоматики и процессов управления Д. Х. Имаев синтез систем управления в среде matlab
Задачи и методы теории управления
Стандарты и механизмы управления транзакциями в распределенной corba/J2ee-среде iconСтандарты в средствах интеграции приложений
Стандарты управления потоками работ – средства интеграции бизнес-процессов и приложений
Стандарты и механизмы управления транзакциями в распределенной corba/J2ee-среде iconКнига Дона Тапскотта и Энтони Уильямса «Викиномика»
Охватывают глобальные бизнес-стандарты и информационные технологии, стоимость координирования распределённой глобальной организации...
Стандарты и механизмы управления транзакциями в распределенной corba/J2ee-среде iconАнализ методик оптимизации маршрутов прокладки кабельных трасс при проектировании распределенной автоматизированной системы управления
Абаев Р. К. Анализ методик оптимизации маршрутов прокладки кабельных трасс при проектировании распределенной автоматизированной системы...
Стандарты и механизмы управления транзакциями в распределенной corba/J2ee-среде iconОрфали Р., Харкин Д., Эдвардс Д. Основы corba: Пер с англ
Орфали Р., Харкин Д., Эдвардс Д. Основы corba: Пер с англ. – М.: Малип, Горячая Линия – Телеком, 1999
Разместите кнопку на своём сайте:
ru.convdocs.org


База данных защищена авторским правом ©ru.convdocs.org 2016
обратиться к администрации
ru.convdocs.org