En este documento, se te guía para elegir entre Pub/Sub y Google Cloud Managed Service para Apache Kafka. Tanto Pub/Sub como el Servicio administrado para 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 tomadores de decisiones que buscan un servicio administrado para controlar cargas de trabajo de transmisión de datos y mensajería.
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 Descripción general del servicio de Pub/Sub.
Para obtener una descripción general de los conceptos del Servicio administrado para Apache Kafka, consulta la descripción general del Servicio administrado para Apache Kafka.
Facilidad operativa frente a portabilidad
La elección entre Pub/Sub y Servicio administrado para Apache Kafka es una compensación entre simplicidad operativa y portabilidad.
La simplicidad operativa de Pub/Sub
Pub/Sub es un servicio totalmente administrado, sin servidores y distribuido a nivel mundial que usa la infraestructura de Google Cloud . Se escala 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 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 su región más cercana, y el servicio se encarga del resto.
El servicio administrado para Apache Kafka también puede manejar 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 considerar la cantidad de particiones que asignarás a tus temas. Demasiados particiones pueden desperdiciar recursos. Si hay pocas particiones, se puede sobrecargar los agentes de tu clúster de Kafka. También debes considerar la cantidad de réplicas que debes configurar por partición según tus requisitos de latencia y fan-out de consumidores.
Como una implementación de Kafka está vinculada a una región especificada, si mueves datos entre regiones, ese movimiento de datos debe ocurrir fuera del servicio. Garantizar el estado continuo del movimiento de datos y satisfacer las necesidades de los temas en tu clúster de Kafka se suma a tu trabajo operativo.
Portabilidad del servicio administrado 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 son mucho más populares.
Si planeas usar sistemas de mensajería independientes en diferentes entornos locales o de proveedores de servicios en la nube, el servicio administrado de Apache Kafka puede brindarte una experiencia más coherente en todas tus aplicaciones. Esto se debe a que puedes estandarizar en 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 el servicio administrado para Apache Kafka podría ofrecer una experiencia de desarrollo más unificada.
Qué servicio es adecuado para ti
Si la experiencia coherente en diversos entornos es fundamental, elige el servicio administrado para Apache Kafka. Si tu objetivo es lograr una 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 mínima de la sobrecarga.
Tienes tamaños de carga de trabajo impredecibles o cambiantes. Pub/Sub también funciona muy bien cuando la capacidad de procesamiento 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 incorrectos individuales. Pub/Sub, con sus colas de mensajes devueltos (DLQ) integradas y la compatibilidad con el procesamiento de mensajes fuera de orden, permite que tu sistema siga funcionando incluso cuando se encuentre con mensajes problemáticos.
Necesitas la agregación de datos entre regiones.
Necesitas un escalamiento independiente de publicadores y suscriptores.
Elige el servicio administrado 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 según la configuración de Kafka existente.
Tienes un volumen de tráfico constante sin muchas variaciones.
Tienes la capacidad de administrar la capacidad.
Necesitas el ordenamiento de mensajes con una alta capacidad de procesamiento por clave.
Quieres usar el patrón de aprovisionamiento de eventos con un registro de eventos como fuente de confianza.
Elige según la configuración de Kafka existente
Si ya usas Kafka y buscas una solución administrada, segura y confiable en Google Cloud, Managed Service para Apache Kafka es la opción recomendada.
Si ya ejecutas Kafka y deseas reescribir tus aplicaciones para obtener los beneficios de un servicio global altamente escalable y con escalamiento automático, Pub/Sub es una buena recomendación. Para migrar de Kafka a Pub/Sub, consulta Cómo migrar de Kafka a Pub/Sub.
Para cargas de trabajo nuevas o usuarios que se inician en la transmisión en Google Cloud, se recomienda Pub/Sub por su facilidad de uso. Si deseas mover tus cargas de trabajo de Kafka existentes a la nube con cambios mínimos en el código, el servicio administrado para Apache Kafka es la opción ideal.
Integración con productos de Cloud
Tanto el Servicio administrado de Google para Apache Kafka como Pub/Sub se integran en varios servicios de Google Cloud , como Dataflow, BigQuery, Cloud Storage y muchos más.
Si necesitas una estrategia de varias nubes y priorizas la portabilidad entre diferentes proveedores de servicios en la nube, el servicio administrado para Apache Kafka ofrece una mayor flexibilidad. Esto se debe a que Kafka se integra con una gama más amplia de sistemas fuera de Google Cloud en comparación con Pub/Sub.
Comparación de funciones
Si estos 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 ver una comparación detallada entre los dos productos, consulta la siguiente tabla.
Atributo | Pub/Sub | Servicio administrado para Apache Kafka |
---|---|---|
Facilidad de uso | Son fáciles de configurar y mantener. | Requiere más esfuerzo operativo |
Modelo de costo | Pago por uso | Pago por capacidad de procesamiento Pago por uso para las herramientas de redes y el almacenamiento |
Procesamiento “exactamente una vez” | Admite una sola entrega simultánea y 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 sin interrupciones de KB a GB por segundo por tema que incluso funciona para cargas de trabajo impredecibles. | Requiere configuración manual |
Pedido a domicilio | Ofrece ordenamiento dentro de las claves. Capacidad de procesamiento de 1 MBps por clave de ordenamiento detallado |
Ofrece orden dentro de las particiones. Ordenación 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 | Latencia de extremo a extremo, por lo general, del orden de 100 milisegundos | Por lo general, es de alrededor de 10 milisegundos para los suscriptores que se comportan bien. |
Compatibilidad de Kafka de código abierto para la migración | No | Sí |
Seguridad y Identity and Access Management | Sí | Sí |
Configuración automática de red | Sí | Sí |
Multinube: Es idéntica 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í |
Rebalanceo de particiones entre agentes | No aplicable | Sí |
Capacidad automática | Pub/Sub ajusta la capacidad de forma dinámica en función de la frecuencia de mensajes entrantes y la demanda de los suscriptores. | El servicio administra la infraestructura subyacente, como las VMs y el almacenamiento. Tú controlas aspectos como la cantidad de particiones y el factor de replicación. |
Administración automática de 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 el esquema | Sí | Con el 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 el data lake y el almacén de datos | Sí | Sí |