Una cosa a tener en cuenta es que la gestión de conexiones es súper importante para asegurar que tu aplicación se comporte bien si su conexión se cae o el servicio se reinicia. Esto es algo que tienes que hacer por tu cuenta.
Otra muy buena opción para propagar eventos dentro de tu sistema es RabbitMQ. RabbitMQ es un broker de mensajes de código abierto, por lo que se encarga de enviar mensajes entre diferentes servicios, productores y consumidores. Tiene soporte para muchos protocolos diferentes, pero el principal que se suele usar es MQP. Y esto permite un enrutamiento de mensajes confiable, flexible y escalable.
Algunos términos clave que debes conocer sobre RabbitMQ, si empiezas a investigarlo o alguien te habla sobre su conexión, es una conexión TCP usando el protocolo MTP. Un canal, que es una conexión virtual multiplexada dentro de MQP. Así es como realizas diferentes acciones y puedes tener comunicación multiplexada a través del único socket TCP. Colas, que son componentes básicos para almacenar y gestionar mensajes específicos, e intercambios, que son como un agente de enrutamiento que te permite poner mensajes en una o más colas.
Hay un par de patrones bien conocidos en RabbitMQ. El primero sería publicar y suscribir. Esto encaja muy bien en la arquitectura de administración. Podemos tener un publicador en el lado izquierdo que publica en un intercambio, que es solo un agente de mensajería que te permite enrutar mensajes a diferentes personas. Y los consumidores pueden vincular sus propias colas a este intercambio. Así que cada consumidor que vemos en el lado derecho, consumidor A, consumidor B y consumidor C, puede realmente consumir actualizaciones de este publicador a su propio ritmo y manejarlas a su manera. Así que esto es realmente, realmente poderoso dentro de RabbitMQ. Es una propagación de cambios.
Otra cosa que podrías mirar son las llamadas a procedimientos remotos, donde el servicio A necesita enviar una instrucción al servicio B. En este caso, el servicio B instancia una cola de comandos. El servicio A interactúa con esta cola de comandos enviando un ID de correlación para el mensaje y una cola de respuesta, que es una cola a la que el servicio A debe intentar. Así que cuando el servicio A envía el comando al servicio B o a esta cola de comandos, el servicio B lo procesa y envía la respuesta con el ID de correlación en esta cola de respuesta proporcionada de vuelta al servicio A.
Cuando miramos la combinación de estas cosas dentro de tus microservicios, verás muchas cosas como esta, donde tienes intercambios yendo en cualquier dirección. Tienes este intercambio que está siendo expuesto por el servicio A, donde el cliente A está suscrito a él, y también tienes colas de comandos donde el cliente A puede decir, edita, dame todos los datos de las últimas 24 horas. No es suficiente que solo obtenga las actualizaciones en tiempo real.
Otro broker realmente bueno, que es más ligero, sería MQTT. Esto básicamente es solo un protocolo de mensajería, así que no lo confundas con los brokers en sí mismos. Esto se usa comúnmente en aplicaciones IoT, donde tienes como un ancho de banda bajo o redes poco fiables, o tal vez hay ahorro de energía con tus baterías, no quieres tener una conexión consistente. Y esto opera en un modelo básico de publicación-suscripción, que te permite desacoplar tus productores y consumidores. Algunas de las cosas que escucharás al discutir MQTT son temas, que es solo una cadena jerárquica que actúa como un mecanismo de enrutamiento.
Comments