Skip to content

Broker de Mensajería

Leo edited this page Aug 2, 2022 · 1 revision

Será el encargado de administrar las colas de mensajes de nuestro sistema. Como tal tendrá la responsabilidad de:

  • Administrar los suscriptores (Teams, Game Cards) asociados a las distintas colas.
  • Administrar la recepción, envío y confirmación de todos los mensajes a los múltiples suscriptores.
  • Mantener un registro de los últimos mensajes recibidos de las colas indicadas para futuros suscriptores.
  • Mantener e informar en todo momento los estados de las colas, con sus mensajes y suscriptores.

Para explicar esto, primero nos enfocaremos en el conceptos técnicos de qué es una Cola de mensajes (o Message Queue) para luego abordar los aspectos y lineamientos técnicos que tendrá nuestra implementación.

Abstract - Message Queue (MQ)

Las colas de mensajes son software que permiten la comunicación entre procesos (IPC) de manera asíncrona, lo que significa que el emisor y el receptor del mensaje no necesitan interactuar con la cola de mensajes al mismo tiempo.

Cada mensaje colocado en una cola se almacena hasta que el/los destinatarios los recuperen y/o lean. Las colas de mensajes tienen límites implícitos o explícitos sobre el tamaño de los datos que pueden ser transmitidos en un solo mensaje y el número de mensajes que pueden quedar pendientes en la cola.

De esta manera, vamos a tener varios procesos que van a funcionar como publicadores (o Publishers) que van a ser los encargados de dejar mensajes en una Cola de mensajes en particular mientras que otros procesos van a funcionar como suscriptores (o Suscribers) que van a recibir aquellos mensajes que lleguen a las colas de mensajes donde estén suscriptos.

image

En el ámbito de nuestro trabajo practico implementaremos una serie de colas de mensajes que utilizaremos para distintos propósitos que explicaremos más adelante. Dichas colas de mensajes deben cumplir con los siguientes aspectos técnicos:

  • Durabilidad: Todo mensaje debe permanecer en la cola de mensajes hasta que todos los Suscribers lo reciban.
  • Notificación de recepción: Todo mensaje entregado debe ser confirmado por cada Suscriptor para marcarlo y no enviarse nuevamente al mismo.
  • Mantenibilidad: Cada cola de mensaje debe mantener su estado y borrar los mensajes que fueron eliminados de la caché por el algoritmo de reemplazo
  • Asincronismo: La recepción y notificación de mensajes pueden diferir en el tiempo. No deben notificarse inmediatamente a los componentes suscritos a dicha cola.

Lineamiento e Implementación

Diseño implementado: Arquitectura de la Administración de Mensajes

image

Estructuras de datos utilizadas

image

Diseño

image

Diseño implementado: Administración de Memoria Caché

image

image

Estructuras de Datos: Buddy System

image

Ejemplo de flujo de procesamiento: Buddy System

image

Estructuras de Datos + Flujo de procesamiento: Particiones dinámicas

image