¿Qué es Pub/Sub?

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

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

Pub/Sub se usa para las analíticas en tiempo real y los flujos de procesamiento de integración de datos para cargar y distribuir datos. Es igual de eficaz como middleware orientado a la mensajería para la integración de servicios o como cola para paralelizar tareas.

Pub/Sub te permite crear sistemas de productores y consumidores de eventos, llamados editores y suscriptores. Los editores se comunican con los suscriptores de forma asíncrona emitiendo eventos, en lugar de mediante llamadas a procedimientos remotos (RPC) síncronas.

Los editores envían eventos al servicio Pub/Sub, independientemente de cómo o cuándo se procesen estos eventos. Después, Pub/Sub envía los eventos a todos los servicios que reaccionan a ellos. En los sistemas que se comunican mediante RPCs, los editores deben esperar a que los suscriptores reciban los datos. Sin embargo, la integración asíncrona de Pub/Sub aumenta la flexibilidad y la solidez del sistema en general.

Para empezar a usar Pub/Sub, consulta la guía de inicio rápido para usar la consola. Google Cloud Para obtener una introducción más completa, consulta el artículo Crear un sistema de mensajería Pub/Sub.

Casos prácticos habituales

  • Ingerir eventos de interacción de usuario y de servidor. Para usar eventos de interacción de usuario de aplicaciones de usuario final o eventos de servidor de su sistema, puede reenviarlos a Pub/Sub. Después, puede usar una herramienta de procesamiento de flujos, como Dataflow, que envía los eventos a las bases de datos. Algunos ejemplos de estas bases de datos son BigQuery, Bigtable y Cloud Storage. Pub/Sub te permite recoger eventos de muchos clientes simultáneamente.
  • Distribución de eventos en tiempo real. Los eventos, tanto brutos como procesados, pueden ponerse a disposición de varias aplicaciones de tu equipo y organización para que se procesen en tiempo real. Pub/Sub admite un "bus de eventos empresarial" y patrones de diseño de aplicaciones basados en eventos. Pub/Sub te permite integrar muchos sistemas que exportan eventos a Pub/Sub.
  • Replicar datos entre bases de datos. Pub/Sub se suele usar para distribuir eventos de cambio de bases de datos. Estos eventos se pueden usar para crear 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 forma eficiente entre varios trabajadores mediante 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 cambiar el formato de las imágenes.
  • Bus de eventos de empresa. Puedes crear un bus de datos en tiempo real para toda la empresa que distribuya eventos empresariales, actualizaciones de bases de datos y eventos de analíticas en toda tu organización.
  • Datos de streaming procedentes de aplicaciones, servicios o dispositivos 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 Google Cloud a través de un flujo de procesamiento de datos.
  • Actualizar las cachés distribuidas. Por ejemplo, una aplicación puede publicar eventos de invalidación para actualizar los IDs de los objetos que han cambiado.
  • Balanceo de carga para mejorar la fiabilidad. Por ejemplo, las instancias de un servicio se pueden desplegar en Compute Engine en varias zonas, pero suscribirse a un tema común. Si el servicio falla en alguna zona, las demás pueden asumir la carga automáticamente.

Comparación de Pub/Sub con otras tecnologías de mensajería

Pub/Sub combina la escalabilidad horizontal de Apache Kafka y Pulsar con las 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 fallidos 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 clientes suscriptores y, a continuación, registra si un mensaje determinado se ha procesado correctamente.

Por el contrario, otros sistemas de mensajería escalables horizontalmente usan particiones para el escalado horizontal. De esta forma, los suscriptores se ven obligados a procesar los mensajes de cada partición en orden y se limita el número de clientes simultáneos al número de particiones. El procesamiento por mensaje maximiza el paralelismo de las aplicaciones de suscriptor y ayuda a garantizar la independencia de los editores y los suscriptores.

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

Pub/Sub está diseñado para la comunicación entre servicios, no para la comunicación con clientes de usuarios finales o del Internet de las cosas. Otros productos admiten mejor otros patrones:

Puedes usar una combinación de estos servicios para crear patrones de cliente -> servicios -> base de datos. Por ejemplo, consulta el tutorial Enviar mensajes de Pub/Sub en streaming a través de WebSockets.

Integraciones

Pub/Sub se integra con muchos otros Google Cloud productos para crear un sistema de mensajería completo:

  • Procesamiento de datos en tiempo real e integración de datos. Dataflow, incluidas las plantillas y SQL de Dataflow, que permiten procesar e integrar datos en BigQuery y en lagos de datos de Cloud Storage. Las plantillas de Dataflow para mover datos de Pub/Sub a Cloud Storage, BigQuery y otros productos están disponibles en las interfaces de usuario de Pub/Sub y Dataflow de laGoogle Cloud consola. También se ofrece integración con Apache Spark, sobre todo cuando se gestiona con Dataproc. Puedes crear visualmente flujos de procesamiento de integración y procesamiento que se ejecuten en Spark y Dataproc con Data Fusion.
  • Monitorización, alertas y almacenamiento de registros. Compatible con los productos Monitoring y Logging.
  • Autenticación y gestión de identidades y accesos Pub/Sub se basa en la autenticación OAuth estándar que utilizan otros Google Cloud productos y admite la gestión de identidades y accesos granular, lo que permite controlar el acceso a recursos concretos.
  • APIs. Pub/Sub usa las tecnologías de API de servicio REST y gRPC estándar, así como bibliotecas de cliente para varios lenguajes.
  • Activadores, notificaciones y webhooks. Pub/Sub ofrece la entrega de mensajes basada en inserción como solicitudes HTTP POST a webhooks. Puedes implementar la automatización de flujos de trabajo con Cloud Functions u otros productos sin servidor.
  • Orquestación. Pub/Sub se puede integrar en Workflows sin servidor de varios pasos de forma declarativa. La orquestación de analíticas y Big Data se suele hacer con Cloud Composer, que admite activadores de Pub/Sub. También puedes integrar Pub/Sub con Application Integration (vista previa), 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(vista previa) Estos conectores te permiten conectarte a varias fuentes de datos. Con los conectores, tanto los servicios de Google Cloud como las aplicaciones empresariales de terceros se exponen a tus integraciones a través de una interfaz transparente y estándar. En Pub/Sub, puedes crear una conexión de Pub/Sub para usarla en tus integraciones.

Pasos siguientes