En este documento, se te orienta para que elijas entre Pub/Sub y Google Cloud Managed Service for Apache Kafka. Tanto Pub/Sub como Managed Service for Apache Kafka son servicios de mensajería administrados y escalables de forma horizontal que pueden controlar cargas de trabajo de gran volumen.
Este documento está dirigido a desarrolladores, arquitectos o responsables de la toma de decisiones que buscan un servicio administrado para controlar las cargas de trabajo de mensajería y datos de transmisión.
Existen varias opciones para ejecutar Apache Kafka, incluidos los servicios de socios y el software de código abierto autoadministrado. En este documento, no se abordan esas opciones.
Para obtener una descripción general de los conceptos de Pub/Sub, consulta la Descripción general del servicio de Pub/Sub.
Para obtener una descripción general de los conceptos de Managed Service para Apache Kafka, consulta la descripción general de Managed Service para Apache Kafka.
Facilidad operativa en comparación con la portabilidad
La elección entre Pub/Sub y Managed Service para Apache Kafka es un equilibrio entre la simplicidad operativa y la portabilidad.
Simplicidad operativa de Pub/Sub
Pub/Sub es un servicio completamente administrado, sin servidores y distribuido a nivel global que usa infraestructura de Google Cloud . Se ajusta automáticamente para controlar tu carga de trabajo, por lo que no tienes que preocuparte por administrar la infraestructura. Pub/Sub ajusta de forma dinámica la capacidad para temas y suscripciones individuales. Los publicadores y los suscriptores pueden escalar de forma independiente, no solo en diferentes temas y suscripciones, sino también dentro de los mismos.
Pub/Sub también transfiere datos sin problemas entre varias regiones. Esto significa que los publicadores y suscriptores pueden conectarse a la región más cercana, y el servicio se encarga del resto.
Managed Service para Apache Kafka también puede controlar grandes volúmenes de datos. Sin embargo, debes administrar el tamaño del clúster y configurar varias otras propiedades según las necesidades de escalamiento de tus temas. Lo más importante es que debes tener en cuenta la cantidad de particiones que asignarás a tus temas. Demasiadas particiones pueden desperdiciar recursos. Si hay muy pocas particiones, se pueden sobrecargar los agentes de tu clúster de Kafka. También debes tener en cuenta la cantidad de réplicas que debes configurar por partición según tus requisitos de latencia y de expansión de consumidores.
Como la implementación de Kafka está vinculada a una región específica, si mueves datos entre regiones, ese movimiento de datos debe ocurrir fuera del servicio. Garantizar el buen estado continuo del movimiento de datos y satisfacer las necesidades de los temas de tu clúster de Kafka se suma a tu trabajo operativo.
Portabilidad de Managed Service para Apache Kafka
Si bien el ajuste de escala automático y la distribución global de datos de Pub/Sub facilitan su operación, las APIs de Apache Kafka se adoptan de forma mucho más amplia.
Si planeas usar sistemas de mensajería independientes en diferentes entornos locales o de proveedores de servicios en la nube, Managed Service para Apache Kafka puede brindarte una experiencia más coherente en todas tus aplicaciones. Esto se debe a que puedes estandarizar Kafka y usar la misma API para comunicarte con el servicio de Kafka en cada entorno.
Si bien puedes usar Pub/Sub como un sistema de mensajería central en todos tus entornos, es importante recordar que es un servicio distinto con su propia API. Si necesitas interactuar con un sistema de mensajería para un entorno específico, usar Managed Service para Apache Kafka podría ofrecer una experiencia de desarrollo más unificada.
Qué servicio es el adecuado para ti
Si es fundamental tener una experiencia coherente en diversos entornos, elige Managed Service para Apache Kafka. Si te enfocas en la configuración mínima para escalar cargas de trabajo o el movimiento de datos entre regiones, Pub/Sub ofrece una ventaja convincente.
Elige Pub/Sub si los siguientes factores describen tus requisitos:
Priorizas la simplicidad operativa en Google Cloud.
Necesitas una solución escalable y sin servidores con una administración de sobrecarga mínima.
Tienes tamaños de carga de trabajo impredecibles o cambiantes. Pub/Sub también funciona muy bien cuando el rendimiento de la carga de trabajo es estable.
Necesitas un seguimiento del procesamiento por mensaje para minimizar los efectos de la canalización debido a mensajes individuales incorrectos. Pub/Sub, con sus colas de mensajes no entregados (DLQ) integradas y su compatibilidad con el procesamiento de mensajes fuera de orden, permite que tu sistema siga funcionando incluso cuando se encuentran mensajes problemáticos.
Necesitas la agregación de datos entre regiones.
Necesitas un escalamiento independiente del publicador y del suscriptor.
Elige Managed Service para Apache Kafka si los siguientes factores describen tus requisitos:
La portabilidad entre varios proveedores de servicios en la nube o entornos locales es fundamental.
Tienes cargas de trabajo de Kafka existentes que deseas migrar aGoogle Cloud. Para obtener más información, consulta Elige en función de la configuración existente de Kafka.
Tienes un volumen de tráfico constante sin mucha variación.
Aceptas administrar la capacidad.
Necesitas ordenar los mensajes con una capacidad de procesamiento alta por clave.
Deseas usar el patrón de registro de eventos con un registro de eventos como fuente de confianza.
Elige en función de la configuración existente de Kafka
Si ya usas Kafka y buscas una solución administrada, segura y confiable en Google Cloud, te recomendamos Managed Service para Apache Kafka.
Si ya ejecutas Kafka y deseas reescribir tus aplicaciones para obtener los beneficios de un servicio global, altamente escalable y con ajuste de escala automático, Pub/Sub es una buena recomendación. Para migrar de Kafka a Pub/Sub, consulta Migra de Kafka a Pub/Sub.
Para las cargas de trabajo nuevas o los usuarios que no conocen la transmisión en Google Cloud, se recomienda Pub/Sub por su facilidad de uso. Si deseas trasladar tus cargas de trabajo de Kafka existentes a la nube con cambios mínimos en el código, Managed Service para Apache Kafka es la opción ideal.
Integración con productos de Cloud
Tanto Google Managed Service for Apache Kafka como Pub/Sub se integran con varios servicios Google Cloud como Dataflow, BigQuery, Cloud Storage y muchos más.
Si necesitas una estrategia de múltiples nubes y priorizas la portabilidad entre diferentes proveedores de servicios en la nube, Managed Service for Apache Kafka ofrece mayor flexibilidad. Esto se debe a que Kafka se integra con una mayor variedad de sistemas fuera de Google Cloud en comparación con Pub/Sub.
Comparación de funciones
Si los criterios de decisión de alto nivel de las secciones anteriores no te ayudan, puedes tomar una decisión en función de la compatibilidad con funciones específicas. Para obtener una comparación detallada entre los dos productos, consulta la siguiente tabla.
| Función | Pub/Sub | Servicio administrado para Apache Kafka |
|---|---|---|
| Facilidad de uso | Más fácil de configurar y mantener | Requiere más esfuerzo operativo |
| Modelo de costo | Pago por uso | Pago por capacidad de procesamiento Pago por uso de redes y almacenamiento |
| Procesamiento “exactamente una vez” | Admite la entrega simultánea única y una semántica de confirmación sólida. | Admite efectos secundarios de exactamente una vez cuando se lee de un tema y se escribe en otro. |
| Escalamiento | Ajuste de escala automático continuo de KB a GB por segundo y por tema que funciona incluso para cargas de trabajo impredecibles. | Requiere configuración manual |
| Entrega programada | Ofrece ordenamiento dentro de las claves. Capacidad de procesamiento de 1 MBps por clave de ordenamiento detallada |
Ofrece ordenamiento dentro de las particiones. Ordenamiento por partición hasta la capacidad de procesamiento de una partición. |
| Retención de datos | 31 días | Retención indefinida |
| Latencia de extremo a extremo | La latencia de extremo a extremo suele ser del orden de 100 milisegundos. | Por lo general, es del orden de 10 milisegundos para los suscriptores que se comportan bien. |
| Compatibilidad con Kafka de código abierto para la migración lift-and-shift | No | Sí |
| Administración y seguridad de identidades y accesos | Sí | Sí |
| Configuración automática de la red | Sí | Sí |
| Múltiples nubes: Idéntico en todas las nubes | No | Sí |
| ANS de tiempo de actividad | Yes | Sí |
| ANS del plano de datos | Yes | No en este momento |
| Registro y supervisión | Sí | Sí |
| Reequilibrio de particiones entre agentes | No aplicable | Sí |
| Capacidad automática | Pub/Sub ajusta la capacidad de forma dinámica según la frecuencia de mensajes entrantes y la demanda de los suscriptores. | El servicio administra la infraestructura subyacente, como las VMs y el almacenamiento. Controlas aspectos como la cantidad de particiones y el factor de replicación. |
| Administración automática del almacenamiento | Sí | Sí |
| Actualizaciones de software automáticas | Sí | Sí |
| Atención al cliente | Sí | Sí |
| Servicio de Kafka Connect | No aplicable | Con servicios de Connect proporcionados por el usuario |
| Compatibilidad con esquemas | Sí | Con un registro de esquemas proporcionado por el usuario |
| Compatible con ks qIDB y KSQL | No | Sí |
| Compatibilidad con conectores de OSS | Sí, para los conectores de Kafka y Flink | No |
| Integración con data lakes y almacenes de datos | Sí | Sí |