--- transacciones distribuidas de SEAT

Problema distribuido

Aplicación del monómero se divide en aplicaciones de micro-servicio, los tres módulos originales se dividieron en tres aplicaciones separadas, cada una utilizando tres fuentes de datos independientes, tres necesidad operativa a los servicios de terminación de llamada. En este momento, la consistencia de datos dentro de cada servicio está garantizada por la transacción local, pero la consistencia de datos global no puede ser garantizada.

Lo que de SEAT?

De SEAT es un soluciones de transacción distribuida de fuentes abiertas, proporcionando un alto rendimiento y la facilidad de uso de los servicios de transacción distribuida. De SEAT proporcionará a los usuarios un AT, TCC, SAGA y modelo de transacción XA para usuarios distribuidos para crear una solución de una sola parada.

De SEAT se puede hacer?

  • procesamiento de transacciones distribuidas de una de tres componentes modelo ID +:
ID de transacción XID ID de transacción único global
Coordinador de transacciones (TC) Coordinador de transacciones: mantener en funcionamiento transacción global, es responsable de coordinar y conducir la operación de confirmación o retrotracción
Administrador de transacciones (TM) Administrador de transacciones: las transacciones globales de control de la frontera, es el encargado de abrir una transacción global, y, finalmente, poner en marcha una solución global para confirmar o deshacer mundial
Administrador de recursos (RM) Explorer: Control de los asuntos rama, la rama es responsable del registro, informes de estado, y recibir coordinador de asuntos de instrucción, rama unidad de transacción (local) confirmación o retrotracción

modo AT

premisa

  • Soporte para transacciones ACID sobre la base de base de datos relacional local.
  • Las aplicaciones Java acceder a la base de datos a través de JDBC.

Sistemas enteros

  • La evolución de la confirmación de dos fases protocolo:
    • Etapa: registro de datos de negocios y rollback presentado en la misma transacción local, el bloqueo se libera y los recursos de comunicación locales.
    • Dos etapas:
      • Enviar Asynchronized, muy rápidamente completado.
      • Rollback inversa compensada por una fase logarítmica de laminación.

el aislamiento de escritura

  • confirmaciones de transacciones locales antes de una etapa, tiene que estar seguro de obtener el bloqueo global.
  • No hacer el bloqueo global no puede ser sometida a asuntos locales.
  • Tome intentos de bloqueo global está limitada dentro de un cierto rango, fuera de rango se dará por vencido, y de vuelta rollo de la transacción local, el bloqueo se libera localmente.

El aislamiento de lectura

  • El sentido global por defecto se ha presentado (Lectura confirmada) o más sobre la base de, de SEAT (modo AT) en la transacción de base de datos de nivel de aislamiento de nivel de aislamiento local es la lectura no confirmada (lectura no confirmada).

modo de TCC

  • Una transacción global distribuida, el modelo general es compromiso en dos fases. Servicios de transacciones mundiales se compone de varias ramas, la rama modelo de transacción para cumplir con los requisitos de confirmación en dos fases, que requiere que cada rama tiene su propia transacción son:

    • Preparar una fase comportamiento
    • Dos etapas de cometer o el comportamiento de reversión
  • En función de los patrones de comportamiento de dos etapas, vamos a ramificar transacción en automático (Rama) y modo de transacción (Rama) Modo Manual de Operación.

  • A modo admite transacciones ACID locales basadas en bases de datos relacionales:

    • Un preparar comportamiento de fase: en los asuntos locales, presentar los datos de tráfico y actualizar el registro de reversión correspondiente.
    • En dos fases: actos conclusión exitosa de inmediato, por lotes de mantenimiento del registro automático rollback asíncrona.
    • De dos etapas comportamiento de reversión: Diario de reversión mediante la generación automática de una operación de compensación, los datos completos de rebobinado.
  • Su caso, el modo de TCC, que no depende de los recursos de soporte de transacción de datos subyacentes:

    • Un preparar comportamiento de fase: LLAMADA preparar lógica personalizada.
    • En dos fases actos: Llamada de cometer lógica personalizada.
    • el comportamiento de reversión de dos etapas: la costumbre de llamar la lógica de reversión.
  • El llamado modo de TCC se refiere a la costumbre de la ayuda en la rama asuntos de la gestión global de la transacción.

