Координатор распределённых транзакций
Значимость предмета статьи поставлена под сомнение. |
Координатор распределённых транзакций (DTC) — компонент Microsoft Windows, предназначенный для координации изменения данных на двух или более сетевых компьютерных системах.
Координатор распределённых транзакций основан на технологии COM+ и включает в себя:
- менеджер транзакций;
- журнал транзакций;
- прокси (реализует интерфейсы DTC);
- утилиты администрирования;
- заголовочные файлы API.
Выполнение распределённых транзакций
[править | править код]Каждый компьютер, участвующий в выполнении распределённых транзакций, имеет локальный менеджер транзакций, который взаимодействует с приложениями и локальными менеджерами ресурсов (такими, как базы данных, файловые системы, системы хранения документов, очереди сообщений). При получении запроса на выполнение транзакции между парами систем устанавливаются отношения вышестоящая — подчинённая. Каждая система может иметь несколько подчинённых систем, но не более одной вышестоящей. Это отношение справедливо для каждой конкретной транзакции, при выполнении других транзакций роли менеджеров могут меняться.
При запросе фиксации или отката транзакции менеджером транзакций выполняется двухфазный протокол фиксации. Во время первой фазы менеджеру ресурсов посылается запрос на подготовку к завершению, во время второй — на фиксацию или откат транзакции. По дереву, образованному вышестоящими и подчинёнными системами, рассылаются сообщения для подготовки к завершению, фиксации или отката. Любой узел дерева может прервать транзакцию до подтверждения подготовки к завершению. После того, как узел подтвердил подготовку, он остаётся в этом состоянии до фиксации или отката транзакции вышестоящим узлом. В случае сбоя и перезагрузки компьютера менеджер транзакций запрашивает вышестоящий узел о дальнейшей судьбе подготовленных к завершению транзакций.
Ссылки
[править | править код]- Distributed Transaction Coordinator (англ.). Dev Center - Desktop. Microsoft (2012). Дата обращения: 3 декабря 2012. Архивировано 17 января 2013 года.