Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

В обработке транзакций , баз данных и компьютерных сетей , то двухфазной фиксации протокола ( 2PC ) представляет собой тип атомного протокола обязательств (ACP). Это распределенный алгоритм, который координирует все процессы, участвующие в распределенной атомарной транзакции, относительно того, следует ли зафиксировать или прервать ( откатить ) транзакцию (это специализированный тип консенсуса).протокол). Протокол достигает своей цели даже во многих случаях временного сбоя системы (включая сбои процесса, сетевого узла, связи и т. Д.), Поэтому он широко используется. [1] [2] [3] Однако он не устойчив ко всем возможным конфигурациям сбоя, и в редких случаях для исправления результата требуется ручное вмешательство. Для обеспечения восстановления после сбоя (в большинстве случаев автоматически) участники протокола используют регистрацию состояний протокола. Записи журнала, которые обычно создаются медленно, но переживают сбои, используются процедурами восстановления протокола.. Существует множество вариантов протоколов, которые в первую очередь различаются стратегиями ведения журналов и механизмами восстановления. Хотя процедуры восстановления обычно предназначены для нечастого использования, они составляют значительную часть протокола из-за множества возможных сценариев сбоя, которые должны учитываться и поддерживаться протоколом.

При «нормальном выполнении» любой отдельной распределенной транзакции (т. Е. При отсутствии сбоя, что обычно является наиболее частой ситуацией) протокол состоит из двух фаз:

  1. Фаза фиксации-запрос (или фаза голосования ), в котором координатор попытка процесса для подготовки всех процессов , участвующих в транзакции (названные участники , когорты , или работников ) принять необходимые меры для либо совершения или прерывания транзакции и на голосование , либо «Да»: зафиксировать (если выполнение локальной части участника транзакции завершилось должным образом) или «Нет»: прервать (если была обнаружена проблема с локальной частью), и
  2. Фиксации фазы , в которой, на основе голосования участников, координатор принимает решение совершить (только если все проголосовали «Да») или преждевременное прекращение сделки ( в противном случае), и оповещает результат для всех участников. Затем участники выполняют необходимые действия (фиксация или прерывание) со своими локальными транзакционными ресурсами (также называемыми восстанавливаемыми ресурсами ; например, данными базы данных) и своими соответствующими частями в других выходных данных транзакции (если применимо).

Обратите внимание, что протокол двухфазной фиксации (2PC) не следует путать с протоколом двухфазной блокировки (2PL), протоколом управления параллелизмом .

Предположения [ править ]

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

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

Базовый алгоритм [ править ]

Фаза запроса фиксации (или голосования) [ править ]

  1. Координатор отправляет запрос на фиксацию сообщения всем участникам и ждет, пока не получит ответ от всех участников.
  2. Участники выполняют транзакцию до момента, когда их попросят зафиксировать. Каждый из них записывает запись в журнал отмены и запись в журнал повторного выполнения .
  3. Каждый ответ участник с соглашением сообщения (участник голосов Да совершить), если действия участника удалось, или аварийное завершение сообщение (участник голосования Нет , не совершать), если участник испытывает неудачу , что сделает невозможным совершить.

Фаза фиксации (или завершения) [ править ]

Успех [ править ]

Если координатор получил сообщение о согласии от всех участников на этапе запроса фиксации:

  1. Координатор отправляет всем участникам сообщение о фиксации .
  2. Каждый участник завершает операцию и снимает все блокировки и ресурсы, удерживаемые во время транзакции.
  3. Каждый участник отправляет подтверждение координатору.
  4. Координатор завершает транзакцию после получения всех подтверждений.

Ошибка [ править ]

Если какой - либо участник голосование Нет на этапе фиксации-запроса (или тайм - аут координатора истекает ):

  1. Координатор отправляет всем участникам сообщение об откате .
  2. Каждый участник отменяет транзакцию, используя журнал отмены, и освобождает ресурсы и блокировки, удерживаемые во время транзакции.
  3. Каждый участник отправляет подтверждение координатору.
  4. Координатор отменяет транзакцию после получения всех подтверждений.

