Conectores cola, repositorio y pub/sub

Clase 29 de 43Curso Profesional de Arquitectura de Software

Resumen

Elegir el conector correcto acelera el desarrollo y evita cuellos de botella. Aquí se explica, con ejemplos claros, cómo funcionan los conectores de tipo cola, repositorio o pizarra, y publicar/suscribir. Se destacan conceptos como productor, consumidor, transaccionalidad, consistencia y desacoplar componentes, tal como se describe en el material.

¿Por qué usar un conector de tipo cola?

Cuando el productor genera mensajes más rápido que el consumidor, una cola permite compatibilizar velocidades. Se encolan mensajes para que el consumidor los procese a su ritmo, sin perder datos ni bloquear al productor.

  • Encolar es agendar procesamiento. Cada mensaje espera hasta que el consumidor esté listo.
  • Evita saturación del consumidor. Procesa según su capacidad real.
  • Aísla picos de carga. El productor sigue trabajando sin fricción.

¿Qué problema resuelve?

  • Diferencias de velocidad entre componentes.
  • Costos de comunicación o ejecución más altos que la lectura en memoria.

¿Ejemplo práctico?

  • Se lee un fichero a memoria línea por línea.
  • Por cada línea, se requiere una comunicación de red o una ejecución compleja en otro componente.
  • Solución: se agenda cada línea en una cola de trabajo y otro componente la consume cuando puede.

¿Qué habilidades se ejercitan?

  • Diseñar flujos con productor/consumidor desacoplados.
  • Priorizar agendamiento y procesamiento asíncrono.
  • Identificar cuándo una cola optimiza rendimiento.

¿Cómo funciona un conector repositorio o pizarra?

Este conector lee y escribe en un componente que actúa como base de datos. Prioriza la integridad del dato y cómo impacta el estado del sistema. Ofrece transaccionalidad y consistencia en las operaciones.

  • Transacciones atómicas. Todo o nada en una misma transacción.
  • Estado consistente. Al finalizar la escritura, el sistema queda actualizado.
  • Lecturas confiables. La lectura puede ser consistente respecto al momento de inicio.

¿Qué garantiza?

  • Un driver de conexión (el conector) asegura que múltiples escrituras en una misma transacción sean atómicas y consistentes.
  • Al terminar, “ha escrito todo”, y el estado del sistema refleja los cambios.

¿Cómo se lee y escribe de forma consistente?

  • Es posible leer en medio de una transacción.
  • Se puede escribir, leer y volver a escribir dentro de una misma comunicación con la base de datos, manteniendo la coherencia.

¿Qué habilidades se ejercitan?

  • Modelar operaciones con transaccionalidad.
  • Usar consistencia para lecturas y escrituras seguras.
  • Evaluar cuándo un conector repositorio/pizarra es la vía adecuada.

¿Qué resuelve un conector publicar/suscribir en microservicios?

El conector de publicar/suscribir (también pub/sub) distribuye eventos desde un componente publicador hacia componentes suscriptores, sin que tengan que conocerse entre sí. Así se logra desacoplar y escalar sistemas distribuidos.

  • El conector recibe eventos del publicador.
  • El suscriptor indica qué eventos le interesan.
  • Cuando ocurre un evento, el conector lo entrega a los suscriptores relevantes.

¿Cómo desacopla componentes?

  • Ningún componente depende de la identidad o detalles del otro.
  • Los cambios en un componente no obligan a cambiar el resto.
  • Ideal para aplicaciones distribuidas y microservicios.

¿Qué casos ilustra el ejemplo?

  • Un componente con una aplicación web o una API publica eventos.
  • Otros componentes, como reportes o notificaciones a usuarios, reaccionan a esos eventos.
  • Resultado: se mantienen independientes, sin acoplarse a la fuente del evento.

¿Qué habilidades se ejercitan?

  • Diseñar flujos orientados a eventos.
  • Definir suscripciones por interés.
  • Mantener independencia entre publicadores y suscriptores.

¿Quieres profundizar en un caso concreto? Cuéntame tu escenario: volumen de mensajes, tipo de transacciones o eventos que necesitas distribuir.