¿Qué es Pub/Sub?

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

Pub/Sub se usa para estadísticas de transmisión y canalizaciones de integración de datos con el 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 para paralelizar las tareas.

Pub/Sub te permite crear sistemas de consumidores y productores de eventos, llamados publicadores y suscriptores. Los editores se comunican con los suscriptores de manera asíncrona mediante eventos de emisión, en lugar de mediante llamadas de procedimiento remoto (RPC) síncronos.

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 a ellos. En comparación con los sistemas que se comunican a través de RPC, donde los publicadores deben esperar a que los suscriptores reciban los datos, esta integración asíncrona aumenta la flexibilidad y solidez del sistema en general.

Si deseas comenzar a usar Pub/Sub, consulta la Guía de inicio rápido para usar 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 los eventos del servidor Para usar eventos de interacción del usuario desde las apps de usuario final o eventos del servidor de tu sistema, puedes reenviarlos a Pub/Sub y, luego, usar un 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 de tu equipo y organización a fin de su procesamiento en tiempo real. Esto admite un “autobús de evento empresarial” y patrones de diseño 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. Por lo general, Pub/Sub se usa para distribuir eventos de cambio de bases de datos. Estos eventos se pueden usar para construir una vista del estado de la base de datos y el historial de estados en BigQuery y otros sistemas de almacenamiento de datos.
  • Procesamiento paralelo y flujos de trabajo. 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 mensajes de Pub/Sub para conectarte. Cloud Functions
  • Autobús de evento empresarial. 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 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 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 de Pub/Sub: Esta debería ser la opción predeterminada para la mayoría de los usuarios y las aplicaciones. Ofrece el mayor conjunto de integraciones y la mayor confiabilidad, junto con la administración automática de capacidad.

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

Considera Pub/Sub Lite solo para aplicaciones en las que lograr un costo muy bajo justifique un trabajo operativo adicional y reduzca la disponibilidad.

Para obtener más detalles, 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 Pulsar con funciones que se encuentran en el middleware de mensajería tradicional, como Apache ActiveMQ y RabbitMQ, como los mensajes no entregados. colas y filtros.

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

Por el contrario, otros sistemas de mensajería escalable 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 el suscriptor.

Comunicación entre servicios frente a servicio y servicio a cliente

Pub/Sub está dirigido a la comunicación de servicio a servicio en lugar de la comunicación con clientes de usuario final o 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 transmisiones: Compatible conDataflow, incluido Dataflowplantillas ySQL, 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 se ofrece 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 puede lograrse con Datafusion.
  • Supervisión, alertas y registro: Son compatibles 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 la IAM detallada, lo que permite el control de acceso para los recursos individuales.
  • API: Pub/Sub usa tecnologías estándar de API de servicio de gRPC y REST junto con bibliotecas cliente para varios lenguajes.
  • Activadores, notificaciones y webhooks: Pub/Sub ofrece la entrega basada en envíos de mensajes como solicitudes HTTP POST a los webhooks. Esto te permite implementar con facilidad la automatización de flujos de trabajo mediante Cloud Functions o algún 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 de macrodatos y estadísticas suele realizarse 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 solo tema específico, que se entregarán a la aplicación de suscripción. Para obtener más detalles sobre las semánticas de entrega de mensajes y 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, finalmente, se entrega a los suscriptores
  • Atributo de mensaje: Es un par clave-valor que un publicador puede definir para un mensaje. Por ejemplo, la clave iana.org/language_tag y el valor en podrían agregarse a los mensajes para marcarlos como legibles por un suscriptor angloparlante.
  • Publicador: Es una aplicación que crea y envía mensajes a un tema o varios.
  • Suscriptor: Se trata de una app con suscripción a uno o más temas para recibir mensajes de este.
  • Confirmación (o “ack”): Una señal enviada por 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 mensajes, ya sea porque Pub/Sub los envía al extremo elegido por el suscriptor o 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, el ack está implícito 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