¿Qué es Pub/Sub?

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

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

Pub/Sub se usa para canalizaciones de integración de datos y análisis de transmisiones con el objetivo de cargar y distribuir datos. Es igual de efectivo que el middleware orientado a la mensajería para la integración de servicios o como una cola con el fin de paralelizar las 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 Crea un sistema de mensajería de Pub/Sub.

Casos de uso habituales

  • Transferir eventos de servidor y de interacción del usuario Para usar los eventos de interacción del usuario de las apps de usuario final o los eventos del servidor de tu sistema, puedes reenviarlos a Pub/Sub. Luego, puedes usar una herramienta de procesamiento de transmisión, como Dataflow, que entrega los eventos a las bases de datos. Algunos ejemplos de estas bases de datos son BigQuery, Bigtable y Cloud Storage. 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 en tu equipo y organización para el procesamiento en tiempo real. Pub/Sub admite un "bus de eventos empresarial" y patrones de diseño de aplicaciones basadas en eventos. Pub/Sub te permite integrarte con muchos sistemas que exportan eventos a Pub/Sub.
  • Replicar datos entre bases de datos: Pub/Sub se usa de uso frecuente para distribuir eventos de cambio desde bases de datos. Estos eventos se pueden usar para construir una vista del estado de la base de datos y del historial de estados en BigQuery y otros sistemas de almacenamiento de datos.
  • Procesamiento y flujos de trabajo paralelos: Puedes distribuir muchas tareas de manera eficiente entre varios trabajadores con mensajes de Pub/Sub para comunicarte con ellos. Algunos ejemplos de estas tareas son comprimir archivos de texto, enviar notificaciones por correo electrónico, evaluar modelos de IA y volver a formatear imágenes.
  • Bus de eventos empresariales: Puedes crear un bus de uso compartido de datos en tiempo real para toda la empresa, distribuir eventos empresariales, actualizaciones de bases de datos y eventos de estadísticas en toda tu organización.
  • Transmisión de datos desde aplicaciones, servicios o dispositivos de IoT Por ejemplo, una aplicación de 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 se pueden implementar en Compute Engine en varias zonas, pero se suscriben a un tema común. Cuando el servicio falla en cualquier zona, las otras pueden asumir 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 función 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 los clientes suscriptores y, luego, hace un seguimiento para saber si un mensaje determinado se procesó 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.

Comparar la comunicación entre servicios y entre servicios y clientes

Pub/Sub está diseñado para la comunicación de servicio a servicio en lugar de la comunicación con los usuarios finales o los clientes de IoT. Otros patrones son más compatibles con otros productos:

Puedes usar una combinación de estos servicios para compilar patrones de cliente -> servicios -> base de datos. Por ejemplo, consulta el instructivo Transmite mensajes de Pub/Sub a través de WebSockets.

Integraciones

Pub/Sub tiene muchas integraciones con otros productos de Google Cloud para crear un sistema de mensajería con todas las funciones:

  • Procesamiento de transmisión y de integración de datos Es compatible con Dataflow, incluidas las plantillas y SQL de Dataflow, que permiten el procesamiento y la integración de datos en BigQuery y los data lakes en Cloud Storage. Las plantillas de Dataflow para mover datos de Pub/Sub a Cloud Storage, BigQuery y otros productos están disponibles en las IU de Pub/Sub y Dataflow en la consola deGoogle Cloud . También está disponible la integración en Apache Spark, en especial cuando se administra con Managed Service para Apache Spark. La composición visual de las canalizaciones de integración y procesamiento que se ejecutan en Spark y Managed Service para Apache Spark se puede lograr con Data Fusion.
  • Supervisión, alertas y registros. Compatible con los productos de Monitoring y Logging.
  • Autenticación e IAM Pub/Sub se basa en una autenticación de OAuth estándar que usan otros productos de Google Cloud y admite IAM detallada, lo que habilita el control de acceso para recursos individuales.
  • APIs Pub/Sub usa tecnologías de API de servicio de gRPC y REST estándar junto con bibliotecas cliente para varios lenguajes.
  • Activadores, notificaciones y webhooks. Pub/Sub ofrece la entrega de mensajes basada en envíos como solicitudes POST de HTTP a webhooks. Puedes implementar la automatización de flujos de trabajo con Cloud Functions u otros productos sin servidores.
  • Organización Pub/Sub se puede integrar en Workflows sin servidores de varios pasos de forma declarativa. La organización de macrodatos y análisis suele realizarse con Managed Airflow, que admite activadores de Pub/Sub. También puedes integrar Pub/Sub en Application Integration, que es una solución de plataforma de integración como servicio (iPaaS). Application Integration proporciona un activador de Pub/Sub para activar o iniciar integraciones.
  • Integration Connectors Estos conectores te permiten conectarte a varias fuentes de datos. Con los conectores, los servicios de Google Cloud y las aplicaciones empresariales de terceros están expuestos a tus integraciones a través de una interfaz estándar y transparente. En el caso de Pub/Sub, puedes crear un conector de Pub/Sub para usarlo en tus integraciones.

Próximos pasos