02. Descripción general de la función RabbitMQ

02. ¿Qué es RabbitMQ?

Cola de mensajes 1.1MQ (Cola de mensajes)

  • El middleware de la cola de mensajes es un componente importante en los sistemas distribuidos

  • Resolver principalmente problemas como procesamiento asincrónico, desacoplamiento de aplicaciones, reducción de picos de tráfico, etc.

  • Permitiendo así una arquitectura de alto rendimiento, altamente disponible, escalable y eventualmente consistente

  • Use más productos de cola de mensajes: RabbitMQ, RocketMQ, ActiveMQ, ZeroMQ, Kafka, etc.

1.2El papel principal de MQ

1.2.1 Procesamiento asíncrono

Por ejemplo, en el sistema de pedidos, el proceso general solo necesita que el usuario realice un pedido y pague para que finalice el proceso. Sin embargo, hay muchos sistemas involucrados en el pago de las empresas de comercio electrónico, y el pago puede involucrar el sistema de cupones, el sistema de puntos y el sistema de SMS . Suponiendo que el pago tarda 100 ms, el sistema de cupones, el sistema de puntos y el sistema de SMS también consumen 100 ms, y el tiempo total empleado es de 400 ms.

proceso:
inserte la descripción de la imagen aquí

Como puede ver, solo se han agregado 3. Puedo decirle con absoluta certeza que el proceso de pedido real involucra más de 10 sistemas (comercio electrónico convencional), y cuanto mayor sea el número, más.

Si este enlace continúa así, los usuarios tardarán mucho en darse cuenta de que me toma decenas de segundos comprar algo. No les compro e-commerce basura, pero si es tan barato como Xixixi , ¡es realmente delicioso !

Pero la empresa no tiene la fuerza económica de Xixi, por lo que solo puede optimizar el sistema.

Pues si, el enlace se vuelve lento cuando el enlace es largo ¿Cómo solucionarlo?

Cuanto más largo sea el enlace, más lento será, pero descubrimos que el proceso anterior se puede realizar al mismo tiempo. Después de que pague con éxito , puedo aumentar o disminuir los puntos mientras verifico el cupón, y también puedo enviar un mensaje de texto al mismo tiempo. .

No podemos lograr el proceso normal, qué debemos hacer, asincrónico .

Si lo comparas, puedes encontrar que solo toma 100 milisegundos como máximo para que el usuario sepa que el pedido es exitoso, en cuanto al mensaje de texto que le envías unos segundos después, no le importa en absoluto, ¿verdad?

Los tres sistemas solo necesitan monitorear si hay un mensaje de pago en la cola.Si hay un sistema de cupones para verificar los cupones, el sistema de puntos también puede aumentar o disminuir puntos, y el sistema de SMS puede enviar un mensaje de texto al mismo tiempo. hora.
inserte la descripción de la imagen aquí

Chico, déjame interrumpirte, dijiste asincrónico, así que uso subprocesos y grupos de subprocesos para hacerlo, ¿no es lo mismo?

Oiga , entrevistador, no se preocupe , luego hablaré de eso, Sao, etc.

1.2.2 Desacoplamiento:

Ya que el entrevistador preguntó esto, déjame decirte por qué no podemos hacerlo con hilos, porque hacerlo con hilos, ¿quieres escribir código?

Tiene un proceso de pedido, deduce puntos, deduce cupones, envía mensajes de texto y deduce inventario. . . ¡ Esperando que tantas empresas llamen a tantas interfaces, cada vez que agrega una, debe llamar a una interfaz y luego volver a publicar el sistema !

Y si realmente está todo escrito junto, no es solo el problema de acoplamiento, también es problemático solucionarlo si tiene un problema. Si ocurre un problema en cualquier parte del proceso, podría afectar otros puntos. Mi amigo dijo que tengo todos proceso. Si no intenta atrapar , no lo haga. Créame, no lo haga. Este tipo de código es como una bomba de tiempo . No sabe cuándo explotará. Por lo general, no lo hace. explota , pero explota cuando estás haciendo actividades.Año nuevo en casa .

