RabbitMQ- garantizar una transmisión fiable de mensajes

 

resumen:

Hablando fiabilidad de entrega de mensaje, no se puede evitar, a menudo se encuentra en el trabajo práctico, tales como la necesidad de proteger algunos de los mensajes centrales del negocio no se pierdan

 

  • El primer escenario (estado de registros de la base cambia la forma):

 

  • Paso 1: En primer lugar, la información del mensaje (datos de servicio) almacenados en la base de datos, de inmediato, entonces puede también ser almacenado en el registro de mensaje (u otra tabla de registro de mensajes de una base de datos de homología) una lista de mensajes grabados
  • Paso 2: MQ Broker envía un mensaje al nodo (utilizando Enviar confirmación, el resultado será devuelto asíncrono)
  • Paso 3,4: Productor final de MQ Broker de recibir vueltas nodo un mensaje de reconocimiento resultados confirman, a continuación, actualizar el estado de los mensajes tabla de registro de mensajes. Por ejemplo, el estado por defecto = 0 Al recibir el mensaje de confirmación de éxito, que se actualizará a 1!
  • Paso 5: En el mensaje de confirmación, pero el proceso puede ser debido a fallos de red, MQ Broker provoca mensaje anormal eco final falló o anormal. Esta vez necesitamos que el emisor (productor) para la confiabilidad de entrega de mensajes, y garantiza que el mensaje no se pierde, el éxito de entrega 100%! (No es un caso extremo de flash, regresar con éxito un mensaje de confirmación Broker, pero el lado de la producción, debido a fallos de red no recibió, esta vez para la nueva entrega puede resultar en mensajes duplicados, tales como la potencia de procesamiento necesaria para hacer el lado del consumidor) por lo que necesitamos para tener una tarea de sincronización (por ejemplo, cada 5 minutos a tirar en un mensaje de estado intermedio, por supuesto, el mensaje puede establecer un periodo de tiempo de espera, tal como más de 1 estado minutos = 0, significa que dentro de 1 minuto de esta ventana de tiempo, el mensaje no es nuestro se confirma, se retiró de la tarea programada)
  • Paso 6: A continuación ponemos el mensaje intermedia re-entrega de estado de reintento de envío, seguimos enviando un mensaje a MQ, por supuesto, también puede conducir a una variedad de razones no pudo enviar
  • Paso 7: Podemos definir el número máximo de los esfuerzos para tratar de adoptar, como la entrega de tres veces, o fracaso, entonces podemos terminar estado se establece en estado = 2, y finalmente entregado a la clase artificial de proceso de resolución de problemas (o a los mensajes de volcado fallen tabla).
  •  

 

  •  La segunda opción (mecanismo + compensación de retardo de consulta):

En primer lugar, cuanto menor es la módulos figura representan significados:

Servicio aguas arriba representa el lado de la producción;

Servicio aguas abajo representa el lado del consumidor;

MQ Broker puede ser un clúster MQ;

Servicio de Llamada representa un servicio de devolución de llamada;

O con el fin, por ejemplo.

  • Paso: En primer almacén de negocio de pedidos, a continuación, enviar el mensaje a un terminal corredor de cola 1. Tenga en cuenta que esta vez, no lo hago a continuación mensaje de la orden I y almacenados en otra base de datos, donde sólo una vez la operación de almacenamiento.
  • Paso: El primer paso después de enviar un mensaje, establece un tiempo de retardo, tal como cinco minutos para enviar el mensaje de nuevo, el mensaje se envía a la cola de broker terminal 2;
  • El tercer paso: el consumidor final para monitorizar una cola especificada, el consumo de procesamiento de mensajes;
  • Paso cuatro: Después de completar el final de noticias de los consumidores realmente tratar, sino también su propia interna volver a generar un nuevo mensaje de llamada de confirmación de envío de confirmación. Confirmar este mensaje de confirmación será enviado a un terminal corredor de cola de 3.
  • Paso cinco: habrá un servicio de devolución de llamada Confirmar oyente escucha a esta cola 3, si el servicio de devolución de llamada recibido este mensaje de confirmación desde el lado del consumidor de bucle de retorno, entonces el servicio de devolución de llamada en el lado del consumidor se considera los datos de consumo de éxito, esta noticia hizo un almacenamiento persistente, el mensaje se almacena en la próxima MSG DB.
  • Paso seis: Cinco minutos después de alcanzar la entrega retardada de intermediario de mensajes terminal 2 cola especificada. Servicio de Llamada irá a escuchar cola 2, cola de 2 si llega el mensaje de retardo, el servicio de devolución de llamada comprobará la base de datos DB MSG para ver si el mensaje se ha consumido consumidor final.