modo de saga

  • Saga es un modelo de SEAT soluciones a largo transacción, siempre en el modo de Saga, un proceso de negocio cada participante para presentar los asuntos locales, cuando un participante no logra compensar los participantes ya parecía haber tenido éxito, una etapa y el servicio hacia adelante servicios de desarrollo empresarial de compensación de dos etapas se realizan.

escena aplicable

  • procesos de negocio de largo, los procesos de múltiples negocios
  • Los participantes incluyen a otras empresas de servicios o sistemas heredados no pueden proporcionar el modo TCC requiere tres interfaces

superioridad

  • Fase cometer una transacción local, sin bloqueo, de alto rendimiento
  • Impulsada por eventos de arquitectura, los participantes pueden ejecutar de forma asincrónica, de alto rendimiento
  • servicio de compensación es fácil de implementar

defecto

  • No garantiza el aislamiento

Ejemplos

ejemplo

  • Los usuarios compran la lógica de negocio de la mercancía. Toda la lógica de negocio se apoya en tres micro-servicios:
    • Servicios de depósito: para una cantidad dada de una deducción de almacenamiento de los productos básicos.
    • Ordenes de Servicios: Crear pedidos teniendo en cuenta las necesidades de adquisición.
    • Servicios de la cuenta: de deducir de la cuenta del usuario.

gráfico

Aquí Insertar imagen Descripción

Servicios de almacenamiento

public interface StorageService {

    /**
     * 扣除存储数量
     */
    void deduct(String commodityCode, int count);
}

Servicios de orden

public interface OrderService {

    /**
     * 创建订单
     */
    Order create(String userId, String commodityCode, int orderCount);
}

Servicios de cuentas

public interface AccountService {

    /**
     * 从用户账户中借出
     */
    void debit(String userId, int money);
}

La lógica principal negocio

public class BusinessServiceImpl implements BusinessService {

    private StorageService storageService;

    private OrderService orderService;

    /**
     * 采购
     */
    public void purchase(String userId, String commodityCode, int orderCount) {

        storageService.deduct(commodityCode, orderCount);

        orderService.create(userId, commodityCode, orderCount);
    }
}
public class OrderServiceImpl implements OrderService {

    private OrderDAO orderDAO;

    private AccountService accountService;

    public Order create(String userId, String commodityCode, int orderCount) {

        int orderMoney = calculate(commodityCode, orderCount);

        accountService.debit(userId, orderMoney);

        Order order = new Order();
        order.userId = userId;
        order.commodityCode = commodityCode;
        order.count = orderCount;
        order.money = orderMoney;

        // INSERT INTO orders ...
        return orderDAO.insert(order);
    }
}

De SEAT Distributed Transaction Solutions

Aquí Insertar imagen Descripción

  • Tan sólo hay que utilizar una @GlobalTransactionalanotación en los métodos de negocio
    @GlobalTransactional
    public void purchase(String userId, String commodityCode, int orderCount) {
        ......
    }

Cuanto más se sabe, más usted no sabe.
Forma correcta sin necesidad de cirugía, los pacientes aún pueden buscar, no hay ninguna manera de la cirugía, poniendo fin a la cirugía.
Si usted tiene otras preguntas, mensaje de bienvenida, podemos discutir, aprender juntos y progresar juntos

Ha publicado 193 artículos originales · alabanza 116 won · vistas 10000 +

Supongo que te gusta

Origin blog.csdn.net/qq_40722827/article/details/105161929
Recomendado
Clasificación