25. Знакомство с Seata, преимущества и недостатки четырех режимов.
25. Знакомство с Seata, преимущества и недостатки четырех режимов.
что такое сита
Seata (простая расширяемая архитектура автономных транзакций) — это решение для распределенных транзакций с открытым исходным кодом, предназначенное для решения проблем согласованности транзакций в распределенных системах. Он предоставляет разработчикам простой и масштабируемый способ управления и координации распределенных транзакций.
Основная проблема, которую решает Seata, — это согласованность транзакций между несколькими сервисами в распределенной среде. В традиционных монолитных приложениях управление транзакциями относительно простое, а транзакции локальной базы данных можно использовать для обеспечения согласованности данных. Однако в распределенной системе операции, включающие несколько служб, должны гарантировать, что все операции либо успешны, либо отброшены, чтобы обеспечить согласованность данных.
основные компоненты
Transaction Coordinator(TC)
Отвечает за координацию и управление общими делами. Он координирует транзакционные операции различных участников и в конечном итоге решает, следует ли зафиксировать или откатить глобальную транзакцию.
Resource Manager(RM)
Ресурсы, отвечающие за управление локальными транзакциями, такие как базы данных, очереди сообщений и т. д. Он взаимодействует с TC и выполняет инструкции TC, чтобы обеспечить согласованность локальных транзакций.
Transaction Manager(TM)
Отвечает за запуск, отправку и откат глобальных транзакций. Он взаимодействует с TC и RM и контролирует поток выполнения глобальных транзакций.
С помощью этих компонентов и протоколов Seata может предоставить возможности управления и координации распределенных транзакций, помочь разработчикам упростить обработку транзакций в распределенных системах и обеспечить согласованность данных.
Четыре режима транзакций
Seata предлагает четыре различных режима транзакций, каждый из которых имеет свои преимущества и недостатки. Вот краткое описание четырех режимов:
Режим AT (автоматическая транзакция)
Режим AT — это режим транзакций Seata по умолчанию. Он обеспечивает согласованность глобальных транзакций, блокируя корневой узел распределенных транзакций.
Примеры
Две глобальные транзакции, tx1 и tx2, соответственно обновляют поле m таблицы a, а начальное значение m равно 1000. tx1 запускается первым, запускает локальную транзакцию, получает локальную блокировку и обновляет операцию m = 1000 — 100 = 900. Прежде чем локальная транзакция будет зафиксирована, сначала получается глобальная блокировка записи, а локальная фиксация снимает локальную блокировку. Начиная с tx2, запускается локальная транзакция, получается локальная блокировка и операция обновления m = 900 – 100 = 800. Прежде чем локальная транзакция будет зафиксирована, попытайтесь получить глобальную блокировку записи. Прежде чем tx1 будет зафиксирована глобально, глобальная блокировка записи удерживается tx1, и необходимо повторить попытку и дождаться глобальной блокировки.
tx1 двухфазная глобальная фиксация, снимающая глобальную блокировку. tx2 получает глобальную блокировку и фиксирует локальную транзакцию.
Если происходит двухэтапный глобальный откат tx1, tx1 необходимо повторно получить локальную блокировку данных и выполнить операцию обновления обратной компенсации, чтобы реализовать откат ветки.
В это время, если tx2 все еще ожидает глобальной блокировки данных, удерживая локальную блокировку, откат ветки tx1 завершится неудачно. Откат ветки будет повторяться до тех пор, пока глобальная блокировка tx2 не дождется истечения времени блокировки, глобальная блокировка не будет снята и локальная транзакция не будет откачена для снятия локальной блокировки. Откат ветки tx1 будет выполнен. наконец-то успешно.
Поскольку глобальная блокировка во всем процессе удерживается tx1 до окончания tx1, проблема грязной записи не возникнет.
общий процесс
первый этап
анализировать SQL: получить SQL тип (UPDATE), таблица (продукт), состояние (где name = «TXC») и другая соответствующая информация.
Изображение перед запросом: в соответствии анализироватьполучить информацию о состоянии,Создать оператор запроса,позицияданные。
Выполнение бизнес-SQL
Зеркало после запроса
Вставить журнал отката UNDO_LOG
второй этап-откат
получить TC из запроса на откат ветки,Откройте местные дела,Сделайте следующее.
проходить XID и Branch ID Найдите соответствующий UNDO LOG Записывать.
проверка данных: взять UNDO LOG Сравнение середины заднего зеркала с текущими данными,если есть разница,Данные описания были изменены в соответствии с текущими глобальными событиями.
в соответствии с UNDO LOG серединаиз Переднее зеркало и бизнес SQL Генерировать и выполнять операторы отката на основе соответствующей информации.
второй этап-представлять на рассмотрение
получать TC из ветки отправляет запрос, помещает запрос в асинхронную задачу из очереди и немедленно возвращает результат успешной отправки в TC
асинхронный этап задачи из запроса на отправку ветки будет асинхронно удаляться пакетами, соответствующими UNDO LOG
Преимущества и недостатки
преимущество
Ненавязчивость: приложения могут использовать этот шаблон без изменения кода, а интеграция в существующие системы относительно проста.
Удобство разработки: коммиты и откаты дел автоматически обрабатываются Seata,Разработчикам не нужно писать дополнительный код.
недостаток
Конкуренция замков: существуют глобальные дела до подачи,Заблокирует ресурсы,Это может привести к узким местам в производительности и снижению параллелизма.
Депозит существуетдела в ожидании из-за риска: если глобальные дела не удалось успешно отправить,Местные дела могут все время висеть.
Режим TCC (попробуйте-подтвердите-отмените)
Режим TCC обеспечивает согласованность распределенных транзакций посредством трех четких этапов: попытка, подтверждение и отмена. Выполнение пользовательской бизнес-логики для каждого актера
общий процесс
Поведение одноэтапной подготовки: вызов пользовательской логики подготовки.
Поведение фиксации на втором этапе: вызов настроенной логики фиксации.
Поведение отката на втором этапе: вызов пользовательской логики отката.
Преимущества и недостатки
преимущество
Высокая гибкость: Да соответствии с Бизнес-требования Настроить каждый этап дела и злодея.
Отсутствие конфликтов блокировок: на каждом этапе дела можно использовать оптимистическую блокировку или другие средства для управления одновременным доступом.
недостаток
Разработка сложна: реализация модели TCC требует написания и поддержки трех этапов логического кода (попробуйте、Confirm、Cancel)。
Межсервисные вызовы сложны: в случае межсервисных вызовов необходимо убедиться, что все задействованные сервисы поддерживают режим TCC.
режим САГА
режим САГАВоля Распределенные Транзакции разделены на серию локальных дел, с каждым локальным делом связана компенсационная операция. выполнять асинхронные и компенсационные операции для достижения Распределенных транзакцииизпоследовательность。
Преимущества и недостатки
преимущество
асинхронная координация: любые локальные дела могут выполняться асинхронно.,Не будет блокировать выполнение всего глобального дела.
Отказоустойчивость: компенсирующие операции могут выполняться для отката или исправления возникших ошибок.
недостаток
Согласованность сложно гарантировать: из-за особенностей делаизасинхронного,Может быть противоречивый статус существования,Требует ручной обработки разработчиками
Разработка сложная: режим реализации САГА необходимо писать и поддерживать логический код для каждого этапа, включая нормальное выполнение и операции компенсации.
Режим XA (расширенная архитектура)
В Seata при использовании режима XA Seata выступает в роли глобального координатора транзакций (Transaction Координатор, TC) для координации транзакционных операций различных участников (таких как базы данных, очереди сообщений и т. д.). Seata связывается с менеджером ресурсов (RM) каждого участника и реализует отправку или откат распределенных транзакций через протокол XA.
рабочий процесс
Глобальные дела начинаются: Когда начинаются глобальные дела,Seata создаст глобальный контекст дел,И сгенерируйте глобальный идентификатор дела.
Регистрация филиала дела: существование глобальных дел,Каждый участник (например, база данных) выступает в роли филиала дела.,Свяжите свои местные дела с глобальными делами.,И зарегистрируйте ветку дел с Ситой.
исполнение дел: существует глобальный процесс исполнения дел,Участники выполняют операции по местным делам, следуя указаниям Сеатаиз.,В том числе чтение, письмо и т.
фиксация дела: когда глобальное выполнение дела завершено, Seata отправляет запрос на фиксацию дела каждому участнику.
Двухэтапная подача: после того, как участник отправит запрос, он соответствии Протокол сXA выполняет двухфазную операцию фиксации. существование первый На этом этапе участник подготовится к отправке и отзыву о статусе подготовки в Seata. существовать второй этап,Seataв соответствии Всем участникам из обратной связи решать, совершать или откатывать глобальные дела.
делаиз Конец: Как только Сеата решит зафиксировать или откатить глобальные дела,Каждый участник будет уведомлен о необходимости выполнения окончательной операции фиксации или отката.,И наконец положить конец глобальным делам.
Преимущества и недостатки
преимущество
база данныхсортдела:использоватьXAПоддержка протокола Распределенные сопровождение, обеспечить все участие избаза данные все атомарны.
Высокая согласованность: режим XA обеспечивает глобальную строгую согласованность.,Соответствует свойствам ACID.
недостаток
Влияние на производительность: Из-за необходимости более чем одного существующего Координация между данными и режимом XA может оказывать определенное влияние на производительность.
Занятость ресурсов: режим XA требует больше системных ресурсов для достижения глобального управления.