En este documento, se te ayudará a elegir el tipo de suscripción a Pub/Sub adecuado para los requisitos de tu empresa.
Pub/Sub ofrece los siguientes tipos de suscripciones:
Las suscripciones de extracción usan un cliente suscriptor para solicitar mensajes del servidor de Pub/Sub.
Las suscripciones de envío usan el servidor de Pub/Sub para iniciar solicitudes a tu aplicación de suscriptor y entregar mensajes.
Export subscriptions exportan tus mensajes directamente a un recurso Google Cloud. Estas suscripciones incluyen lo siguiente:
Las suscripciones a BigQuery exportan datos a una tabla de BigQuery.
Las suscripciones a Cloud Storage exportan datos a un bucket de Cloud Storage.
Tabla comparativa de suscripciones a Pub/Sub
La siguiente tabla ofrece algunas sugerencias con el fin de elegir el mecanismo de entrega adecuado para tu aplicación:
| Funciones compatibles con las suscripciones de Pub/Sub | ||
|---|---|---|
| Caso de uso | Suscripción de extracción |
|
| Suscripción de envío |
|
|
| Exportar suscripción |
|
|
| Extremos | Suscripción de extracción | Cualquier dispositivo conectado a Internet que tenga credenciales autorizadas puede llamar a la API de Pub/Sub. |
| Suscripción de envío |
Un servidor HTTPS con certificado no autofirmado accesible en la Web pública El extremo receptor puede estar desvinculado de la suscripción de Pub/Sub, de modo que los mensajes de varias suscripciones se envíen a un solo extremo. |
|
| Exportar suscripción | La suscripción escribe en un recurso Google Cloud , como una tabla de BigQuery o un bucket de Cloud Storage. | |
| Balanceo de cargas | Suscripción de extracción | Varios suscriptores pueden realizar llamadas de extracción a la misma suscripción. Cada suscriptor recibe un subconjunto de mensajes. |
| Suscripción de envío |
Los extremos de envío pueden ser balanceadores de cargas. |
|
| Exportar suscripción |
El servicio de Pub/Sub balancea la carga automáticamente. |
|
| Configuración | Suscripción de extracción |
No es necesaria la configuración. |
| Suscripción de envío |
|
|
| Exportar suscripción | El recurso Google Cloud al que se exporta la suscripción debe existir y estar configurado con los permisos adecuados. | |
| Control de flujo | Suscripción de extracción | El cliente suscriptor controla la frecuencia de entrega. El suscriptor puede modificar de forma dinámica la fecha límite de confirmación de recepción, lo que permite que el procesamiento de mensajes tome un tiempo arbitrariamente largo. |
| Suscripción de envío | El servidor de Pub/Sub implementa el control de flujo de forma automática. Los clientes no necesitan controlar el flujo de mensajes. Sin embargo, es posible indicar que el cliente no puede manejar la carga de mensajes actual devolviendo un error HTTP. | |
| Exportar suscripción | Pub/Sub implementa automáticamente el control de flujo para optimizar la escritura de mensajes en el recurso de destino Google Cloud. | |
| Eficiencia y capacidad de procesamiento | Suscripción de extracción | Logra una capacidad de procesamiento alta con una CPU y un ancho de banda bajos cuando permite la entrega por lotes, las confirmaciones y el consumo masivo paralelo. Si se usan sondeos frecuentes para minimizar el tiempo de entrega de mensajes, puede resultar ineficiente. |
| Suscripción de envío | Envía un mensaje por solicitud y limita la cantidad máxima de mensajes pendientes. | |
| Exportar suscripción | Pub/Sub controla la escalabilidad de forma dinámica. | |
Cuándo usar una suscripción de exportación
Sin una suscripción de exportación, necesitas una suscripción de extracción o de envío y un suscriptor (como Dataflow) para leer mensajes y escribirlos en un recurso de Google Cloud . La sobrecarga de ejecutar un trabajo de Dataflow no es necesaria cuando los mensajes no requieren procesamiento adicional antes de almacenarse.
Las suscripciones de exportación tienen las siguientes ventajas:
Implementación simple. Puedes configurar una suscripción de exportación a través de un solo flujo de trabajo en la consola, la CLI de Google Cloud , la biblioteca cliente o la API de Pub/Sub.
Costos bajos. Reduce el costo adicional y la latencia de canalizaciones de Pub/Sub similares que incluyen trabajos de Dataflow. Esta optimización de costos es útil para los sistemas de mensajería que no requieren procesamiento adicional antes del almacenamiento.
Supervisión mínima: Las suscripciones de exportación forman parte del servicio Pub/Sub de múltiples inquilinos y no requieren que ejecutes trabajos de supervisión independientes.
Flexibilidad. Una suscripción a BigQuery puede usar el esquema del tema al que está adjunta, que no está disponible con la plantilla básica de Dataflow para escribir desde Pub/Sub a BigQuery. Del mismo modo, una suscripción a Cloud Storage ofrece opciones configurables de procesamiento por lotes de archivos según el tamaño del archivo y el tiempo transcurrido, que no se pueden configurar en la plantilla básica de Dataflow para escribir desde Pub/Sub en Cloud Storage.
Sin embargo, se recomienda usar una canalización de Dataflow para los sistemas de Pub/Sub en los que se requiere alguna transformación de datos antes de que estos se almacenen en un recursoGoogle Cloud , como una tabla de BigQuery o un bucket de Cloud Storage.
Para aprender a transmitir datos de Pub/Sub a BigQuery con transformación usando Dataflow, consulta Transmite datos de Pub/Sub a BigQuery.
Si deseas obtener información para transmitir datos desde Pub/Sub a Cloud Storage con transformación a través de Dataflow, consulta Transmite mensajes desde Pub/Sub con Dataflow.
¿Qué sigue?
Comprende el flujo de trabajo de cada tipo de suscripción: