Kafka Connect es la herramienta preferida para la integración de datos de los desarrolladores de Kafka. Proporciona un framework para conectar Kafka con sistemas externos, como bases de datos, colas de mensajes y sistemas de archivos.
Kafka Connect proporciona un conjunto seleccionado de complementos de conectores integrados, verificados y mantenidos por Google Cloud. Estos complementos de conector se actualizan y aplican parches automáticamente, lo que simplifica el mantenimiento y garantiza la compatibilidad.Google Cloud también proporciona supervisión y registro integrados para mantener el buen estado de tus canalizaciones.
Las APIs de Kafka Connect se ofrecen como parte del servicio de Google Cloud Managed Service para Apache Kafka. Se puede acceder a estas APIs a través de managedkafka.googleapis.com y están integradas en la consola y las bibliotecas cliente de Google Cloud . Para administrar Kafka Connect, puedes usar la consola de Google Cloud , gcloud CLI, la API de Managed Kafka, las bibliotecas cliente de Cloud o Terraform.
Casos de uso de Kafka Connect
Kafka Connect admite la integración de datos entre tu clúster de Managed Service para Apache Kafka y otros sistemas. Estos son algunos casos de uso clave:
Migra tus implementaciones de Kafka existentes a Managed Service para Apache Kafka.
Replica tu clúster de Managed Service para Apache Kafka en otra región para la recuperación ante desastres.
Transmite datos desde Managed Service for Apache Kafka a BigQuery, Cloud Storage y Pub/Sub.
Términos de Kafka Connect
En estas secciones, se analizan ciertos componentes clave de Kafka Connect.
Clúster de Connect
Un clúster de Connect es una implementación distribuida de Kafka Connect con complementos y parámetros de configuración de conectores empaquetados previamente. Cada clúster de Connect está asociado con un clúster principal de Managed Service for Apache Kafka. Este clúster principal almacena el estado de los conectores que se ejecutan en el clúster de Connect.
Por lo general, el clúster principal de Managed Service para Apache Kafka también funciona como destino para todos los conectores de origen y como fuente para todos los conectores receptores que se ejecutan en el clúster de Connect asociado.
Un solo clúster de Managed Service para Apache Kafka puede tener varios clústeres de Connect. Si ejecutas MirrorMaker 2.0, un clúster de Connect puede conectarse a clústeres secundarios de Managed Service for Apache Kafka o a clústeres de Kafka autoadministrados para leer o escribir datos de temas. Este proceso permite la replicación de temas entre diferentes clústeres.
Desde la perspectiva del modelo de recursos, un clúster de Connect es un recurso independiente de un clúster de Managed Service para Apache Kafka.
Supongamos que tienes un clúster de Managed Service para Apache Kafka en el que almacenas datos de tráfico del sitio web. Quieres transmitir estos datos a BigQuery para su análisis. Puedes crear un clúster de Connect y usar un conector de receptor de BigQuery para transferir los datos de tus temas de Kafka a BigQuery. Este clúster de Connect está asociado con tu clúster de Managed Service para Apache Kafka como su clúster principal.
Complemento del conector
Es un paquete de software para crear conectores. Piensa en él como el código que define la lógica del conector.
Un conector puede ser un conector de fuente o de receptor. Un conector de origen escribe datos de una fuente en un clúster de Managed Service para Apache Kafka.
Un conector de receptor escribe datos desde un clúster de Managed Service para Apache Kafka en un receptor.
El servicio administrado para Apache Kafka admite varios tipos de complementos de conectores integrados que puedes configurar para crear conectores. Estos conectores ofrecen integraciones con servicios comunes, como Pub/Sub o BigQuery. Estos complementos de conector son los siguientes:
Complemento del conector de receptor de BigQuery
Complemento del conector de receptor de Cloud Storage
Complemento del conector de fuente de Pub/Sub
Complemento del conector de receptor de Pub/Sub
Complementos de conector de MirrorMaker 2.0
Conector
Un conector es una instancia en ejecución de un complemento de conector dentro de un clúster de Connect específico. Puedes crear varios conectores a partir del mismo complemento de conector, cada uno con su propia configuración específica. Entre los ejemplos de configuración, se incluyen diferentes detalles de autenticación y parámetros de configuración operativos. Un conector se implementa, configura y administra dentro del clúster de Connect. Se puede iniciar, detener, pausar, reiniciar y actualizar su configuración.
Los componentes de un conector se analizan en las siguientes secciones.
Usuarios que generan conversiones
Los convertidores son componentes fundamentales dentro de Kafka Connect que se encargan de la serialización y deserialización. Traducen los datos entre el formato de bytes sin procesar que se encuentra en los temas de Kafka, como en formato Avro o JSON, y la representación interna de datos estructurados de Kafka Connect.
Rol de los convertidores
En el caso de los conectores de Sink, los convertidores deserializan los datos del formato de cable del tema en la representación interna de datos estructurados de Kafka Connect, que el conector usa para escribir en el sistema de destino.
En el caso de los conectores de origen, los convertidores serializan los datos de la representación interna y estructurada de los datos de Kafka Connect, tal como la proporciona el conector, y los convierten al formato de transferencia especificado para el tema de Kafka.
Este formato interno sirve como una representación común, lo que permite varios pasos de procesamiento intermedio. Estos pasos incluyen elementos básicos, como filtros, predicados, transformaciones y convertidores, que operan en este formato interno unificado. Al usar un formato interno abstracto, la lógica de estos pasos intermedios permanece independiente de los formatos específicos de los datos de entrada o salida.
Un convertidor se vuelve necesario cuando necesitas interactuar con los datos más allá de simplemente pasarlos. Específicamente, los convertidores son necesarios en los casos en los que necesitas realizar pasos de procesamiento intermedio, como predicados o transformaciones, de una manera detallada y que tenga en cuenta la estructura.
Si solo deseas mover una cadena de bytes (incluso si resulta ser JSON) de una fuente a Kafka sin ninguna manipulación, no se requiere un convertidor.
En la configuración de un conector, si no especificas los convertidores de clave y valor, el conector usa el valor predeterminado ByteArrayConverter. El valor org.apache.kafka.connect.converters.ByteArrayConverter no aplica ninguna transformación a los datos y los pasa en su formato original.
Convertidores compatibles
En esta versión, Google Cloud admite los siguientes convertidores integrados:
org.apache.kafka.connect.converters.ByteArrayConverter: Convierte datos en arrays de bytes y viceversa. Este es el convertidor predeterminado. Pasa los datos a través del conector como los bytes subyacentes sin procesar.org.apache.kafka.connect.json.JsonConverter: Convierte datos al formato JSON y desde este.org.apache.kafka.connect.storage.StringConverter: Convierte datos al formato de cadena y desde él.org.apache.kafka.connect.converters.ByteArrayConverter: Convierte datos en arrays de bytes y viceversa.org.apache.kafka.connect.converters.DoubleConverter: Convierte datos al formato Double y desde él.org.apache.kafka.connect.converters.FloatConverter: Convierte datos al formato de número de punto flotante y desde él.org.apache.kafka.connect.converters.IntegerConverter: Convierte datos al formato de número entero y desde él.org.apache.kafka.connect.converters.LongConverter: Convierte datos al formato Long y desde él.org.apache.kafka.connect.converters.ShortConverter: Convierte datos al formato Short y desde él.org.apache.kafka.connect.converters.BooleanConverter: Convierte datos a formato booleano y desde este.io.confluent.connect.avro.AvroConverter: Convierte datos al formato Apache Avro y desde él.
En esta versión, Kafka Connect no admite la validación en un esquema remoto con el Registro de esquemas.
Para obtener información sobre los convertidores preferidos para cada conector, consulta la documentación del conector específico.
Configuración predeterminada del convertidor
El convertidor de claves y valores predeterminado para todos los conectores compatibles es org.apache.kafka.connect.json.JsonConverter.
Cuando configures tus conectores, deberás especificar el convertidor adecuado para la clave y el valor de tus mensajes de Kafka. Por ejemplo, si trabajas con datos JSON, usa JsonConverter. Si tus datos están en formato de cadena, usa StringConverter.
Algunas configuraciones comunes son las siguientes:
tasks.max: Es la cantidad máxima de tareas que se pueden crear para este conector. Esto controla el paralelismo del conector. Aumentar la cantidad de tareas puede mejorar la capacidad de procesamiento, pero también incrementa el consumo de recursos (CPU y memoria). El valor óptimo depende de la carga de trabajo y de los recursos asignados a los trabajadores del clúster de Connect, y, en el caso de los conectores de receptor, de la cantidad de particiones de temas de Kafka.value.converter: Es el convertidor que se usará para serializar el valor de los mensajes antes de enviarlos al bucket de Cloud Storage. Entre los convertidores comunes, se incluyen los siguientes:org.apache.kafka.connect.json.JsonConverter: Para datos JSON. A menudo, deberás establecervalue.converter.schemas.enable=falsecuando uses este convertidor con JSON simple (sin un esquema).org.apache.kafka.connect.converters.ByteArrayConverter: Para conservar el contenido exacto de los mensajes en dos sistemas.org.apache.kafka.connect.storage.StringConverter: Para cadenas de texto sin formato.
key.converter: Es el convertidor que se usará para serializar la clave de los mensajes. Se aplican las mismas opciones de conversión que paravalue.converter. Si tus mensajes no tienen claves, a menudo puedes usarorg.apache.kafka.connect.storage.StringConverter.value.converter.schemas.enable: Para un conector de receptor, establecer este parámetro entruecuando se usaorg.apache.kafka.connect.json.JsonConverterindica a Kafka Connect que busque y use un esquema incorporado en el mensaje de Kafka entrante. Cuando se establece enfalse(valor predeterminado), Kafka Connect espera que los datos sean JSON sin formato y sin un esquema incorporado.
Transformaciones (opcional)
Las transformaciones permiten la manipulación o el enriquecimiento de los datos durante la canalización de datos. Las transformaciones te permiten modificar mensajes individuales antes de que se envíen a Managed Service para Apache Kafka (para conectores de origen) o al sistema externo (para conectores de receptor). Puedes usar una transformación para enmascarar datos sensibles, agregar marcas de tiempo o cambiar el nombre de los campos.
Predicados (opcional)
Los predicados permiten filtrar los datos según condiciones específicas. Los predicados actúan como filtros para aplicar transformaciones, ya que determinan a qué mensajes se aplica una transformación según las propiedades del mensaje.
Administra Kafka Connect en Google Cloud
Con Kafka Connect, puedes enfocarte en implementar conectores mientras Google Cloudse encarga de la infraestructura subyacente y las complejidades operativas. A continuación, se muestra un desglose de lo que automatiza Google Cloud y lo que puedes configurar:
El servicio de Kafka Connect automatiza lo siguiente:
Aprovisionamiento de trabajadores de Kafka Connect: Cuando creas un clúster de Connect, el servicio de Kafka Connect aprovisiona automáticamente un clúster de trabajadores en Kubernetes.
Redes: El servicio de Kafka Connect configura la red para habilitar la comunicación entre los trabajadores, los agentes de Managed Service for Apache Kafka y los sistemas externos. En algunos casos, es posible que debas realizar algunos cambios en la configuración de red existente.
Resistencia zonal: El servicio de Kafka Connect distribuye los trabajadores en un mínimo de tres zonas, lo que garantiza que el procesamiento de datos pueda continuar en caso de una interrupción zonal.
Autenticación: El servicio de Kafka Connect también configura la autenticación con los agentes de Kafka, lo que garantiza conexiones seguras.
Lanzamientos y actualizaciones: El servicio de Kafka Connect administra los cambios en la configuración de los trabajadores, las actualizaciones de versiones y los parches de seguridad, lo que garantiza que tus implementaciones estén siempre actualizadas.
En el servicio de Kafka Connect, puedes realizar las siguientes configuraciones:
Restricciones de capacidad y red: Define límites de recursos y configuraciones de red para optimizar el rendimiento y el costo.
Supervisión y registro: Accede a los registros y las métricas de tus conectores para supervisar el rendimiento y solucionar problemas.
Administración del ciclo de vida de los conectores: Pausa, reanuda, reinicia o detén los conectores según sea necesario para administrar tus canalizaciones de datos.
Limitaciones
El servicio de Kafka Connect solo admite el clúster de Managed Service para Apache Kafka como el clúster principal de Kafka. El clúster principal es aquel en el que el clúster de Kafka Connect escribe sus metadatos.
El servicio no admite la carga de complementos de conectores personalizados en tu clúster de Kafka Connect.