Conector enrutador vs difusión: Twitter

Clase 28 de 43Curso Profesional de Arquitectura de Software

Resumen

Comprender cuándo usar un conector enrutador y cuándo un conector de difusión cambia la efectividad de cualquier sistema de mensajería. Aquí se explica, con un ejemplo claro de Twitter, cómo fluye un mensaje desde un emisor hacia los componentes receptores y dónde conviene ubicar la inteligencia que decide la entrega.

¿Qué diferencia a un conector enrutador de uno de difusión?

Un conector enrutador conecta un componente que emite un mensaje con un conjunto específico de componentes a los que ese mensaje sí les interesa. Tiene la inteligencia para entender el contenido y decidir el o los destinos adecuados. Puede enviar a un único componente o a varios a la vez.

Por contraste, un conector de difusión parte de un mensaje de un emisor y lo envía a muchos componentes. Luego, cada componente que escucha decide si ese mensaje le importa o no. La diferencia central está en quién piensa: el enrutador decide los destinatarios, o los componentes receptores filtran lo que reciben.

¿Cuándo conviene que la inteligencia esté en el conector o en el componente?

  • Cuando se busca precisión inmediata en la entrega: usar enrutador.
  • Cuando varios receptores deben escuchar todo y filtrar: usar difusión.
  • Si el destino puede ser único o múltiple, pero acotado: preferir enrutamiento.
  • Si el mensaje es público y amplio: preferir difusión.

¿Cómo opera Twitter con enrutamiento y difusión?

En Twitter conviven ambos patrones para distintas funcionalidades. Esto permite entregar relevancia a quien corresponde y, a la vez, mantener escuchas abiertas sobre eventos públicos.

  • Seguidores y timelines con enrutamiento: cuando un usuario publica, un enrutador decide a qué base de datos Redis llegará ese mensaje. Cada base de datos actúa como un componente que representa la timeline relevante para una persona o grupo.
  • Mensajes públicos con difusión: cada mensaje público se difunde. Varios componentes que escuchan todos los mensajes públicos aplican su propia inteligencia para determinar si ese mensaje es importante para ellos o no.

En síntesis, Twitter ilustra el contraste: o el conector comprende y dirige el mensaje a donde corresponde, o los componentes lo reciben todo y deciden qué conservar.

¿Qué habilidades y decisiones clave aplicas al diseñar estos conectores?

Diseñar bien implica leer el flujo de información y decidir el punto óptimo de selección.

  • Distinguir si la selección la hace el conector o el componente.
  • Definir si el destino es único o múltiple según el interés real del receptor.
  • Representar una timeline como componente que almacena lo relevante para un usuario.
  • Usar difusión cuando múltiples componentes deben escuchar todo lo público.
  • Usar enrutamiento cuando se necesita entregar solo a los interesados.

¿Tienes un caso donde dudes entre enrutamiento o difusión? Cuéntalo en los comentarios y conversemos cómo decidir la mejor estrategia.