[2.2 Transacción distribuida (Seata)] Este artículo presenta el conocimiento introductorio de la transacción distribuida y el marco de Seata

1. Introducción a Seata

  • Seata es una solución de transacción distribuida gratuita que sigue el protocolo Apache 2.0 y es de código abierto de Alibaba.
  • El objetivo de Seata es proporcionar una solución ligera y sencilla para el procesamiento de transacciones distribuidas.
  • Seata proporciona una forma sencilla de resolver las dificultades de las transacciones distribuidas, como garantizar la coherencia de los datos y el aislamiento de las transacciones.
  • Seata proporciona una forma conveniente para el procesamiento de transacciones distribuidas, lo que permite que las aplicaciones utilicen modelos de transacciones tradicionales.
  • Seata es una excelente solución de transacciones distribuidas que puede proporcionar un procesamiento de transacciones distribuidas rápido, simple y confiable para las aplicaciones.
  • Seata es una solución de transacción de código abierto de Alibaba, que tiene como objetivo resolver el problema de consistencia de las transacciones distribuidas.
  • Seata puede resolver eficazmente el problema de consistencia de transacciones en sistemas distribuidos.
  • A través del trabajo colaborativo de los tres componentes principales de TC, TM y RM y una serie de componentes auxiliares, Seata realiza la gestión y el control de las transacciones distribuidas y garantiza la consistencia y corrección de los datos.
  • Al usar Seata para construir un sistema distribuido, Seata administrará y controlará automáticamente la confirmación y reversión de las transacciones para garantizar la consistencia de los datos.

2. Tres modos de Seata

Situación de popularidad utilizada actualmente: AT > TCC > Saga

2.1 Modo XA

Seata admite transacciones distribuidas en modo XA y se realiza envolviendo fuentes de datos.

El modo XA adopta el protocolo de compromiso de dos fases (2PC), y la consistencia de la transacción de múltiples bases de datos se realiza a través del coordinador, que necesita confiar en la implementación de la interfaz XA de la base de datos. Durante el proceso de envío de la transacción, si la base de datos de algún participante falla o la comunicación de la red es anormal, la transacción completa no se completará y se requerirá una operación de reversión manual.

2.2 Resumen

Una transacción global distribuida, el todo es un modelo de compromiso de dos fases.
inserte la descripción de la imagen aquí

Una transacción global se compone de varias transacciones de sucursal. Las transacciones de sucursal deben cumplir con los requisitos del modelo de confirmación de dos fases, es decir, cada transacción de sucursal debe tener su propio: comportamiento de preparación de una etapa y comportamiento de confirmación o reversión de dos
fases
.

De acuerdo con los diferentes patrones de comportamiento de las dos fases, dividimos las transacciones de la sucursal en

  • Modo de transacción automático (sucursal)
  • Modo de transacción TCC (sucursal)。

2.2.1 Modo TCC

El modo TCC consiste en dividir una transacción grande en tres transacciones pequeñas: probar, confirmar y cancelar.
Seata admite transacciones distribuidas en modo TCC.
En el modo TCC, las aplicaciones pueden administrar el procesamiento de transacciones distribuidas de manera más detallada.
El modo TCC no depende del soporte de transacciones de los recursos de datos subyacentes.
El modo TCC hace referencia al centro de gestión que admite la integración de transacciones de sucursales personalizadas en transacciones globales.

nombre artístico alias Principio y división del trabajo
etapa de juicio Una etapa, preparar el comportamiento Lógica de preparación personalizada de llamadas, todos los controles comerciales y reserva de recursos
etapa de confirmación Comportamiento de compromiso de dos etapas Llame a la lógica de confirmación personalizada, ejecución empresarial real
cancelar fase Comportamiento de reversión de dos etapas Llamar a lógica de reversión personalizada, liberación de recursos

2.2.2 Modo AT [el más común]

