Google Pub / Sub Lite para usuarios de Kafka

Pub / Sub Lite es un nuevo servicio del equipo de Cloud Pub / Sub que tiene como objetivo proporcionar un sistema Pub / Sub alternativo centrado en los costos. En particular, proporciona un servicio administrado para los usuarios que considerarían ejecutar su propio clúster Apache Kafka de zona única por razones de precio. Esta publicación presenta una comparación entre Pub / Sub Lite, Pub / Sub y una configuración de Kafka autoadministrada, así como un tutorial sobre cómo probar sus cargas de trabajo actuales de Kafka en Pub / Sub Lite.

Pub / Sub Lite comparte más conceptos de alto nivel con Kafka que Cloud Pub / Sub, ya que es un registro particionado con un seguimiento del progreso a través de las compensaciones avanzadas. Debido a esto, tiene una API más similar a Kafka y los usuarios pueden publicar y consumir mensajes utilizando las API de cliente de Kafka .

Diferencias notables entre Pub / Sub Lite y Kafka

Si bien Pub / Sub Lite es conceptualmente similar a Apache Kafka, es un sistema diferente con API más centradas en la ingestión de datos. Si bien las diferencias deben ser irrelevantes para la ingestión y el procesamiento de transmisiones, hay una serie de casos de uso específicos en los que son importantes.

Kafka como base de datos

Pub / Sub Lite no admite la publicación transaccional ni la compactación de registros, que son funciones de Kafka que generalmente son más útiles cuando se usa Kafka como base de datos que como sistema de mensajería. Si esto describe su caso de uso, debería considerar ejecutar su propio clúster de Kafka o usar una solución administrada de Kafka como Confluent Cloud . Si ninguno de estos es una opción, también puede considerar el uso de una base de datos escalable horizontalmente como Cloud Spanner y tener una tabla ordenada por marca de tiempo de confirmación con claves de fila para la deduplicación.

Compatibilidad con Kafka Streams

Kafka streams es un sistema de procesamiento de datos construido sobre Kafka. Si bien permite la inyección de clientes consumidores, requiere acceso a todas las operaciones de administración y utiliza las propiedades de la base de datos transaccional de Kafka para almacenar metadatos internos. Apache Beam es un sistema de procesamiento de datos de transmisión similar que está integrado con Kafka, Pub / Sub y Pub / Sub Lite, así como con otras fuentes y receptores de datos. Las canalizaciones de transmisión también se pueden ejecutar de forma totalmente administrada con Dataflow .

Supervisión

Los clientes de Kafka tienen la capacidad de leer métricas del lado del servidor. En Pub / Sub Lite, las métricas relevantes para el comportamiento de los editores y suscriptores se exponen a través de Cloud Monitoring sin configuración adicional.

Administración y configuración

Gestión de capacidad

La capacidad de un tema de Kafka generalmente está determinada por la capacidad del grupo. La configuración de replicación, compactación de claves y procesamiento por lotes determinará la capacidad requerida para dar servicio a cualquier tema determinado en el clúster de Kafka, pero no hay límites de rendimiento directo en un tema en sí. Por el contrario, tanto la capacidad de almacenamiento como la capacidad de procesamiento de un tema de Pub / Sub Lite deben definirse explícitamente. La capacidad del tema de Pub / Sub Lite está determinada por el número inmutable de particiones y la capacidad de lectura, escritura y almacenamiento ajustable de cada partición .

Autenticación y seguridad

Apache Kafka admite varios mecanismos abiertos de autenticación y cifrado. Con Pub / Sub Lite, la autenticación se basa en el sistema IAM de GCP. La seguridad está garantizada mediante el cifrado en reposo y en tránsito .

Opciones de configuración

Kafka tiene una gran cantidad de opciones de configuración que controlan la estructura del tema, los límites y las propiedades del intermediario. A continuación, se presentan algunos comunes útiles para la ingestión de datos, con sus equivalentes en Pub / Sub Lite. Tenga en cuenta que, como sistema gestionado, el usuario no tiene que preocuparse por muchas propiedades del intermediario.

auto.create.topics.enable

No hay equivalente disponible. Los temas deben crearse de antemano utilizando la API de administración. Del mismo modo, las suscripciones (aproximadamente equivalentes a grupos de consumidores) deben crearse antes de usarse con la API de administración.

retención.bytes

El equivalente en Pub / Sub Lite es Almacenamiento por partición , una propiedad por tema.

retención.ms

El equivalente en Pub / Sub Lite es el período de retención de mensajes , una propiedad por tema.

flush.ms, acks

No se pueden configurar, pero las publicaciones no se reconocerán hasta que se garantice que se conservarán en el almacenamiento replicado.

bytes máx. de mensaje

Esto no es configurable, 3.5 MiB es el tamaño máximo de mensaje que se puede enviar a Pub / Sub Lite. Los tamaños de los mensajes se calculan de forma repetible .

key.serializer, value.serializer, key.deserializer, value.deserializer

Pub / Sub Lite implementa específicamente Producer y el consumidor . Cualquier serialización (que posiblemente puede fallar) debe realizarse mediante código de usuario.

reintentos

