RabbitMQ mensaje de cola a base de soluciones de transacciones distribuidas - MQ distribuye mensajería middleware de combate

1 Velocidad entender MQ

Introducción Rabbitmg para resolver la transacción distribuida debe dominar los cinco conceptos básicos

Un middleware distribuido mensajería, alta capacidad de procesamiento de concurrencia basado en el desarrollo del lenguaje Erlang, con el nivel de idioma. Y el Marco de primavera es la misma empresa.
la persistencia de soporte, alta disponibilidad

Cinco conceptos fundamentales:

  1. Cola: almacenar datos reales locales
  2. Intercambio: la recepción de una solicitud, el volcado de datos
  3. Aprieto: Después de recibir la petición de dónde almacenar
  4. Datos de la aplicación se transmite: productor de mensajes
  5. consumidor de mensajes: Retire el procesamiento de datos de la aplicación

2, las cuestiones de transacciones distribuidas

transacción distribuida es un asunto de negocios, no puede ser separado de la escena específica.

Varias soluciones 2.1 transacciones distribuidas

● base de datos basada XA / JTA medio de un acuerdo
requiere que el soporte del proveedor de base de datos; componente Java tiene atomikos etc.
● asíncrono Revisar los datos de manera
Alipay, la iniciativa de pago de micro-canales para comprobar el estado de pago, en forma de facturas;
soluciones ● se basan en fuentes confiables (MQ) de
asíncrona escena; universales fuerte, la expansión de la más alta
● soluciones de programación TCC
selecta, Ali, hormigas vestido dorado propio paquete DTX

Esta meta artículo: para todas las personas, aprender a resolver el problema de las transacciones distribuidas basadas en fuentes confiables.
Soluciones para la transacción distribuida, negocio muy específica, son las ideas importantes en lugar de copiar

  • Misión de Estados Unidos arquitectura del sistema comentario

cuestiones transacción distribuida entre múltiples sistemas 2.2

  • pedidos individuales generados por los usuarios
  • Pedidos necesitan para pasar datos, generando de este modo dos cuestiones coherencia transaccional

Caso incorrecto

Cuando la llamada interfaz de falla, la transacción se deshace sistema de orden de nuevo, se solicita al usuario operación falla

误以为这样的接口调用写法,就不会有分布式事务问题

Interfaz éxito o el fracaso de llamadas, tendrá una serie de cuestiones de transacciones distribuidas:

  1. llamada interfaz es exitosa, la transacción de base de datos del sistema para cometer falla, el sistema no deshace la hoja de ruta, generar datos
  2. Interface llama a un tiempo de espera, la base de datos sistema de orden rollback transacción, interfaz del sistema de la hoja de ruta continúa para generar datos

En ambos casos, puede dar lugar a inconsistencias en los datos

3, para lograr una transacción distribuida - Cinco Paso

Resolver transacciones distribuidas a través de MQ 5 pasos, así como el procesamiento de transacciones distribuido locales a nota

  • Antes sistema de pedidos para enviar todos los sistemas de conocimiento de embarque petición HTTP interfaz, un problema!
  • Por lo tanto, consideramos un mensaje a MQ, cero asíncrona!

3.1 concepto global de diseño


Después de pedidos de catering, esperando lentamente centro de datos de generación de hoja de ruta, no es obligatoria la simultaneidad

  1. Producción fiable: para asegurarse de que el mensaje debe ser enviado al servicio de Rabitmq
  2. el consumo fiable: para asegurarse de que el mensaje debe sacar adecuado consume

Y, finalmente, a los datos de múltiples partes para llegar a un consenso.

3.2 Paso 1 - producir información registrada fiable de mensajes

  • Hay peligros ocultos - posibles mensajes no pudieron enviarlo!

Para asegurar el éxito de ciertos datos se envía al MQ.
En la misma operación, un aumento récord en la mesa de operaciones, el registro 每一条发往MQ的数据以及它的发送状态
por lo que añadir una tabla de información local en el sistema de pedidos

Por lo que en la práctica el código, no por las interfaces de los sistemas de HTTP interfaz de llamada de facturación, pero el uso de MQ

Al generar las órdenes, sino también ahorrar a la mesa de información local


3.3 Paso 2 - Producción de mensajería fiable (modificación del estado de transmisión del mensaje)

  • Uso RabbitMQ mecanismo de publicación transaccional acuse de recibo (confirmar)
    después de la apertura, MQ precisa mensaje de aceptación Acuse de recibo

  • A continuación, será capaz de saber cómo actualizar la tabla de información local

- Confirmar mecanismo para asegurar abierta en SB


  • Si no se recibe el acuse de recibo, la modificación mensaje de estado fallido y otras circunstancias especiales
    兜底方案:定时检查消息表,超时没发送成功,再次重发

3.4 Paso 3 - procesamiento de mensajes fiable (procesamiento normal)

  • Después sistema de carta de porte recibe los datos del mensaje de repente deja de funcionar, o visite la hoja de ruta cuando DB, DB pasa bruscamente hacia abajo, los datos del mensaje no se pierde en usted !!!

Así que tenemos las siguientes características:

Idempotente
evitar el procesamiento duplicado de los datos del mensaje, una operación del usuario, procesamiento de datos de tiempo correspondiente a solamente

abierto 手动ACK模式
por el control del consumidor mensaje de retransmisión / quitar / descarte

3.5 Paso 4 - mensajería confiable (mensaje de retransmisión)


Los consumidores procesamiento falla, tenemos que re-MQ nuevo para el consumidor.
Anomalías generalmente vuelva a intentar varias veces por los propios consumidores número récord de reintentos, y el número de controles (no siempre vuelva a intentarlo!)

Quinto paso 3.6 - mensajería confiable (mensaje de descarte)

el fracaso de manipulación del consumidor, o se descarta transferido directamente a una cola de mensajes (el DLQ)
重试次数过多、消息内容格式错误等情况,通过线上预警机制通知运维人员

4 Resumen y extensiones

Pros y contras de programa 4.1 MQ

ventaja en la apertura

  1. versatilidad
  2. Desarrollo y fuerte
  3. programa madura

deficiencias de la boca

  1. middleware basado en mensajes, sólo para escenarios asíncronos
  2. procesamiento de mensajes se retrasa, es necesario ser capaz de tolerar el negocio

Trate de evitar transacción distribuida;
tratar de hacer transacciones no básicos asíncronos;

4.2 expansión

Base teórica de soluciones de transacciones distribuidas

CAP teoría
teoría BASE
2PC protocolo
3PC protocolo
algoritmo Paxos.
Protocolo de coherencia Raft

Publicado cinco artículos originales · ganado elogios 0 · Vistas 245

Supongo que te gusta

Origin blog.csdn.net/weixin_32822759/article/details/105365940
Recomendado
Clasificación