Tres soluciones de transacciones distribuidas: Seata implementa la solución 2PC

Seata es un proyecto de código abierto Fescar iniciado por el equipo de middleware Ali, luego renombrado Seata, es un marco de transacciones distribuidas de código abierto. El problema del 2PC tradicional se resuelve en Seata. Impulsa la realización de transacciones globales a través de la coordinación de transacciones de sucursales de bases de datos relacionales locales. Es un middleware que funciona en la capa de aplicación. La principal ventaja es que tiene un mejor rendimiento y no ocupa recursos de conexión durante mucho tiempo. Resuelve los problemas de transacciones distribuidas que enfrentan los escenarios de microservicio de una manera eficiente e intrusiva para el negocio. Actualmente proporciona el modo AT (es decir, 2PC) y el modo TCC. Solución de transacciones distribuidas.

Las ideas de diseño de Seata son las siguientes:

Seata entiende una transacción distribuida como una transacción global que contiene varias transacciones de sucursal. La responsabilidad de la transacción global es coordinar las transacciones de sucursales bajo su jurisdicción para llegar a un acuerdo, ya sea para presentar con éxito juntos o no revertir juntos. Además, generalmente la transacción de sucursal en sí es una transacción local de una base de datos relacional. La siguiente figura es el diagrama de relación de la transacción global y la transacción de sucursal:image.png

Similar al modelo tradicional de 2PC, Seata define tres componentes para manejar el procesamiento de transacciones distribuidas:image.png

  • Coordinador de transacciones (TC): un coordinador de transacciones, que es un middleware independiente que necesita ser implementado y operado de manera independiente. Mantiene el estado de ejecución de las transacciones globales, recibe instrucciones de TM para iniciar el envío y la reversión de las transacciones globales, y es responsable de coordinar con las sucursales de RM Compromiso o reversión de transacciones.

  • Transaction Manager ™: Transaction Manager, TM debe integrarse en el programa de aplicación para funcionar, es responsable de iniciar una transacción global y finalmente iniciar una confirmación global o una instrucción de reversión global al TC.

  • Administrador de recursos (RM): controla las transacciones de la sucursal, es responsable del registro de la sucursal, el informe de estado y recibe instrucciones del coordinador de transacciones TC para impulsar el envío y la reversión de las transacciones de la sucursal (local).

Tome el registro de nuevos usuarios y envíe puntos, por ejemplo, el proceso de transacciones distribuidas de Seata:image.png

El proceso de ejecución específico es el siguiente:
1. La TM del servicio de usuario se aplica a TC para iniciar una transacción global: la transacción global se crea con éxito y se genera un XID único globalmente.
2. El RM del servicio de usuario registra una transacción de sucursal con el TC, que ejecuta la lógica de usuario recién agregada en el servicio de usuario y la incorpora a la jurisdicción de la transacción global correspondiente XID.
3. El servicio de usuario realiza una transacción de sucursal e inserta un registro en la tabla de usuario.
4. Ejecución lógica al servicio de integración de llamada remota (XID se propaga en el contexto del enlace de llamada de microservicio). El RM del servicio de puntos registra una transacción de sucursal con el TC, y la transacción de sucursal ejecuta la lógica de agregar puntos y los incorpora a la jurisdicción de la transacción global correspondiente de XID.
5. El servicio de puntos ejecuta transacciones de sucursal, inserta un registro en la tabla de registros de puntos y vuelve al servicio de usuario después de la ejecución.
6. La transacción de sucursal de servicio de usuario se ha completado.
7. TM inicia un envío global o resolución de reversión para XID a TC.
8. TC programa todas las transacciones de sucursal bajo XID para completar la solicitud de confirmación o reversión.

### Proceso de ejecución de RM
image.png

### Proceso de ejecución DEMO de transferencia bancaria Seata (ver código fuente 4)
1. Proceso de envío normal
image.png

2. Proceso de reversiónimage.png

Publicado 15 artículos originales · elogiado 0 · visitas 76

Supongo que te gusta

Origin blog.csdn.net/xrzi2015/article/details/105519001
Recomendado
Clasificación