Sugerencia: P0-PN es el mecanismo que suelen utilizar las empresas de Internet para determinar el nivel de accidentes, y P0 es el nivel más alto.

Pero si usa una cola de mensajes , el problema del acoplamiento se resuelve fácilmente.

Cuando realiza un pedido, le dirá a otros sistemas que su pago fue exitoso y lo procesarán cuando lo reciban. Solo necesita realizar su propio proceso y enviar su mensaje. Luego, ¿a qué sistema desea conectarse? Es simple, solo suscríbase al mensaje de pago exitoso que envíe y lo monitorearé si su pago es exitoso .
inserte la descripción de la imagen aquí

Entonces tu proceso ha terminado, ¿no te importa si otros tienen éxito? Por ejemplo, si realiza un pedido, pero los puntos no se agregan y los cupones no se deducen, ¿qué debo hacer?

La pregunta es una buena pregunta, pero no hay necesidad de pensar en ella. El sistema de negocios en sí mismo es mantenido por sus propios desarrolladores. ¿Qué significa para mí hacer un pedido si no puede deducir puntos? Solo cuide su sistema de pedidos.

Sugerencia : eso es lo que dije, pero esto es en realidad una desventaja de usar colas de mensajes, que involucra los puntos de conocimiento de las transacciones distribuidas , que mencionaré a continuación.

1.2.3 Recorte de picos de flujo

  • Compras instantáneas, picos y otros negocios, dirigidos a escenarios de alta concurrencia
  • Debido a que el tráfico es demasiado grande, el aumento hará que la aplicación se cuelgue. Para resolver este problema, agregue una cola de mensajes en el front-end

imagen

  • Una vez que el servidor recibe la solicitud del usuario, primero se escribe en la cola de mensajes. Si excede la longitud de la cola, se descarta y se crea una página que termina en un instante.
  • Para decirlo sin rodeos, quien tiene éxito en el pico es el usuario que ingresa a la cola;

2. Introducción al conocimiento previo

2.1 Protocolo avanzado de colas de mensajes de AMQP

  • El protocolo de cola de mensajes avanzado, un protocolo de cola de mensajes avanzado estándar de capa de aplicación que proporciona servicios de mensajería unificados

  • Protocolo: Las reglas que se deben seguir en el proceso de transmisión de datos

  • Los clientes basados ​​en este protocolo pueden pasar mensajes con middleware de mensajes

  • No limitado por producto, lenguaje de desarrollo, etc.

2.2 JMS

  • Java Message Server, Java Message Service API, una especificación que desempeña un papel similar al de JDBC.
  • Es una API para middleware orientado a mensajes en la plataforma Java, que se utiliza para enviar mensajes entre dos aplicaciones o sistemas distribuidos para comunicación asíncrona.

2.3 La conexión entre los dos

  • JMS define una interfaz unificada y una operación de mensajes unificados; AMQP unifica el formato de interacción de datos a través del protocolo
  • JMS debe estar en lenguaje java; AMQP es solo un protocolo, no relacionado con el lenguaje