El modo AT es el modo más común.
Seata admite transacciones distribuidas en modo AT.
Seata se puede implementar utilizando fuentes de datos subyacentes y marcos como JDBC.

principio

La confirmación y reversión de transacciones se realizan a través de bloqueos de bases de datos. Cuando una transacción implica varias operaciones de base de datos, estas operaciones se incluirán en la misma transacción. Si alguna operación falla, la transacción completa también fallará y todas las operaciones anteriores se revertirán.

premisa

Basado en una base de datos relacional que admite transacciones ACID locales,
las aplicaciones Java acceden a la base de datos a través de JDBC.

mecanismo general

Evolución del protocolo de compromiso de dos fases:

Fase 1: los datos comerciales y los registros de reversión se confirman en la misma transacción local, liberando bloqueos locales y recursos de conexión; Fase 2
:
① Confirmar de forma asincrónica y completar muy rápidamente;
② La reversión se revierte a través del registro de reversión en la fase 1 hacia la compensación.

El modo AT se basa en una base de datos relacional que admite transacciones ACID nativas:

El comportamiento de preparación de la primera etapa: en la transacción local, envíe la actualización de datos comerciales y el registro de registro de reversión correspondiente; el
comportamiento de compromiso de la segunda etapa: se completa de inmediato con éxito y limpia automáticamente de forma asíncrona el registro de reversión en lotes;
la segunda etapa Comportamiento de reversión: a través del registro de reversión, genera automáticamente operaciones de compensación para completar la reversión de datos.

aislamiento de escritura

En la primera etapa, antes de que se confirme la transacción local, es necesario asegurarse de obtener primero el bloqueo global;
si no se obtiene el bloqueo global, la transacción local no se puede enviar;
el intento de obtener el bloqueo global se limita a un cierto rango, y si excede el rango, se abandonará y la transacción local se revertirá y se liberará.

3. Los componentes centrales de Seata

Incluye tres componentes principales: TC (Coordinador de transacciones), TM (Administrador de transacciones) y RM (Administrador de recursos), y algunos componentes auxiliares: AT, TCC, Saga.

inserte la descripción de la imagen aquí

El esquema de procesamiento de transacciones distribuidas de Seata se puede dividir en cuatro coordinadores principales:

componentes Coordinador explicación del componente
CT coordinador, coordinador de transacciones El componente central de la transacción distribuida Seata, el rol: coordinar el trabajo de todos los participantes y manejar el envío y la reversión de transacciones distribuidas, responsable de administrar y coordinar el procesamiento de toda la transacción distribuida, puede administrar el registro de recursos y coordinar el trabajo de múltiples RM. Después de que TC reciba la solicitud de registro de la transacción global, asignará un XID global único a la transacción. Durante la ejecución de la transacción global, TC también mantiene el estado de todos los participantes y envía la transacción cuando la transacción global se ejecuta con éxito; de lo contrario, revierte la transacción.
TM coordinador, gerente de transacciones El componente central de la transacción distribuida Seata, su función: administrar las transacciones de la sucursal, incluida la creación, el envío, la reversión y otras operaciones de las transacciones de la sucursal. TM también puede dividir transacciones globales para admitir grandes conjuntos de datos y un alto acceso simultáneo. Cuando una aplicación necesita realizar un procesamiento de transacciones distribuidas, TM es responsable de vincular todas las operaciones en una transacción y garantizar la integridad y confiabilidad del procesamiento de transacciones.
RM coordinador, administrador de recursos RM se utiliza para administrar el envío y la reversión de transacciones locales y utiliza el administrador de recursos local para administrar el control de recursos. RM asignará un TXID único local a cada transacción y utilizará este TXID para coordinar el procesamiento de los recursos. RM es responsable de administrar los recursos subyacentes en la aplicación, como bases de datos, colas de mensajes y cachés. Cuando se requiere el procesamiento de transacciones distribuidas, RM registrará los recursos con TC y procesará varias solicitudes de transacciones de RM.
EN Coordinador AT, modo de confirmación automática En modo AT, la aplicación debe actualizarlo en el coordinador central a medida que realiza cada operación. Cuando es necesario deshacer una transacción distribuida, el coordinador de AT deshará todas las operaciones de acuerdo con el orden de las operaciones.

