¿Qué es Pub/Sub?

Pub/Sub es un servicio de mensajería asíncrono y escalable que separa los 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 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 igualmente eficaz como un middleware orientado a la mensajería para la integración del servicio o como una cola a fin de 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 importar 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 la solidez del sistema general.

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

Casos de uso habituales

  • Interacción del usuario de transferencia y eventos del servidor. Para usar eventos de interacción del usuario de apps de usuario final o 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, Cloud Bigtable y Cloud Storage. Pub/Sub te permite recopilar eventos de muchos clientes a la vez.

  • 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 a fin de realizar un procesamiento en tiempo real. Pub/Sub admite un “autobús de eventos empresariales” y patrones de diseño de aplicaciones basados en eventos. Pub/Sub te permite integrar en muchos sistemas de Google que exportan eventos a Pub/Sub.

  • Replicar datos entre bases de datos: Pub/Sub se suele usar para distribuir eventos de cambios desde bases de datos. Estos eventos se pueden usar para construir 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 de manera eficiente muchas tareas entre varios trabajadores mediante mensajes de Pub/Sub para conectarte a Cloud Functions. Algunos ejemplos de esas 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 y distribuir eventos comerciales, actualizaciones de bases de datos y eventos de estadísticas en toda la organización.

  • Transmisión de datos de aplicaciones, servicios o dispositivos de 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 Dataflow.

  • 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 suscribirse a un tema común. Cuando el servicio falla en cualquier zona, los demás pueden recoger la carga de forma automática.

Tipos de servicios de Pub/Sub

Pub/Sub consta de dos servicios:

  • Servicio de Pub/Sub: Este servicio de mensajería es la opción predeterminada para la mayoría de los usuarios y aplicaciones. Ofrece la mayor confiabilidad y el mayor conjunto de integraciones, junto con la administración automática de la capacidad. Pub/Sub garantiza la replicación síncrona de todos los datos a, al menos, dos zonas y el mejor esfuerzo a una tercera zona adicional.

  • Servicio Pub/Sub Lite. Un servicio de mensajería independiente, pero similar, creado para un costo menor. Ofrece menor confiabilidad en comparación con Pub/Sub. Ofrece almacenamiento de temas zonal o regional. Los temas Lite zonales se almacenan en una sola zona. Los temas de Lite regionales se replican en una segunda zona de manera asíncrona. Además, Pub/Sub Lite requiere que aprovisiones y administres la capacidad de almacenamiento y capacidad de procesamiento. Considera usar Pub/Sub Lite solo para aplicaciones en las que lograr un costo bajo justifica trabajo operativo adicional y reduce la confiabilidad.

Para obtener más detalles sobre las diferencias entre Pub/Sub y Pub/Sub Lite, consulta Elige Pub/Sub o Pub/Sub Lite.

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

Pub/Sub combina la escalabilidad horizontal de Apache Kafka y Pulsar con las características que se encuentran en el middleware de mensajería tradicional, 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 desde el middleware de mensajería es el paralelismo por mensaje, en lugar de la mensajería basada en particiones. Pub/Sub "asigna" mensajes individuales a los clientes suscriptores y, luego, realiza un seguimiento de si un mensaje determinado se procesa 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 suscriptor y ayuda a garantizar la independencia del publicador y del suscriptor.

Compare la comunicación de servicio a servicio y de 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:

  • Procesamiento de transmisión e integración de datos. 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 Google 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 y Dataproc se puede lograr con Data Fusion.
  • Monitoring, alertas y registros. Es compatible con los productos de Monitoring y Logging.
  • Autenticación y 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 a los recursos individuales.
  • API. Pub/Sub usa tecnologías de API de servicio de gRPC y REST junto con bibliotecas cliente para varios lenguajes.
  • Activadores, notificaciones y webhooks. Pub/Sub ofrece la entrega de mensajes basada en envíos como solicitudes HTTP POST a los webhooks. Puedes implementar la automatización de flujos de trabajo con Cloud Functions o con otros productos sin servidores.
  • Organización. Pub/Sub se puede integrar en flujos de trabajo de varios pasos sin servidores.Workflowsde forma declarativa. Los macrodatos y la organización de estadísticas a menudo se realizan con Cloud Composer, que admite activadores de Pub/Sub. También puedes integrar Pub/Sub a una integración de aplicaciones (vista previa), que es una solución de integración de plataforma como servicio (iPaaS). Application Integration proporciona un activador de Pub/Sub para activar o iniciar integraciones.
  • Conectores de integración.(Vista previa) Estos conectores te permiten conectarte a varias fuentes de datos. Con los conectores, los servicios de Google Cloud y las aplicaciones empresariales de terceros se exponen a tus integraciones a través de una interfaz estándar y transparente. Para Pub/Sub, puedes crear una conexión de Pub/Sub a fin de usarla en tus integraciones.

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 solo tema específico, que se entregarán a la aplicación de suscripción. 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 (opcional) que un publicador envía a un tema y que, finalmente, se entrega 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
  • Editor. Una aplicación que crea y envía mensajes a uno o varios temas.
  • Suscriptor: Una aplicación con una suscripción a uno o varios temas para recibir mensajes de ella.
  • Agradecimiento (o “ack”). Una señal que envía un suscriptor a Pub/Sub después de haber recibido un mensaje correctamente 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 los mensajes mediante la envío de Pub/Sub al extremo elegido por el suscriptor o el suscriptor del suscriptor que los envía desde el 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. Para la entrega de envío, el reconocimiento está implícito en la respuesta a la solicitud de envío, mientras que para la entrega de extracción requiere una RPC separada.

Ciclo de vida de los mensajes

Próximos pasos