2.4 Idioma Erlang

  • Erlang (['ə:læŋ]) es un lenguaje de programación orientado a la concurrencia de propósito general desarrollado por CS-Lab, propiedad del fabricante sueco de equipos de telecomunicaciones Ericsson, para crear un lenguaje de programación que pueda manejar actividades y operaciones simultáneas a gran escala. ambiente

  • Originalmente diseñado por Ericsson específicamente para aplicaciones de comunicación, como interruptores de control o protocolos de conversión, etc., es ideal para construir sistemas informáticos paralelos distribuidos en tiempo real.

  • El entorno de tiempo de ejecución de Erlang es una máquina virtual, un poco como la máquina virtual de Java, por lo que una vez que se compila el código, también se puede ejecutar en cualquier lugar.

3 ¿Por qué elegir RabbitMQ?

  1. Comenzamos diciendo que hay tantos productos de cola de mensajes, ¿por qué eligió RabbitMQ?

  2. Primero mire el nombre: los conejos se mueven muy rápido y se reproducen increíblemente, por lo que Rabbit se usa como el nombre de este software distribuido (así de simple)

  3. Desarrollo de Erlang, el mejor socio de AMQP, fácil instalación e implementación, umbral bajo para comenzar

  4. Cola de mensajes de nivel empresarial, altamente confiable después de muchas pruebas prácticas, una gran cantidad de casos de aplicaciones exitosos, como Ali, NetEase y otros fabricantes de primer nivel lo han utilizado

  5. Dispone de una potente página de gestión WEB

  6. Fuerte apoyo de la comunidad para impulsar el progreso tecnológico

  7. Persistencia de mensajes de soporte, mecanismo de confirmación de mensajes de soporte, mecanismo de distribución de tareas flexible, etc., las funciones de soporte son muy ricas

  8. El escalado de clústeres es fácil y las ganancias de rendimiento se pueden multiplicar agregando nodos

  9. Resumen: si desea utilizar un sistema de cola de mensajes confiable, potente y fácil de administrar, elija

  10. RabbitMQ, si desea usar un alto rendimiento, pero no le importa perder datos ocasionalmente, puede usar kafka o zeroMQ

  11. El rendimiento de kafka y zeroMQ está más allá de la mesa, ¡y definitivamente puede abrumar a RabbitMQ!

4. Funciones de cada componente de RabbitMQ

imagen

  • Intermediario : entidad del servidor de cola de mensajes

  • Anfitrión virtual: anfitrión virtual

    • Identifica una colección de intercambios, colas de mensajes y objetos relacionados, formando un todo
    • Los hosts virtuales son dominios de servidor independientes que comparten el mismo entorno de autenticación y cifrado
    • Cada host virtual es esencialmente una mini versión del servidor RabbitMQ, con sus propias colas, intercambios, enlaces y mecanismos de permisos.
    • vhost es la base del concepto AMQP, el vhost predeterminado de RabbitMQ es /, que debe especificarse al vincular
  • Intercambio : Intercambio (enrutamiento)

    • Se utiliza para recibir mensajes enviados por productores y enrutar esos mensajes a colas en el servidor
  • Cola : cola de mensajes

    • Se utiliza para retener el mensaje hasta que se envía al consumidor.
    • Es el contenedor del mensaje y el destino del mensaje.
    • Un mensaje se puede poner en una o más colas.
    • El mensaje ha estado en la cola, esperando que el consumidor se conecte a la cola para retirarlo.
  • Banding : enlace para la asociación entre colas de mensajes e intercambios.

  • Canal : canal (canal)

    • Un canal de flujo de datos bidireccional independiente en una conexión multiplexada.
    • Los canales son enlaces virtuales establecidos dentro de conexiones TCP reales
    • Todos los comandos AMQP se envían a través de canales, ya sea que se publiquen mensajes, se suscriban a colas o se reciban mensajes, todo se realiza a través de canales.
    • Debido a que es muy costoso para el sistema operativo establecer y destruir conexiones TCP, se introduce el concepto de canales para reutilizar conexiones TCP.
  • Conexión : una conexión de red, como una conexión TCP.

  • Publicador : el productor del mensaje, que también es una aplicación cliente que publica mensajes en el intercambio.

  • Consumidor : el consumidor del mensaje, que representa una aplicación cliente que obtiene mensajes de la cola de mensajes.

  • mensaje : mensaje

    • El mensaje es anónimo, consta de un encabezado de mensaje y un cuerpo de mensaje.
    • El cuerpo del mensaje es opaco y el encabezado del mensaje se compone de una serie de atributos opcionales, que incluyen clave de enrutamiento (clave de enrutamiento), prioridad (prioridad), modo de entrega (el mensaje puede requerir almacenamiento persistente [modo de enrutamiento del mensaje]), etc. .

Supongo que te gusta

Origin blog.csdn.net/qq_41239465/article/details/123548723
Recomendado
Clasificación