[Seata] Primer aprendizaje de Seata

Seata es una solución de transacciones distribuidas abierta conjuntamente por Ant Financial y Alibaba en enero de 2019. Estamos comprometidos a proporcionar servicios de transacciones distribuidas de alto rendimiento y fáciles de usar y a crear soluciones distribuidas integrales para los usuarios.

Dirección del sitio web oficial: Seata | Seata , que proporciona una gran cantidad de instrucciones de uso y análisis del código fuente en sus documentos y podcasts.

1.La arquitectura de Seata

Hay tres roles importantes en la gestión de transacciones de Seata:

  • TC (Coordinador de transacciones): coordinador de transacciones: mantiene el estado de las transacciones globales y de sucursales, y coordina el envío o la reversión de transacciones globales.

  • TM (Administrador de transacciones): administrador de transacciones: define el alcance de las transacciones globales, inicia transacciones globales, confirma o revierte transacciones globales.

  • RM (Administrador de recursos): administrador de recursos: administra recursos para el procesamiento de transacciones de sucursales, habla con TC para registrar transacciones de sucursales e informar el estado de las transacciones de sucursales, e impulsa las transacciones de sucursales para confirmarlas o revertirlas.

La arquitectura general se muestra en la figura:

Seata proporciona cuatro soluciones de transacciones distribuidas diferentes basadas en la arquitectura anterior:

  • Modo XA: modo de transacción por fases de gran coherencia, que sacrifica cierta disponibilidad y no intruye en el negocio

  • Modo TCC: modo de transacción por fases eventualmente consistente, con intrusión comercial

  • Modo AT: modo de transacción por fases eventualmente consistente, sin intrusión comercial y también el modo predeterminado de Seata

  • Modo SAGA: modo de transacción larga, intrusión comercial

No importa qué tipo de solución sea, es inseparable de TC, que es el coordinador de la transacción.

2. Implementar el servicio TC

Consulte el documento "Seata Implementation and Integration.md" proporcionado en los materiales previos a la clase:

3. Integración de microservicios con Seata

Tomemos el servicio de pedidos como ejemplo para demostrarlo.

        3.1Introducir dependencias

Primero, introduzca dependencias en el servicio de pedidos:

<!--seata-->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-seata</artifactId>
    <exclusions>
        <!--版本较低,1.3.0,因此排除--> 
        <exclusion>
            <artifactId>seata-spring-boot-starter</artifactId>
            <groupId>io.seata</groupId>
        </exclusion>
    </exclusions>
</dependency>
<dependency>
    <groupId>io.seata</groupId>
    <artifactId>seata-spring-boot-starter</artifactId>
    <!--seata starter 采用1.4.2版本-->
    <version>${seata.version}</version>
</dependency>

        3.2 Configurar el servicio TC

En application.yml en order-service, configure la información del servicio TC, obtengala a través del centro de registro nacos, combinada con el nombre del servicio

Obtenga la dirección del TC:

seata:
  registry: # TC服务注册中心的配置,微服务根据这些信息去注册中心获取tc服务地址
    type: nacos # 注册中心类型 nacos
    nacos:
      server-addr: 127.0.0.1:8848 # nacos地址
      namespace: "" # namespace,默认为空
      group: DEFAULT_GROUP # 分组,默认是DEFAULT_GROUP
      application: seata-tc-server # seata服务名称
      username: nacos
      password: nacos
  tx-service-group: seata-demo # 事务组名称
  service:
    vgroup-mapping: # 事务组与cluster的映射关系
      seata-demo: SH

¿Cómo encuentra el microservicio la dirección TC en función de estas configuraciones?

Sabemos que para los microservicios registrados en Nacos, se requieren cuatro datos para determinar una instancia específica:

  • espacio de nombres: espacio de nombres

  • grupo: grupo

  • aplicación: nombre del servicio

  • clúster: nombre del clúster

Las cuatro informaciones anteriores se pueden encontrar en el archivo yaml en este momento:

El espacio de nombres está vacío, que es el público predeterminado.

Combinada, la información del servicio TC es: public@DEFAULT_GROUP@seata-tc-server@SH, para que se pueda determinar el grupo de servicios TC. Luego puede ir a Nacos para obtener la información de la instancia correspondiente.

        3.3 Otros servicios

Los otros dos microservicios también se refieren a los pasos de pedido-servicio, que son exactamente los mismos.

4. Práctica práctica

Conozcamos los cuatro modos de transacción diferentes en Seata.

Supongo que te gusta

Origin blog.csdn.net/weixin_45481821/article/details/133211518
Recomendado
Clasificación