5

Я пытаюсь понять, что такое MS DTC (координатор распределенных транзакций Microsoft). Мне нравится, что это координатор транзакций COM+, но я до сих пор не понимаю, что это, кто-то знает объяснить?

1 ответ1

8

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

Структурирование приложения на независимые компоненты может создать проблему управления компонентами. Монолитные программы терпят неудачу и перезапускаются как единое целое. Но с модульной системой отказ одного компонента не должен повредить другие. Должен быть способ изолировать неисправности и ограничить распространение неисправностей. Транзакции обеспечивают модульное выполнение и, таким образом, упрощают и автоматизируют обработку ошибок. Они предоставляют простую концептуальную среду исполнения как для разработчиков, так и для пользователей.

Пользователь рассматривает транзакцию как одно событие изменения, которое либо происходит, либо не происходит. Разработчики рассматривают транзакцию как стиль программирования, который позволяет им писать модули, которые могут участвовать в распределенных вычислениях. Предположим, вы хотите перевести деньги с одного банковского счета на другой. Разработчики и пользователи хотят убедиться, что обе учетные записи изменяются или не изменяются. Это трудно сделать в распределенной системе - компьютеры могут выходить из строя и сообщения могут быть потеряны. Транзакции предоставляют способ связать набор операций в элементарный элемент выполнения.

Атомарное свойство "все или ничего" не ново: оно проявляется на протяжении всей жизни. Например, если вы вводите контракт, сотрудник по условному депонированию координирует транзакцию: сотрудник по условному депонированию собирает подписи каждой из сторон контракта. Контракт является окончательным, когда сотрудник по условному депонированию объявляет, что все подписали. Служитель, проводящий церемонию бракосочетания, сначала спрашивает жениха и невесту: «Считаете ли вы этого человека своим супругом?«Если они оба отвечают:" Я отвечаю ", министр объявляет их женатыми. Режиссер на съемочной площадке сначала спрашивает: «Готов на съемочной площадке?«Если все ответят" да ", тогда директор скажет:« Действуй!«Рулевой на парусной шлюпке, готовящийся к взлому, сначала спрашивает команду:« Готов?«Если они все ответят" да ", то рулевой кричит:« Хелм'ли!и поворачивает лодку.

Эти сценарии иллюстрируют основной принцип транзакции: несколько независимых организаций должны согласиться. Если какая-либо сторона не согласна, сделка прекращается. Как только они соглашаются, транзакция может произойти. Координатор распределенных транзакций Microsoft (MS DTC) выполняет эту роль координации транзакций для других компонентов архитектуры COM. В терминологии MS DTC директор называется диспетчером транзакций. Участники транзакции, которые реализуют защищенные транзакцией ресурсы, такие как реляционные базы данных, называются менеджерами ресурсов.Приложение начинает транзакцию, вызывая метод BeginTransaction диспетчера транзакций. Это создает объект транзакции, который представляет транзакцию. Затем приложение вызывает менеджеров ресурсов для выполнения транзакции.

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

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

Как правило, приложение завершает транзакцию методом фиксации транзакции. Если приложение не может завершить, приложение вызывает метод транзакции Прервать, который отменяет действия транзакции. В случае сбоя приложения MS DTC прерывает транзакцию.

Когда приложение успешно завершает работу транзакции, оно вызывает MS DTC для подтверждения транзакции. MS DTC затем проходит протокол двухфазной фиксации, чтобы заставить всех перечисленных менеджеров ресурсов зафиксировать. Протокол двухфазного принятия гарантирует, что все менеджеры ресурсов фиксируют транзакцию или все отменяют ее. На первом этапе MS DTC спрашивает каждого менеджера ресурсов, готов ли он к фиксации. Если все участники говорят "да", то на втором этапе MS DTC передает всем сообщение коммита. Если какая-либо часть транзакции завершается неудачно, если менеджер ресурсов не отвечает на запрос на подготовку или менеджер ресурсов отвечает "нет", MS DTC уведомляет всех менеджеров ресурсов о том, что транзакция прервана.

Менеджеры транзакций являются ключевой частью большинства систем баз данных. Менеджеры транзакций также являются необязательной частью некоторых операционных систем. Microsoft считает, что транзакции необходимы для распределенных приложений - транзакции обеспечивают модульное выполнение, которое дополняет модульное программирование COM. Таким образом, Microsoft внедрила программное обеспечение для управления транзакциями для операционных систем Microsoft® Windows® 95 и Microsoft® Windows NT®.

Сочетание концепции транзакции с COM потребовало инноваций. Традиционные транзакционные системы требовали значительных навыков для установки и управления. Задача интеграции MS DTC с операционной системой Microsoft заключалась в автоматизации установки, управления и использования. Многие концепции и методы пришлось заново изобрести для новых клиент-серверных, объектно-ориентированных и визуальных сред управления.

В своем первом выпуске MS DTC работает с одним менеджером ресурсов: Microsoft® SQL Server ™. Он также работает с несколькими мониторами обработки транзакций, включая Encina®, Top End® и TUXEDO®. MS DTC реализует интерфейсы транзакций OLE. Все интерфейсы OLE-транзакций являются общедоступными, поэтому любой менеджер ресурсов может стать менеджером ресурсов OLE-транзакций. В будущем Microsoft и другие компании-разработчики программного обеспечения добавят других менеджеров транзакционных ресурсов, таких как системы распределенных объектов, файловые системы транзакций, системы очередей транзакций и системы управления рабочими процессами.

Свойства КИСЛОТЫ

Транзакции предоставляют свойства ACID.

Атомарность Транзакция либо фиксируется, либо прерывается. Если транзакция фиксируется, все ее эффекты остаются. Если он прерывается, все его эффекты отменяются. Например, при переименовании объекта создается новое имя, а старое имя удаляется (фиксация) или ничего не меняется (прерывание).

Согласованность Транзакция - это правильное преобразование состояния системы. Сохраняет государственные инварианты. Например, добавляя элемент в двусвязный список, обновляются все четыре указателя вперед и назад.

Изоляция Параллельные транзакции изолированы от обновлений других незавершенных транзакций. Эти обновления не составляют согласованное состояние. Это свойство часто называют сериализуемостью. Например, вторая транзакция, проходящая через двусвязный список, упомянутый в примере согласованности, увидит список до или после вставки, но увидит только полные изменения.

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

Приложение должно решить, что такое согласованность, и заключить в скобки его вычисления с помощью методов транзакций BeginTransaction и Commit, чтобы разграничить эти согласованные преобразования. Менеджеры транзакционных ресурсов обеспечивают согласованные, изолированные и длительные преобразования объектов, которыми они управляют. MS DTC управляет транзакциями, в которых участвуют несколько менеджеров ресурсов, возможно, распределенных между несколькими компьютерами. MS DTC создает объекты транзакций, отслеживает миграцию транзакций между менеджерами ресурсов и реализует протокол двухфазного принятия, чтобы сделать эти транзакции атомарными и долговечными.

Источник информации

Также см. Http://en.wikipedia.org/wiki/Distributed_Transaction_Coordinator.

И http://www.microsoft.com/sqlserver/en/us/default.aspx

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .