En la siguiente tabla, se enumeran los tipos de conectores de Kafka Connect que admite Managed Service para Apache Kafka. Puedes usar estos conectores para integrar Apache Kafka con tus aplicaciones y con otros servicios de Google Cloud.
| Conector | Descripción | Casos de uso |
|---|---|---|
| Receptor de BigQuery | Transmite datos de temas de Kafka a una tabla de BigQuery. | Almacenamiento de datos, estadísticas |
| Fuente de Cloud SQL para PostgreSQL | Lee los cambios a nivel de fila de una base de datos de Cloud SQL para PostgreSQL y los escribe en Kafka. | Integración de bases de datos, supervisión y respuesta a eventos de bases de datos |
| Receptor de Cloud Storage | Transmite datos de temas de Kafka a un bucket de Cloud Storage. | Transferencia de data lakes y archivado de datos |
| Fuente de PostgreSQL genérica | Lee los cambios a nivel de fila de una base de datos de PostgreSQL y los escribe en Kafka. | Integración de bases de datos, supervisión y respuesta a eventos de bases de datos |
| Punto de control de MirrorMaker 2.0 | Copia los desplazamientos de consumidores de un clúster de Kafka a otro. | Replicación de datos, recuperación ante desastres y migración de datos |
| Señal de monitoreo de funcionamiento de MirrorMaker 2.0 | Genera mensajes de latido periódicos y los escribe en un tema. | Supervisar el estado del clúster, la conectividad de red o la latencia de replicación de extremo a extremo entre clústeres |
| Fuente de MirrorMaker 2.0 | Replica temas y datos de un clúster de Kafka a otro. | Replicación de datos, recuperación ante desastres y migración de datos |
| Receptor de Pub/Sub | Transmite datos de temas de Kafka a un tema de Pub/Sub. | Integración de servicios y notificaciones en tiempo real |
| Fuente de Pub/Sub | Transmite mensajes de una suscripción de Pub/Sub a un tema de Kafka. | Transferencia de datos en tiempo real, arquitecturas controladas por eventos |
Usuarios que generan conversiones
Los convertidores son responsables de la serialización y deserialización de los datos de registro de Kafka. Traducen entre el formato de bytes sin procesar que se encuentra en los temas de Kafka y la representación de datos interna y estructurada que usa Kafka Connect.
En el caso de los conectores de receptor, los convertidores deserializan los datos del formato de conexión del tema al formato de datos interno 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 del formato de datos interno de Kafka Connect al formato de conexión especificado para el tema de Kafka.
Los convertidores garantizan que el conector lea o escriba los registros de Kafka en un formato compatible con el sistema externo.
Cuando configures un conector, establece las siguientes propiedades:
Conversor de claves (
key.converter): Es el conversor que se usará cuando se serialicen y deserialicen las claves de registro de Kafka.Convertidor de valores (
value.converter): Es el convertidor que se usará cuando se serialicen y deserialicen los valores de los registros de Kafka.
Si no especificas un conversor, el tipo de conversor predeterminado es
org.apache.kafka.connect.converters.ByteArrayConverter, que pasa
los datos en su formato de bytes sin procesar.
Conversores compatibles
Managed Service para Apache Kafka admite los siguientes convertidores integrados:
| Usuario que generó una conversión | Formato |
|---|---|
io.confluent.connect.avro.AvroConverter |
Apache Avro |
org.apache.kafka.connect.converters.BooleanConverter |
Booleano |
org.apache.kafka.connect.converters.ByteArrayConverter |
Array de bytes Es el tipo de conversor predeterminado. Conserva el contenido exacto de los mensajes en dos sistemas. |
org.apache.kafka.connect.converters.DoubleConverter |
Doble |
org.apache.kafka.connect.converters.FloatConverter |
Número de punto flotante |
org.apache.kafka.connect.converters.IntegerConverter |
Número entero |
org.apache.kafka.connect.json.JsonConverter |
JSON Para los datos JSON sin un esquema, también configura
|
org.apache.kafka.connect.converters.LongConverter |
Largo |
org.apache.kafka.connect.converters.ShortConverter |
Brevedad normal |
org.apache.kafka.connect.storage.StringConverter |
String |
La elección del convertidor depende del tipo de conector y de los datos que almacenas en Kafka. Para obtener más información, consulta la documentación del conector específico.
Tasks
Un conector transfiere datos creando una o más tareas que operan en
paralelo. Para establecer un límite superior en la cantidad de tareas que crea un conector, establece
la propiedad de configuración tasks.max del conector. El conector puede crear
menos tareas que este valor.
Aumentar el valor de tasks.max puede mejorar la capacidad de procesamiento, pero también aumentar
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. En el caso de los conectores
receptores, la cantidad de particiones de temas de Kafka también puede afectar el paralelismo.
Política de reinicio de tareas
Puedes establecer la política de reinicio de tareas de un conector, que determina el comportamiento cuando se produce una falla. Los conectores admiten las siguientes políticas:
No reiniciar nunca. El conector no reinicia las tareas con errores. Esta política es el comportamiento predeterminado. Es útil para la depuración o en situaciones en las que se requiere intervención manual después de un error.
Reinicia con una retirada exponencial. El conector reinicia una tarea con errores después de un retraso (llamado período de retirada). La demora aumenta de forma exponencial con cada falla posterior. Esta política se recomienda para la mayoría de las cargas de trabajo de producción.
Si usas la política de retirada exponencial, también establece valores para la retirada mínima y máxima. La retirada mínima debe ser superior a 60 segundos, y la retirada máxima debe ser inferior a 7,200 segundos.
Transformaciones y predicados
Managed Service para Apache Kafka admite las transformaciones y los predicados predeterminados de Kafka Connect.
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 destino). Puedes usar una transformación para enmascarar datos sensibles, agregar marcas de tiempo o cambiar el nombre de los campos.
Los predicados te permiten filtrar datos según condiciones específicas, lo que determina a qué mensajes se aplica una transformación según las propiedades de los mensajes.
Por ejemplo, para configurar un conector de receptor de modo que ignore los mensajes que contienen una
clave de encabezado DoNotProcess, agrega la siguiente configuración:
transforms=dropMessage
transforms.dropMessage.type=org.apache.kafka.connect.transforms.Filter
transforms.dropMessage.predicate=hasKey
predicates=hasKey
predicates.hasKey.type=org.apache.kafka.connect.transforms.predicates.HasHeaderKey
predicates.hasKey.name=DoNotProcess
Esta configuración hace lo siguiente:
Configura un predicado llamado
hasKeyde tipoorg.apache.kafka.connect.transforms.predicates.HasHeaderKey. Este predicado coincide con todos los mensajes que contienen un encabezado con la claveDoNotProcess.Configura una transformación llamada
dropMessagedel tipoorg.apache.kafka.connect.transforms.Filter. Esta transformación descarta todos los mensajes que coinciden con el predicado configurado.Vincula la transformación al predicado
hasKey. Esto garantiza que la transformación solo descarte los mensajes con la clave de encabezadoDoNotProcesspresente.