Распределенная теория (3) - протокол 2PC

задняя часть база данных Микросервисы алгоритм

предисловие

Поскольку теория BASE требует компромисса между согласованностью и доступностью, появилось множество алгоритмов и протоколов согласованности. Наиболее известными из них являются 2-фазный протокол фиксации, 3-фазный протокол фиксации и алгоритм Paxos.

Протокол 2PC, который будет представлен в этой статье, разделен на две фазы для отправки транзакции. А благодаря сотрудничеству координатора и каждого участника достигается распределенная согласованность.

Двухэтапный протокол фиксации транзакции, заполняемый координатором и участниками.

Роль XA Концепция эффект
координатор менеджер транзакций Координация различных участников для фиксации или отката распределенных транзакций
участник менеджер ресурсов Узлы в распределенном кластере

текст

1. Распределенная транзакция

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

Ключом к распределенной обработке транзакций является:

  1. Все действия, выполняемые транзакцией на любом узле, должны быть записаны;
  2. Все операции, выполняемые транзакцией, либо фиксируются, либо откатываются.

2. Спецификация ХА

2.1 Состав спецификации XA

Спецификация XA представляет собой модель распределенной обработки транзакций, определенную организацией X/Open (теперь Open Group). Модель X/Open DTP (1994 г.) включает:

  • Приложение (АП)
  • Менеджер транзакций (TM): промежуточное ПО транзакций и т. д.
  • Диспетчер ресурсов (RM): реляционная база данных и т. д.
  • Менеджер коммуникационных ресурсов (CRM): ПО промежуточного слоя для обмена сообщениями и т. д.

2.2 Определение спецификаций XA

Спецификация XA определяет спецификацию интерфейса (то есть функцию интерфейса) между промежуточным программным обеспечением транзакции и базой данных, которая используется промежуточным программным обеспечением транзакции для уведомления о начале транзакции базы данных, завершении, фиксации, откате и т. д. Функции интерфейса XA предоставляются поставщиками баз данных.

Протокол фиксации второго порядка и протокол фиксации третьего порядка предлагаются на основе спецификации XA, а фиксация второго порядка является ключом к реализации распределенных транзакций XA.

2.3 Спецификация XA Спецификация программирования

  1. Настройте TM и зарегистрируйте RM в качестве источника данных для TM. Среди них один TM может зарегистрировать несколько RM.

  2. AP инициирует глобальную транзакцию к TM. В это время TM отправит XID (глобальный идентификатор транзакции) для уведомления каждого RM.

  3. AP получает агент менеджера ресурсов от TM (например, используя интерфейс JTA, из контекста, управляемого TM, получает JDBC-соединение или JMS-соединение RM, управляемого этим TM).

  4. AP косвенно управляет RM для выполнения бизнес-операций через соединение, полученное от TM. TM передает XID в RM каждый раз, когда AP работает, и RM управляет отношениями с транзакцией через эту ассоциацию XID.

  5. Когда AP заканчивается глобальная транзакция, TM уведомляет RM, что глобальная транзакция заканчивается. Начать двухступенчатое представление, которое является процессом подготовки.

Процесс спецификации XA примерно такой, как показано на рисунке:

3. Двухэтапная фиксация (2PC)

3.1. Определение второй фазы фиксации

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

Так называемые две стадии:

  • Этап 1: этап подготовки (этап голосования)
  • Этап 2: этап фиксации (этап выполнения)

3.1.1. Этап подготовки

Подготовительный этап делится на три этапа:

а. Запрос сделки

Координатор спрашивает всех участников, готовы ли они выполнить транзакцию, и начинает ждать ответов от каждого участника.

б. Выполнить транзакцию

Каждый узел-участник выполняет транзакционные операции. Если локальная транзакция прошла успешно, информация об отмене и повторении будет записана в журнал транзакций, но не зафиксирована; в противном случае будет возвращено сообщение об ошибке, и выполнение будет прервано.

в) Каждый участник возвращает ответ на запрос транзакции координатору.

Если участник успешно выполнит транзакционную операцию, он вернет координатору ответ «Да», указывающий, что транзакция может быть зафиксирована; если участник не выполнит транзакцию успешно, он вернет координатору «Нет», указывающий, что транзакция не может быть выполнена. быть совершенным.

3.1.2. Фаза фиксации

В фазе фиксации выполняются две операции по результатам голосования фазы подготовки: фиксация транзакции и прерывание транзакции.

Процесс фиксации транзакции выглядит следующим образом:

а. Отправьте запрос на отправку

Координатор отправляет запрос на фиксацию всем участникам.

Б. Зафиксировать транзакцию

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

с. Результаты представления транзакции обратной связи

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

г. Подтверждение фиксации транзакции

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

Процесс прерывания транзакции выглядит следующим образом:

а. Отправьте запрос на откат

Координатор выдает запрос на откат всем участникам.

б. Откат транзакции

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

c. Обратная связь о результатах отката транзакции

Участник отправляет сообщение Ack координатору после завершения отката транзакции.

г. Подтверждение прерывания транзакции

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

3.1 Преимущества и недостатки двухэтапной фиксации

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

синхронная блокировка

Во время двухфазного процесса фиксации все узлы ожидают ответов от других узлов и не могут выполнять другие операции. Эта блокировка синхронизации сильно ограничивает производительность распределенных систем.

проблема с одной точкой

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

несогласованность данных

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

Отказоустойчивость — это плохо

Если участник терпит неудачу на этапе запроса отправки двухэтапной отправки, координатор не может получить информацию о подтверждении всех участников.В это время координатор может полагаться только на свой собственный механизм тайм-аута, чтобы определить, нужно ли прерывать транзакцию. . Очевидно, что эта стратегия слишком консервативна. Другими словами, протокол двухфазной фиксации не имеет хорошо продуманного механизма отказоустойчивости, и сбой любого узла приведет к сбою всей транзакции.

резюме

Для синхронной блокировки и проблем с одной точкой, существующих в протоколе 2PC, решение будет представлено в протоколе 3PC в следующей статье.

Ссылки по теме

  1. Распределенная теория (1) - теорема CAP
  2. Распределенная теория (2) - BASE Theory
  3. Распределенная теория (3) - протокол 2PC
  4. Распределенная теория (4) — протокол 3PC
  5. Распределенная теория (5) - Алгоритм согласованности Paxos
  6. Распределенная теория (6) - плот протокола согласованности

Добро пожаловать, чтобы отсканировать код и подписаться на официальный аккаунт: Zero One Technology Stack.

image

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