Поток сообщений [ править ]

Координатор Участник ЗАПРОС ДЛЯ ЗАВЕРШЕНИЯ --------------------------------> ГОЛОСОВАНИЕ ДА / НЕТ подготовка * / отмена * <-------------------------------фиксация * / abort * COMMIT / ROLLBACK --------------------------------> ПОДТВЕРЖДЕНИЕ фиксация * / прерывание * <-------------------------------- конец

Знак * рядом с типом записи означает, что запись принудительно помещена в стабильное хранилище. [4]

Недостатки [ править ]

Самым большим недостатком протокола двухфазной фиксации является то, что это протокол блокировки. Если координатор выйдет из строя навсегда, некоторые участники никогда не разрешат свои транзакции: после того, как участник отправил сообщение о соглашении координатору, он будет блокироваться до тех пор, пока не будет получено фиксация или откат .

Реализация протокола двухфазной фиксации [ править ]

Общая архитектура [ править ]

Во многих случаях протокол 2PC распространяется в компьютерной сети. Его легко распределить путем реализации нескольких выделенных компонентов 2PC, похожих друг на друга, обычно называемых менеджерами транзакций (TM; также называемыми агентами 2PC или мониторами обработки транзакций), которые выполняют выполнение протокола для каждой транзакции (например, The Open Group '' s X / Открыть XA ). В базах данных, участвующих в распределенной транзакции, участники , как координатор, так и участники, регистрируютдля закрытия TM (обычно находящихся на соответствующих узлах сети, что и участники) для завершения этой транзакции с использованием 2PC. Каждая распределенная транзакция имеет специальный набор TM, TM, в которых регистрируются участники транзакции. Лидер, TM координатора, существует для каждой транзакции, чтобы координировать 2PC для нее, обычно TM базы данных координатора. Однако роль координатора может быть передана другому TM по соображениям производительности или надежности. Вместо того, чтобы обмениваться сообщениями 2PC между собой, участники обмениваются сообщениями со своими соответствующими TM. Соответствующие TM взаимодействуют между собой, чтобы выполнить указанную выше схему протокола 2PC, «представляющую» соответствующих участников для завершения этой транзакции.В этой архитектуре протокол полностью распределен (не требует какого-либо компонента центральной обработки или структуры данных) и эффективно масштабируется с увеличением количества сетевых узлов (размера сети).

Эта общая архитектура также эффективна для распространения других протоколов атомарной фиксации помимо 2PC, поскольку все такие протоколы используют один и тот же механизм голосования и распространения результатов среди участников протокола. [1] [2]

Оптимизация протокола [ править ]

Было проведено исследование базы данных по способам получения большинства преимуществ протокола двухфазной фиксации при одновременном снижении затрат за счет оптимизации протокола [1] [2] [3] и сохранения операций протокола при определенных предположениях о поведении системы.

Предполагаемое прерывание и предполагаемая фиксация [ править ]

Предполагаемое прерывание или Предполагаемая фиксация - частые такие оптимизации. [2] [3] [5]Предположение о результате транзакции, будь то фиксация или прерывание, может сохранять как сообщения, так и операции регистрации участников во время выполнения протокола 2PC. Например, в случае предполагаемого прерывания, если во время восстановления системы после сбоя процедура восстановления не обнаруживает зарегистрированных свидетельств фиксации какой-либо транзакции, то предполагается, что транзакция была прервана, и действует соответственно. Это означает, что не имеет значения, регистрируются ли вообще прерывания, и такое ведение журнала может быть сохранено при этом предположении. Обычно при восстановлении после сбоя выплачивается штраф за дополнительные операции, в зависимости от типа оптимизации. Таким образом, по статистике сбоев и исходов транзакций выбирается лучший вариант оптимизации, если таковой имеется.

Протокол двухфазной фиксации дерева [ править ]