4. Cómo funciona Seata

Echemos un vistazo más de cerca a cómo funciona Seata

4.1 El primer paso: el inicio de la transacción global

Cuando se inicia una aplicación, Seata crea una transacción global para la aplicación y asigna un XID global único.
La transacción global incluye transacciones de sucursales múltiples (es decir, RM) y es coordinada y administrada por TC.

4.2 El segundo paso: registro de operaciones en sucursal

Antes de que una transacción de sucursal pueda participar en una transacción global, debe registrarse con el TC. Cuando RM envía una solicitud de "registro" a TC, TC asignará un TXID único local para la transacción de la sucursal y devolverá el TXID a RM. En este punto, RM puede usar este TXID para participar en la transacción local controlada por la transacción global.

4.3 El tercer paso: Ejecución de transacciones en sucursal

Durante la ejecución de las transacciones de la sucursal, RM monitorea la ejecución de sus transacciones locales e informa los resultados de la ejecución a TC. Durante este periodo, Seata gestionará y controlará la transacción global para asegurar la consistencia de su ejecución. Si todas las transacciones de la sucursal se ejecutan con éxito, TC considera que la transacción global se ejecuta con éxito; de lo contrario, TC revierte toda la transacción global.

4.4 Paso 4: Confirmación o reversión de transacciones globales

Cuando se ejecutan todas las transacciones de la sucursal, TC decidirá si compromete o revierte la transacción global de acuerdo con las reglas de coordinación correspondientes. Si TC decide comprometerse, Seata enviará la transacción global a TM para su procesamiento. El TM notifica al RM correspondiente para enviar la transacción local de acuerdo con la información de la transacción global. Si TC decide revertir, Seata llamará a RM para revertir todas las transacciones de la sucursal y las transacciones globales.

5. Características y ventajas de Seata

Seata es una solución de transacciones distribuidas con las siguientes ventajas, las siguientes son las principales características de Seata:

5.1 Alta disponibilidad y consistencia de datos

Seata proporciona garantías de confiabilidad y consistencia de datos para el procesamiento de transacciones distribuidas, y puede garantizar la integridad de las transacciones distribuidas y la consistencia de datos en cualquier momento. Seata es escalable vertical y horizontalmente y admite la ejecución en varias plataformas de hardware y sistemas operativos.

5.2 Tolerancia a fallos

Seata proporciona procesamiento de transacciones distribuidas de alta disponibilidad y admite tolerancia a fallas cuando ocurren excepciones.

5.3 Simplicidad

Seata es muy simple de usar y puede implementar fácilmente transacciones distribuidas en el flujo de trabajo de la aplicación.

5.4 Alto rendimiento

El procesamiento de transacciones distribuidas de Seata tiene un alto rendimiento y puede manejar una gran cantidad de solicitudes de transacciones distribuidas de manera rápida y confiable.

5.5 Soporte de la comunidad de código abierto

Seata es un software gratuito y de código abierto con un fuerte apoyo de la comunidad de código abierto y una amplia base de usuarios.

5.6 Integración con Spring Framework

Seata se puede integrar fácilmente en las aplicaciones Spring, lo que es muy beneficioso para las aplicaciones que requieren procesamiento de transacciones distribuidas.

1. Introducir dependencias de transacción,

2. Introduzca la anotación: @Transaction

¿Modo AT de Seata? ? ? ?

Deshacer registro, revertir la tabla de registro.

inserte la descripción de la imagen aquí

¿Qué es el modo TCC?

Supongo que te gusta

Origin blog.csdn.net/wstever/article/details/131185126
Recomendado
Clasificación