Saltar al contenido

Microservicios ¿Por qué utilizar RabbitMQ?

Solución:

En la arquitectura de microservicios, tiene dos formas de comunicarse entre los microservicios:

  • Sincrónico: es decir, cada servicio llama directamente al otro microservicio, lo que genera dependencia entre los servicios.
  • Asíncrono: tiene un centro central (o cola de mensajes) donde coloca todas las solicitudes entre los microservicios y el servicio correspondiente toma la solicitud, la procesa y devuelve el resultado a la persona que llama. Esto es para lo que se utiliza RabbitMQ (o cualquier otra cola de mensajes; MSMQ y Apache Kafka son buenas alternativas). En este caso, todos los microservicios solo conocen la existencia del concentrador.

microservices.io tiene algunos artículos muy buenos sobre el uso de microservicios

Una cola de mensajes proporciona un protocolo de comunicaciones asincrónicas – Tienes la opción de enviar un mensaje de un servicio a otro sin tener que saber si otro servicio es capaz de atenderlo inmediatamente o no. Los mensajes pueden esperar hasta que el servicio responsable esté listo. Un servicio que publica un mensaje no necesita saber nada sobre el funcionamiento interno de los servicios que procesarán ese mensaje. Esta forma de manejar los mensajes desacoplar el productor del consumidor.

Una cola de mensajes mantendrá los procesos de su aplicación separados e independientes entre sí; esta forma de manejar los mensajes podría crear un sistema que sea fácil de mantener y fácil de escalar.

En pocas palabras, se pueden usar dos casos obvios como ejemplos de cuándo las colas de mensajes realmente brillan:

  1. Para procesos de larga ejecución y trabajos en segundo plano
  2. Como intermediario entre microservicios

Para procesos de larga ejecución y trabajos en segundo plano:

Cuando las solicitudes toman una cantidad significativa de tiempo, es el escenario perfecto para incorporar una cola de mensajes.

Imagine un servicio web que maneja múltiples solicitudes por segundo y no puede, bajo ninguna circunstancia, perder una. Además, las solicitudes se manejan a través de procesos que requieren mucho tiempo, pero el sistema no puede permitirse el lujo de atascarse. Algunos ejemplos de la vida real podrían incluir:

  • Escala de imágenes
  • Envío de correos electrónicos grandes / numerosos (como boletines informativos)
  • Indexación de motores de búsqueda
  • Escaneo de archivos
  • Codificación de video
  • Entrega de notificaciones
  • Procesamiento de PDF
  • Cálculos

El intermediario entre microservicios:

Para la comunicación y la integración dentro y entre aplicaciones, es decir, como intermediario entre microservicios, una cola de mensajes también es útil. Piense en un sistema que necesita notificar a otra parte del sistema para que comience a trabajar en una tarea o cuando hay muchas solicitudes entrando al mismo tiempo, como en los siguientes escenarios:

  • Manejo de pedidos (pedido realizado, actualización del estado del pedido, envío de un pedido, pago, etc.)
  • Servicio de entrega de comida (hacer un pedido, preparar un pedido, entregar comida)
  • Cualquier servicio web que necesite manejar múltiples solicitudes

Aquí hay una historia que explica cómo Parkster (un servicio de estacionamiento digital) está dividiendo su sistema en múltiples microservicios usando RabbitMQ.

Esta guía sigue un escenario en el que una aplicación web permite a los usuarios cargar información en un sitio web. El sitio manejará esta información y generará un PDF y se lo enviará por correo electrónico al usuario. En este caso de ejemplo, manejar la información, generar el PDF y enviar el correo electrónico tomará varios segundos y esa es una de las razones por las que se utilizará una cola de mensajes.

Aquí hay una historia sobre cómo y por qué CloudAMQP usó colas de mensajes y RabbitMQ entre microservicios.

Aquí hay una historia sobre el uso de RabbitMQ en una arquitectura de microservicios basada en eventos para admitir 100 millones de usuarios al mes.

Y finalmente un enlace a Kontena, sobre por qué eligieron RabbitMQ para su arquitectura de microservicio: “Porque necesitábamos una solución estable, manejable y de alta disponibilidad para la mensajería”.

Tenga en cuenta que trabajo para la empresa detrás de CloudAMQP (proveedor de alojamiento de RabbitMQ).

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *