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
    • асинхронный этап задачи из запроса на отправку ветки асинхронно удалит соответствующий журнал отмены. Запись в пакетном режиме.
Преимущества и недостатки
  • преимущество
    • Ненавязчивость: приложения могут использовать этот шаблон без изменения кода, а интеграция в существующие системы относительно проста.
    • Удобство разработки: коммиты и откаты дел автоматически обрабатываются 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 требует больше системных ресурсов для достижения глобального управления.

‍‍

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose