¿Qué es Pub/Sub?

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

Pub/Sub se usa para las canalizaciones de integración de datos y estadísticas de transmisión a fin de transferir 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 importar cómo o cuándo se procesarán estos eventos. Luego, Pub/Sub entrega eventos a todos los servicios que necesitan reaccionar ante ellos. En comparación con los sistemas que se comunican a través de RPC, los publicadores deben esperar a que los suscriptores reciban los datos, esa integración asíncrona aumenta la flexibilidad y solidez del sistema en general.

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

Casos de uso habituales

  • Transferencia de la interacción del usuario y eventos del servidor: Para usar los eventos de interacción del usuario desde las aplicaciones del usuario final o los eventos del servidor de tu sistema, puedes reenviarlos a Pub/Sub y, luego, usar los siguientes elementos: herramienta de procesamiento de transmisión (como Dataflow), que los entrega a BigQuery, Bigtable, Cloud Storage y otras 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 en tu equipo y organización para su procesamiento en tiempo real. Esto admite un “bus de eventos empresarial” y patrones de diseño de aplicaciones controlados por eventos. Pub/Sub te permite la integración con muchos sistemas de Google que exportan eventos a Pub/Sub.
  • Replicar datos entre bases de datos: Por lo general, Pub/Sub se usa para distribuir eventos de cambios desde bases de datos. Estos eventos se pueden usar para crear una vista del estado de la base de datos y el historial de estados en BigQuery y otros sistemas de almacenamiento de datos.
  • Procesamiento y flujos de trabajo paralelos: Puedes distribuir de manera eficiente una gran cantidad de tareas entre varios trabajadores, como comprimir archivos de texto, enviar notificaciones por correo electrónico, evaluar modelos de IA o cambiar el formato de las imágenes, mediante el uso de mensajes de Pub/Sub para conectarte con Cloud Functions.
  • Bus de eventos empresariales: Puedes crear un bus para compartir datos en tiempo real en toda la empresa, que distribuya eventos empresariales, actualizaciones de bases de datos y eventos estadísticos en toda tu organización.
  • Transmisión de datos desde dispositivos de IoT: Por ejemplo, un sensor residencial puede transmitir datos a servidores de backend alojados en la nube.
  • Actualización de cachés distribuidas. Por ejemplo, una aplicación puede publicar eventos de invalidación para actualizar los ID 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 demás pueden detectar la carga de forma automática.

Pub/Sub o Pub/Sub Lite

Pub/Sub consta de dos servicios:

  • Servicio de Pub/Sub: Esta debería ser la opción predeterminada para la mayoría de los usuarios y las aplicaciones. Ofrece la mayor confiabilidad y el mayor conjunto de integraciones, junto con la administración automática de la capacidad.

  • Servicio de mensajería de Pub/Sub Lite: Un servicio de mensajería independiente, pero similar, compilado a bajo costo. Ofrece almacenamiento zonal y requiere que aprovisiones y administres previamente el almacenamiento y la capacidad de procesamiento.

Considera Pub/Sub Lite solo para aplicaciones en las que lograr un costo muy bajo justifica un trabajo operativo adicional y una disponibilidad menor.

Para obtener más información, consulta Elige Pub/Sub o Pub/Sub Lite. Para probar Pub/Sub Lite, consulta Comienza a usar Pub/Sub Lite.

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

Pub/Sub combina la escalabilidad horizontal de Apache Kafka y Pulso con funciones que se encuentran en el middleware de mensajería tradicional, como Apache ActiveMQ y RabbitMQ, como colas y filtros de mensajes no entregados.

Otra característica que Pub/Sub adopta en el middleware de mensajería es el paralelismo por mensaje (en lugar de basado en particiones). Pub/Sub “asigna tiempo” a mensajes individuales a clientes suscriptores y, luego, realiza un seguimiento de si un mensaje determinado se procesó de forma correcta.

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 suscriptores y ayuda a garantizar la independencia del publicador y del suscriptor.

Comunicación de servicio a servicio comparado a servicio a cliente

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:

  • Integración de datos y procesamiento de transmisión: compatible con Dataflow, incluidas las plantillas y SQL de Dataflow, que permiten el procesamiento y la Integración de datos en BigQuery y 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 Cloud Console. La integración con Apache Spark, en especial cuando se administra con Dataproc, también está disponible. La composición visual de las canalizaciones de integración y procesamiento que se ejecutan en Spark + Dataproc se puede lograr con Datafusion.
  • Supervisión, alertas y registro:son compatibles con los productos de Supervisión y Registro.
  • 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 permite el control de acceso para los recursos individuales.
  • API: Pub/Sub usa tecnologías estándar de API de servicios de gRPC y REST junto con bibliotecas cliente para varios lenguajes.
  • Activadores, notificaciones y webhooks: Pub/Sub ofrece entrega de mensajes basada en envíos como solicitudes POST HTTP a webhooks. Esto te permite implementar con facilidad la automatización de flujos de trabajo mediante Cloud Functions o cualquier otro producto sin servidores.
  • Organización: Pub/Sub se puede integrar en los flujos de trabajo sin servidores de varios pasos de forma declarativa. La organización analítica y de macrodatos a menudo se realiza con Cloud Composer, que admite activadores de Pub/Sub.

Conceptos básicos

  • Tema: Un recurso con nombre al que los publicadores envían mensajes
  • Suscripción: Un recurso con nombre que representa la transmisión de mensajes de un único tema específico que se deben entregar a la aplicación suscripta. Para obtener más detalles sobre la semántica de entrega de mensajes y las suscripciones, consulta la guía para suscriptores
  • Mensaje: La combinación de datos y atributos (opcionales) que un publicador envía a un tema y se entrega por último a los suscriptores
  • Atributo de mensaje: Un par clave-valor que un publicador puede definir para un mensaje. Por ejemplo, la clave iana.org/language_tag y el valor en se podrían agregar a los mensajes para indicar que un suscriptor de habla inglesa puede leerlo
  • Publicador: Una aplicación que crea y envía mensajes a un tema.
  • Suscriptor: Una aplicación con una suscripción a un tema para recibir mensajes de este.
  • Confirmación: Una señal enviada por un suscriptor a Pub/Sub después de recibir un mensaje con éxito. Los mensajes confirmados se quitan de la cola de mensajes de la suscripción.
  • Envío y extracción: Los dos métodos de entrega de mensajes. Un suscriptor recibe mensajes, ya sea porque Pub/Sub los envía hacia el extremo que el suscriptor eligió, o porque el suscriptor los extrae del servicio.

Las relaciones entre el publicador y el suscriptor pueden ser de uno a varios (fan-out), de varios a uno (fan-in) y de varios a varios, como se muestra en el siguiente diagrama:

Relaciones entre el publicador y el suscriptor

En el siguiente diagrama, se ilustra cómo un mensaje pasa de un publicador a un suscriptor. Ten en cuenta que, para la entrega de envío, la confirmación está implícita en la respuesta a la solicitud de envío, mientras que, para la entrega de extracción, se requiere una RPC independiente.

Ciclo de vida de los mensajes

Próximos pasos