Uso de transacciones distribuidas de Steata

El escenario de uso de las transacciones distribuidas de Steata es un sistema de gestión de back-end donde la cantidad de simultaneidad no es muy grande.
Steate presenta y utiliza el sitio web oficial: http://seata.io/zh-cn/docs/overview/what-is-seata.html
La solución de transacciones distribuidas que usamos aquí es el modo AT, que es el modo de 2 piezas
que usamos Es la versión 0.7.1. Diferentes versiones pueden usar diferentes formas.

  • seata quiere controlar las transacciones distribuidas

  • 1) Cada base de datos de microservicio debe crear una tabla uodo_log
    ; tenga en cuenta que 0.7.1+ agrega el contexto de campo
    CREATE TABLE undo_log(
    idbigint (20) NOT NULL AUTO_INCREMENT,
    branch_idbigint (20) NOT NULL,
    xidvarchar (100) NOT NULL,
    contextvarchar (128) NOT NULL,
    rollback_infolongblob NOT NULL,
    log_statusint (11) NOT NULL,
    log_createddatetime NOT NULL,
    log_modifieddatetime NOT NULL,
    CLAVE PRINCIPAL ( id),
    CLAVE ÚNICA ux_undo_log( xid, branch_id)
    ) MOTOR = InnoDB AUTO_INCREMENT = 1 DEFAULT CHARSET = utf8;
    Inserte la descripción de la imagen aquí

  • 2), instale el coordinador de transacciones seata-server https://github.com/seata.seata/releases
    Inserte la descripción de la imagen aquí
    registry.conf modificación de la configuración del registro tipo de registro = nacos, la dirección se cambia a la dirección de conexión de nacos.
    Inserte la descripción de la imagen aquí
    Entonces inicia el servicio

  • 3) Integración
    1. Importar dependencia spring-cloud-starter-alibaba-seata | seata-all-0.7.1

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-seata</artifactId>
</dependency>
  • 3. Todos los microservicios que desean utilizar transacciones distribuidas utilizan seata DataSourceProxy
@Configuration
public class MySeataConfig {
    
    

    @Autowired
    DataSourceProperties dataSourceProperties;

    @Bean
    public DataSource dataSource(DataSourceProperties dataSourceProperties) {
    
    
        HikariDataSource dataSource = dataSourceProperties.initializeDataSourceBuilder().type(HikariDataSource.class).build();
        if (StringUtils.hasText(dataSourceProperties.getName())) {
    
    
            dataSource.setPoolName(dataSourceProperties.getName());
        }
        return new DataSourceProxy(dataSource);
    }
}

  • 4. Importe el
    registro.conf para cada servicio.
    Inserte la descripción de la imagen aquí
    La configuración service.vgroup_mapping de file.conf file.conf debe
    establecerse de acuerdo con spring.application.name: vgroup_mapping.gulimall-order-fescar-service-group = "default", o Modifique el sufijo configurando spring.cloud.alibaba.seata.tx-service-group, pero debe ser consistente con la configuración en file.conf
    Inserte la descripción de la imagen aquí
  • 5. Gran transacción: @GlobalTransactional
  • 6. Pequeñas transacciones remotas: @Transactional
    se usa en la entrada de @Transactional , mientras que otras llamadas remotas para abrir transacciones son transacciones locales @Transactional.
    Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/u014496893/article/details/114238773
Recomendado
Clasificación