¿Qué es Pub/Sub?

Pub/Sub permite que los servicios se comuniquen de manera asíncrona, con latencias en el orden de 100 milisegundos.

Pub/Sub se usa para la canalización de transmisión y las estadísticas de transmisión a fin de transferir y distribuir datos. También es igualmente eficaz como middleware orientado a mensajes para la integración del servicio o como una cola para paralelizar las tareas.

Pub/Sub te permite crear sistemas de productores y consumidores de eventos, denominados editores 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 síncrono (RPC).

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

Para comenzar con Pub/Sub, consulta la guía de inicio rápido con Cloud Console. Para obtener una introducción más completa, consulta la página sobre cómo compilar un sistema de mensajería de Pub/Sub.

Casos de uso habituales

  • Interacción del usuario con transferencia y eventos de servidor: Para usar eventos de interacción con el usuario desde apps de usuario final o eventos de servidor desde tu sistema, puedes reenviarlos a Pub/Sub y, luego, usar una herramienta de procesamiento de transmisión, como Dataflow, que las 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 tu organización a fin de procesarlos en tiempo real. Esto admite un "bus de eventos empresariales" y patrones de diseño de aplicaciones basados en eventos. Pub/Sub y te permite integrarte en varios sistemas de Google que exportan eventos a Pub/Sub.
  • Replicar datos entre bases de datos. Pub/Sub suele usarse para distribuir eventos de cambio de las 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 volver a formatear imágenes, usando mensajes de Pub/Sub para conectarte Cloud Functions.
  • Bucle de eventos empresariales. Puedes crear un bus de uso compartido de datos en tiempo real de toda la empresa y distribuir eventos empresariales, actualizaciones de bases de datos y eventos de estadísticas en toda tu organización.
  • Transmisión de datos desde dispositivos 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 pueden implementarse en Compute Engine en varias zonas, pero suscribirse a un tema común. Cuando el servicio falla en cualquier zona, las otras pueden recoger la carga de forma automática.

Pub/Sub o Pub/Sub Lite

Pub/Sub consta de dos servicios:

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

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

Considera usar Pub/Sub Lite solo para las aplicaciones en las que se logre un costo operativo extremadamente bajo y, en efecto, disminuya la disponibilidad de algunos trabajos operativos y de menor disponibilidad.

Para obtener más detalles, consulta Elige Pub/Sub o Pub/Sub Lite. Para probar Pub/Sub Lite, consulta Cómo comenzar 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 Pulsar con características que se encuentran en el middleware de mensajería tradicional, como Apache ActiveMQ y RabbitMQ, como el de mensajes no enviados. colas y filtrado.

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

En cambio, otros sistemas de mensajería escalables a gran escala usan particiones para el escalamiento horizontal. Esto obliga a los suscriptores a procesar mensajes en cada partición en orden y limita el número 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 de publicador/suscriptor.

Comunicación entre servicios frente a servicio

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

Puedes usar una combinación de estos servicios para crear un cliente -> servicios -> Patrones de 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 integración de datos: Admitido porDataflow, incluido Dataflowplantillas comoSQL, 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. También está disponible la integración con Apache Spark, especialmente cuando se administra con Dataproc. La composición visual de las canalizaciones de integración y procesamiento que se ejecutan en Spark + Dataproc se puede realizar con Datafusion.
  • Monitoring, alertas y registro: son compatibles con los productos de Monitoring y Logging.
  • Autenticación y IAM: Pub/Sub se basa en una autenticación estándar de OAuth que utilizan otros productos de Google Cloud y admite una IAM detallada, lo que permite controlar el acceso de los recursos individuales.
  • API: Pub/Sub usa tecnologías estándar de la API de servicio de gRPC y REST junto con bibliotecas cliente para varios lenguajes.
  • Activadores y notificaciones: Pub/Sub ofrece entrega de mensajes basada en envíos como solicitudes HTTP POST a webhooks. Esto te permite implementar con facilidad 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 sin servidores de varios pasosFlujos de trabajo declarativa. La organización de macrodatos y análisis suele llevar a cabo 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 las suscripciones y la semántica de entrega de mensajes, consulta la guía del suscriptor.
  • 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 él
  • Confirmación (o “ack”): Una señal que envía un suscriptor a Pub/Sub después de recibir un mensaje de forma correcta. Los mensajes ocultos 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 muestra cómo pasa un mensaje desde un publicador a un suscriptor. Ten en cuenta que, para la entrega de envío, la confirmación es 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