Протокол Tree 2PC [2] (также называемый Nested 2PC или Recursive 2PC ) является распространенным вариантом 2PC в компьютерной сети , который лучше использует базовую коммуникационную инфраструктуру. Участники распределенной транзакции обычно вызываются в порядке, определяющем древовидную структуру, дерево вызовов., где участники - это узлы, а ребра - это вызовы (каналы связи). Это же дерево обычно используется для завершения транзакции по протоколу 2PC, но в принципе для этого может использоваться и другое дерево связи. В дереве 2PC координатор считается корнем («вершиной») дерева связи (инвертированное дерево), а участники - другими узлами. Координатором может быть узел, инициировавший транзакцию (рекурсивно (транзитивно) вызванный другими участниками), но также другой узел в том же дереве может вместо этого взять на себя роль координатора. Сообщения 2PC от координатора распространяются «вниз» по дереву, в то время как сообщения координатору «собираются» участником от всех участников ниже его, прежде чем он отправит соответствующее сообщение «вверх»дерево (кромесообщение прерывания , которое распространяется «вверх» сразу после его получения или если текущий участник инициирует прерывание).

Динамические двухфазная фиксация (динамическая двухфазная приверженность, D2PC) протокол [2] [6] представляет собой вариант дерева 2PC без предварительно координатора. Он включает в себя несколько оптимизаций, которые были предложены ранее. Сообщения о согласии ( голоса « Да» ) начинают распространяться со всех листьев, каждый лист при выполнении своих задач от имени транзакции ( подготовка к работе ). Промежуточный (без листьев) узел посылает готов , когда соглашение сообщение последнего (одного) соседнего узла , от которого соглашение до сих пор не было получено сообщение. Координатор определяется динамически по соглашению о гонках.сообщения по дереву транзакций в том месте, где они сталкиваются. Они сталкиваются либо в узле дерева транзакций, чтобы быть координатором, либо на краю дерева. В последнем случае один из двух узлов ребра выбирается координатором (любой узел). D2PC является оптимальным по времени (среди всех экземпляров определенного дерева транзакций и любой конкретной реализации протокола Tree 2PC; все экземпляры имеют одно и то же дерево; каждый экземпляр имеет другой узел в качестве координатора): при выборе оптимального координатора D2PC фиксирует оба координатора и каждый участник за минимально возможное время, что позволяет как можно раньше высвободить заблокированные ресурсы каждого участника транзакции (узел дерева).

См. Также [ править ]

  • Атомарная фиксация
  • Зафиксировать (управление данными)
  • Протокол трехфазной фиксации
  • XA
  • Алгоритм Paxos
  • Проблема двух генералов

Ссылки [ править ]

  1. ^ a b c Филип А. Бернштейн , Вассос Хадзилакос, Натан Гудман (1987): Контроль параллелизма и восстановление в системах баз данных , глава 7, издательство Addison Wesley Publishing Company, ISBN  0-201-10715-5
  2. ^ a b c d e f Герхард Вейкум , Готфрид Фоссен (2001): Транзакционные информационные системы , глава 19, Elsevier, ISBN 1-55860-508-8 
  3. ^ Б с Филиппом А. Бернштейна, Эрик Newcomer (2009): Принципы обработки транзакций , 2 - е издание Архивированных 2010-08-07 на Wayback Machine , глава 8, Morgan Kaufmann (Elsevier), ISBN 978-1-55860-623 -4 
  4. ^ К. Мохан , Брюс Линдси и Р. Обермарк (1986): «Управление транзакциями в системе управления распределенными базами данных R *» , Транзакции ACM в системах баз данных (TODS) , Том 11, выпуск 4, декабрь 1986, страницы 378 - 396
  5. ^ C. Мохан , Брюс Линдсей (1985): «Эффективные протоколы фиксации для модели дерева процессов распределенных транзакций» , ACM SIGOPS Operating Systems Review , 19 (2), стр. 40-52 (апрель 1985)
  6. Йоав Раз (1995): «Протокол динамического двухфазного обязательства (D2PC)» , Теория баз данных - ICDT '95 ,конспект лекций по информатике , том 893/1995, стр. 162-176, Springer, ISBN 978-3- 540-58907-5 

Внешние ссылки [ править ]

  • Протокол двухфазной фиксации объяснен на рисунках exploreDatabase