Pub / Sub Lite utiliza un protocolo de transmisión por cable y volverá a intentar los errores de publicación transitorios, como la falta de disponibilidad, de forma indefinida. Cualquier falla que llegue al código del usuario final es permanente.

tamaño del lote

La configuración de lotes se puede configurar en el momento de la creación del cliente .

message.timestamp.type

Cuando se utiliza la implementación del consumidor, se elegirá la marca de tiempo del evento si está presente, y la marca de tiempo de publicación se utilizará en caso contrario. Tanto las marcas de tiempo de publicación como de eventos están disponibles cuando se usa Dataflow.

max.partition.fetch.bytes, max.poll.records

Los ajustes de control de flujo se pueden configurar en el momento de la creación del cliente.

enable.auto.commit

Autocommit se puede configurar en el momento de la creación del cliente.

enable.idempotence

Actualmente no se admite.

auto.offset.reset

Actualmente no se admite.

Introducción a Pub / Sub Lite

Las herramientas de Pub / Sub Lite facilitan la prueba de las cargas de trabajo actuales de Kafka que se ejecutan en Pub / Sub Lite. Si tiene varias tareas en un grupo de consumidores que leen de un tema de Kafka de varios productores, adaptar su código para que se ejecute con Pub / Sub Lite requiere cambios mínimos. Estos se describen a continuación.

Crea recursos de Pub / Sub Lite

Para ingerir y procesar datos con Pub / Sub Lite, debe crear un tema y una suscripción respectivamente. Al crear su tema, debe asegurarse de que tenga suficiente paralelismo horizontal (particiones) para manejar su carga máxima de publicaciones. Si su rendimiento máximo de publicación es X MiB / s, debe aprovisionar particiones X / 4 para su tema con 4 MiB / s de capacidad cada una (el valor predeterminado).

Copiar datos de Kafka

El equipo de Pub / Sub mantiene un conector de Kafka Connect para Pub / Sub Lite y es la forma más fácil de copiar datos en Pub / Sub Lite. Para experimentar, puede ejecutar específicamente el script copy_tool, que descargará y ejecutará Kafka Connect localmente en una configuración de máquina única. Asegúrese de seguir los pasos previos a la ejecución para configurar correctamente la autenticación antes de comenzar. Un archivo de propiedades de ejemplo se vería así:

 nombre = PubSubLiteSourceConnector
 connector.class = com.google.pubsublite.kafka.source.PubSubLiteSourceConnector
 pubsublite.project = mi-proyecto
 pubsublite.location = europe-south7-q
 pubsublite.subscription = mi-suscripción
 kafka.topic = mi-tema-kafka

Esto reflejará todos los datos publicados en su tema kafka en Pub / Sub Lite mientras se está ejecutando. La documentación de Kafka Connect proporciona más información sobre cómo ejecutar un trabajo de Kafka Connect para su clúster.

Una vez que comiences a copiar datos, deberías poder ver que la métrica topic / publish_message_count del tema de Pub / Sub Lite crece en la consola del explorador de métricas , a medida que se copia la acumulación de tu tema de Kafka.

Leer datos de Pub / Sub Lite

El equipo de Pub / Sub mantiene una implementación de la API de consumidor de Kafka que le permite leer datos de Pub / Sub Lite con solo modificaciones mínimas en su código existente.

Para hacerlo, reemplazará todas las instancias de KafkaConsumer con una implementación específica de Pub / Sub Lite de la misma interfaz. En primer lugar, debe asegurarse de que ningún código de cliente haga referencia a la implementación concreta de KafkaConsumer; en su lugar, debe reemplazarlos con Consumer interfaz. A continuación, debe construir su implementación de consumidor de Pub / Sub Lite como se detalla en el enlace anterior y pasarla a su código.

Cuando llames a poll (), ahora estarás recuperando mensajes de Pub / Sub Lite en lugar de Kafka. Tenga en cuenta que el consumidor de Pub / Sub Lite no creará automáticamente una suscripción para usted: debe crear una suscripción de antemano mediante la IU o gcloud.

A medida que recibe mensajes y confirma compensaciones, puede monitorear el progreso de sus Consumidores a través del backlog mirando la métrica subscription / backlog_message_count en la consola del explorador de métricas.

Escribir datos en Pub / Sub Lite

Una vez que todos los consumidores se hayan migrado a la lectura de datos de Pub / Sub Lite, puede comenzar a migrar los productores a Pub / Sub Lite. Al igual que en el caso del consumidor, puede reemplazar a todos los usuarios de KafkaProducer con Productor como un cambio sin operación. Luego, siguiendo las instrucciones , puede construir una implementación de Producer de Pub / Sub Lite y pasarla a su código. Cuando llames a send (), los datos se enviarán a Pub / Sub Lite. Cuando actualice sus trabajos de productor, los consumidores que lean de Pub / Sub Lite serán ambivalentes si los datos se envían a través de Kafka (y Kafka Connect los copia a Pub / Sub Lite) o directamente a Pub / Sub Lite. No es un problema que los productores de Kafka y Pub / Sub Lite se ejecuten al mismo tiempo.


Google Pub / Sub Lite para usuarios de Kafka se publicó originalmente en Google Cloud - Community on Medium, donde las personas continúan la conversación destacando y respondiendo a esta historia.