¿Qué es Pub/Sub?

Pub/Sub es un servicio de mensajería escalable y asíncrono que separa los servicios que producen mensajes de los que los procesan.

Pub/Sub permite que los servicios se comuniquen de forma asíncrona, con latencias de alrededor de 100 milisegundos.

Pub/Sub se usa para el análisis de transmisiones y las canalizaciones de integración de datos a fin de cargar y distribuir datos. Es igual de eficaz como un middleware orientado a la mensajería para la integración de servicios o como una cola para paralelizar tareas.

Pub/Sub te permite crear sistemas de productores y consumidores de eventos, llamados publicadores y suscriptores. Los publicadores se comunican con los suscriptores de forma asíncrona mediante la transmisión de eventos, en lugar de llamadas de procedimiento remoto (RPC) síncronas.

Los publicadores envían eventos al servicio de Pub/Sub sin tener en cuenta cómo o cuándo se deben procesar. Luego, Pub/Sub entrega eventos a todos los servicios que reaccionan a ellos. En los sistemas que se comunican a través de RPC, los publicadores deben esperar a que los suscriptores reciban los datos. Sin embargo, la integración asíncrona en Pub/Sub aumenta la flexibilidad y solidez del sistema general.

Para comenzar a usar Pub/Sub, consulta la Guía de inicio rápido para usar la consola de Google Cloud. Para obtener una introducción más completa, consulta Compila un sistema de mensajería de Pub/Sub.

Casos de uso habituales

  • Transferencia del usuario y eventos del servidor. Para usar eventos de interacción del usuario de apps del usuario final o eventos del servidor de tu sistema, puedes reenviarlos a Pub/Sub. Luego, puedes usar una herramienta de procesamiento de transmisión para entregar los eventos a las bases de datos. Pub/Sub te permite recopilar eventos de muchos clientes de forma simultánea.
  • Distribución de eventos en tiempo real. Los eventos, sin procesar o procesados, pueden estar disponibles para varias aplicaciones del equipo y la organización para su procesamiento en tiempo real. Pub/Sub admite un “bus de eventos empresariales” y patrones de diseño de aplicaciones controlados por eventos. Pub/Sub te permite realizar integraciones en muchos sistemas que exportan eventos a Pub/Sub.
  • Replicar datos entre bases de datos: Por lo general, Pub/Sub se usa para distribuir eventos de cambio desde las bases de datos. Estos eventos se pueden usar para crear una vista del estado de la base de datos y el historial de estado en BigQuery y otros sistemas de almacenamiento de datos.
  • Procesamiento y flujos de trabajo paralelos: Puedes distribuir muchas tareas entre varios trabajadores de manera eficiente mediante mensajes de Pub/Sub para comunicarte con los trabajadores. Algunos ejemplos de estas tareas son comprimir archivos de texto, enviar notificaciones por correo electrónico, evaluar modelos de IA y reformatear imágenes.
  • Bus de eventos empresariales: Puedes crear un autobús de uso compartido de datos en tiempo real para toda la empresa y distribuir eventos empresariales, actualizaciones de bases de datos y eventos de estadísticas en toda la organización.
  • Transmisión de datos desde aplicaciones, servicios o dispositivos de la IoT. Por ejemplo, una aplicación SaaS puede publicar un feed de eventos en tiempo real. O bien, un sensor residencial puede transmitir datos a Pub/Sub para usarlos en otros productos de Google Cloud a través de una canalización de procesamiento de datos.
  • Actualización de cachés distribuidas. Por ejemplo, una aplicación puede publicar eventos de invalidación para actualizar los IDs de los objetos que cambiaron.
  • Balanceo de cargas para la confiabilidad: Por ejemplo, las instancias de un servicio pueden implementarse en Compute Engine en varias zonas, pero suscribirse a un tema común. Cuando el servicio falla en cualquier zona, los otros pueden recoger la carga automáticamente.

Compara Pub/Sub con otras tecnologías de mensajería

Pub/Sub combina la escalabilidad horizontal de Apache Kafka y Pulsar con funciones que se encuentran en el middleware de mensajería, como Apache ActiveMQ y RabbitMQ. Algunos ejemplos de estas funciones son las colas de mensajes no entregados y el filtrado.

Otra característica que Pub/Sub adopta del middleware de mensajería es el paralelismo por mensaje, en lugar de la mensajería basada en particiones. Pub/Sub “arrienda” mensajes individuales a clientes suscriptores y, luego, hace un seguimiento para saber si un mensaje dado se procesa correctamente.

Por el contrario, otros sistemas de mensajería escalables de forma horizontal usan particiones para el escalamiento horizontal. Esto obliga a los suscriptores a procesar mensajes en cada partición en orden y limita la cantidad de clientes simultáneos a la cantidad de particiones. El procesamiento por mensaje maximiza el paralelismo de las aplicaciones de suscriptor y ayuda a garantizar la independencia del publicador y del suscriptor.

Próximos pasos