En este documento se explica cómo elegir entre Pub/Sub y Google Cloud Managed Service para Apache Kafka. Tanto Pub/Sub como Managed Service para Apache Kafka son servicios de mensajería gestionados y escalables horizontalmente que pueden gestionar cargas de trabajo de gran volumen.
Este documento está dirigido a desarrolladores, arquitectos o responsables de la toma de decisiones que busquen un servicio gestionado para gestionar cargas de trabajo de mensajería y datos de streaming.
Hay varias opciones para ejecutar Apache Kafka, como los servicios de partners y el software de código abierto autogestionado. Este documento no trata esas opciones.
Para obtener una descripción general de los conceptos de Pub/Sub, consulta Descripción general del servicio 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 de uso frente a 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 totalmente gestionado, sin servidor y distribuido a nivel mundial que usa la infraestructura de Google Cloud . Se escala automáticamente para gestionar tu carga de trabajo, por lo que no tienes que preocuparte por gestionar la infraestructura. Pub/Sub ajusta dinámicamente la capacidad de temas y suscripciones concretos. Los editores y los suscriptores pueden escalar de forma independiente, no solo en diferentes temas y suscripciones, sino también en los mismos.
Pub/Sub también transfiere datos fácilmente entre varias regiones. Esto significa que los editores y los 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 gestionar grandes volúmenes de datos. Sin embargo, debes gestionar el tamaño del clúster y configurar otras propiedades en función de las necesidades de escalado de tus temas. Lo más importante es que debes tener en cuenta el número de particiones que vas a asignar a tus temas. Si hay demasiadas particiones, se pueden desperdiciar recursos. Si hay muy pocas particiones, los brokers de tu clúster de Kafka pueden sobrecargarse. También debes tener en cuenta el número de réplicas que tienes que configurar por partición en función de tus requisitos de latencia y de distribución de consumidores.
Como una implementación de Kafka está vinculada a una región específica, si mueves datos entre regiones, ese movimiento de datos debe producirse fuera del servicio. Asegurarse de que el movimiento de datos siga siendo correcto y de que se satisfagan las necesidades de los temas de tu clúster de Kafka se suma a tu trabajo operativo.
Portabilidad de Managed Service para Apache Kafka
Aunque la función de autoescalado y la distribución de datos global de Pub/Sub facilitan su funcionamiento, las APIs de Apache Kafka están mucho más extendidas.
Si tienes previsto usar sistemas de mensajería independientes en diferentes entornos locales o de proveedores de la nube, el servicio gestionado de Apache Kafka puede ofrecerte 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.
Aunque puedes usar Pub/Sub como sistema de mensajería central en todos tus entornos, es importante recordar que se trata de un servicio independiente con su propia API. Si necesitas interactuar con un sistema de mensajería para un entorno específico, usar Managed Service para Apache Kafka puede ofrecerte una experiencia de desarrollo más unificada.
Qué servicio es el más adecuado para ti
Si lo más importante es ofrecer una experiencia coherente en diferentes entornos, elige Managed Service para Apache Kafka. Si te centras en la configuración mínima para escalar cargas de trabajo o mover datos entre regiones, Pub/Sub ofrece una ventaja considerable.
Elige Pub/Sub si se dan las siguientes circunstancias:
Priorizas la simplicidad operativa en Google Cloud.
Necesitas una solución escalable y sin servidor con una gestión de sobrecarga mínima.
Tienes cargas 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 incorrectos. Pub/Sub, con sus colas de mensajes fallidos (DLQs) integradas y su compatibilidad con el procesamiento de mensajes desordenados, permite que tu sistema siga funcionando incluso cuando se encuentre con mensajes problemáticos.
Necesitas agregar datos de diferentes regiones.
Necesitas un escalado independiente de editores y suscriptores.
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 on-premise es fundamental.
Tienes cargas de trabajo de Kafka que quieres migrar aGoogle Cloud. Para obtener más información, consulta Elegir en función de la configuración de Kafka.
Tienes un volumen de tráfico constante sin mucha variación.
Puedes gestionar la capacidad.
Necesitas ordenar los mensajes con un alto rendimiento por clave.
Quieres usar el patrón de origen de eventos con un registro de eventos como fuente de información veraz.
Elige en función de la configuración de Kafka
Si ya usas Kafka y buscas una solución gestionada, segura y fiable en Google Cloud, te recomendamos Managed Service para Apache Kafka.
Si ya estás ejecutando Kafka y quieres reescribir tus aplicaciones para disfrutar de las ventajas de un servicio global altamente escalable y con escalado automático, te recomendamos Pub/Sub. Para migrar de Kafka a Pub/Sub, consulta Migrar de Kafka a Pub/Sub.
Para las cargas de trabajo nuevas o los usuarios que no hayan usado el streaming en Google Cloud, se recomienda Pub/Sub por su facilidad de uso. Si quieres mover tus cargas de trabajo de Kafka 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 Google Cloud
Tanto el servicio gestionado de Google para Apache Kafka como Pub/Sub se integran con varios Google Cloud servicios, como Dataflow, BigQuery y Cloud Storage, entre otros.
Si necesitas una estrategia multinube y priorizas la portabilidad entre diferentes proveedores de servicios en la nube, Managed Service para Apache Kafka te ofrece más flexibilidad. Esto se debe a que Kafka se integra con una gama más amplia de sistemas externos a Google Cloud que Pub/Sub.
Comparación de funciones
Si los criterios de decisión de alto nivel de las secciones anteriores no te ayudan, puedes elegir en función de la compatibilidad con funciones específicas. Para ver una comparación detallada entre los dos productos, consulta la siguiente tabla.
Función | Pub/Sub | Managed Service para Apache Kafka |
---|---|---|
Facilidad de uso | Más fácil de configurar y mantener | Requiere más esfuerzo operativo |
Modelo de costes | Pago por uso | Pago por capacidad de computación Pago por uso de redes y almacenamiento. |
Procesamiento exacto | Admite la entrega simultánea única y una semántica de confirmación sólida. | Admite efectos secundarios de exactamente una vez al leer de un tema y escribir en otro. |
Escalado | Autoescalado fluido de kilobytes a gigabytes por segundo y tema, que funciona incluso con cargas de trabajo impredecibles. | Requiere configuración manual |
Pedido a domicilio | Ofrece la posibilidad de ordenar los elementos de las claves. Rendimiento de 1 MB/s por clave de ordenación detallada |
Ofrece ordenación dentro de las particiones. Ordenación por partición hasta la capacidad de rendimiento de una partición. |
Conservación de datos | 31 días | Conservación indefinida |
Latencia integral | Latencia de extremo a extremo, normalmente del orden de 100 milisegundos | Normalmente, el orden es de 10 milisegundos para los suscriptores que se comportan correctamente. |
Compatibilidad con Kafka de código abierto para migrar aplicaciones | No | Sí |
Gestión de identidades y accesos y seguridad | Sí | Sí |
Configuración automática de la red | Sí | Sí |
Multinube: idéntico en todas las nubes | No | Sí |
Acuerdo de nivel de servicio de tiempo de actividad | Sí | Sí |
Acuerdo de nivel de servicio del plano de datos | Sí | Por el momento, no. |
Almacenamiento de registros y monitorización | Sí | Sí |
Reequilibrio de particiones entre brokers | 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 de la demanda de los suscriptores. | El servicio gestiona la infraestructura subyacente, como las máquinas virtuales y el almacenamiento. Puedes controlar aspectos como el número de particiones y el factor de réplica. |
Gestión automática del almacenamiento | Sí | Sí |
Actualizaciones de software automáticas | Sí | Sí |
Servicio de asistencia | Sí | Sí |
Servicio 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 software libre | Sí, para los conectores de Kafka y Flink | No |
Integración con lagos y almacenes de datos | Sí | Sí |