Si hay registros MSG DB, entonces el servicio de devolución de llamada no hace nada.

Si el registro no existe MSG DB, el consumidor no tiene explicación o datos de respuesta se devuelve en el proceso de retorno debido al fallo en la red hace que el retorno, a continuación. Servicio de Llamada iniciará la comunicación RPC, el envío de un reenvío del comando (para llevar el mensaje ID), informar al productor acaba de emitir este mensaje no se encuentra, re-re-enviado. Entonces, el primer paso se realiza repetidamente y a continuación, el lado de la producción.

puntos de entrega de mensajes Tardías

Retardo de entrega: en comparación con el primer mensaje fuera del programa de la biblioteca que envía un mensaje al final de la final de la producción del agente de cola 1, adicionalmente retardo de envío el mismo mensaje a otro corredor cola terminal 2.

Devolución de llamada comprobar: Si el consumidor final de la cola 1 en el consumo de datos es satisfactoria, el servicio de devolución de llamada para escuchar el mensaje de confirmación de que el consumidor el lado del consumidor, este mensaje va a persistir en el MSG DB. Cuando el servicio de devolución de llamada para escuchar el retardo de cola de mensajes 2, compruebe si hay un registro MSG DB. El proceso de grabación no es, sin registrar el servicio de devolución de llamada a transmitir a la producción lado de un comando de reenvío, la realización de la primera operación de paso se repite.

Caso extremo: si el lado de los consumidores no ha vuelto a confirmar el mensaje de confirmación, o la excepción del servicio de devolución de llamada se produce cuando la actualización de base de datos MSG, ¿cómo hacer? retraso en la entrega puede proporcionar mecanismo de compensación. Porque después de cinco minutos, los servicios de devolución de llamada debe ser capaz de escuchar este mensaje y, a continuación, ir a buscar el mensaje MSG existe registro DB, para determinar si el lado de la producción necesidad de volver a enviar el mensaje.

Ventajas de retardo entrega de mensajes

Hacer un poco de almacenamiento de base de datos, mejorando el rendimiento:

Puede ser el principio, si se ejecuta operaciones de inserción de persistencia, dos veces por segundo hasta 1000 pueden ser únicas, pero sólo si una persistencia, probablemente solo 2.000 por segundo, lo que equivale al ahorro de un servidor, y reduce estos dos se pueden producir tiempos de persistencia operaciones de base de problema.

mecanismo de compensación asíncrono, proporcionando fiabilidad: dos desacoplamiento DB. Mainstream enlace básico: para almacenamiento de mensajes, órdenes de producción envía un mensaje al lado del agente, el consumidor es responsable de supervisar la cola para el consumo. Devolución de llamada se proporciona un servicio de compensación, enlazar no es la actividad principal de la cumbre, pero se dividirá como un mensaje de servicio asíncrono compensación por separado.

Resumen: Mensaje de retraso máximo de entrega de guardar un programa de datos para la operación de caer, y mejorar el rendimiento global de alta concurrencia. Al mismo tiempo, el mecanismo de devolución de llamada asincrónica para compensar el proveedor de servicios, de modo que la fiabilidad de la producción de descarga lateral se ha protegido más.

 

来自< https://cloud.tencent.com/developer/news/370697 >

Publicado 70 artículos originales · elogios ganado 18 · Vistas a 50000 +

Supongo que te gusta

Origin blog.csdn.net/qq_40325734/article/details/105332982
Recomendado
Clasificación