Présentation de Kafka Connect

Kafka Connect est l'outil privilégié pour l'intégration de données pour les développeurs Kafka. Il fournit un framework permettant de connecter Kafka à des systèmes externes tels que des bases de données, des files d'attente de messages et des systèmes de fichiers.

Kafka Connect fournit un ensemble organisé de plug-ins de connecteur intégrés, testés et gérés par Google Cloud. Ces plug-ins de connecteur sont automatiquement corrigés et mis à niveau, ce qui simplifie la maintenance et assure la compatibilité.Google Cloud fournit également une surveillance et une journalisation intégrées pour maintenir l'intégrité de vos pipelines.

Les API Kafka Connect sont proposées dans le service Google Cloud Managed Service pour Apache Kafka. Ces API sont accessibles via managedkafka.googleapis.com et sont intégrées à la console Google Cloud et aux bibliothèques clientes. Pour gérer Kafka Connect, vous pouvez utiliser la console Google Cloud , la gcloud CLI, l'API Managed Kafka, les bibliothèques clientes cloud ou Terraform.

Cas d'utilisation de Kafka Connect

Kafka Connect permet d'intégrer des données entre votre cluster Managed Service pour Apache Kafka et divers autres systèmes. Voici quelques cas d'utilisation clés :

  • Migrez vos déploiements Kafka existants vers Managed Service pour Apache Kafka.

  • Répliquez votre cluster Managed Service pour Apache Kafka dans une autre région pour la reprise après sinistre.

  • Transférez des données depuis Managed Service pour Apache Kafka vers BigQuery, Cloud Storage ou Pub/Sub.

Termes Kafka Connect

Ces sections présentent certains composants clés de Kafka Connect.

Cluster de connexion

Un cluster Connect est un déploiement distribué de Kafka Connect avec des configurations et des plug-ins de connecteur prédéfinis. Chaque cluster Connect est associé à un cluster Managed Service pour Apache Kafka principal. Ce cluster principal stocke l'état des connecteurs exécutés sur le cluster Connect.

En règle générale, le cluster Managed Service pour Apache Kafka principal sert également de cible pour tous les connecteurs sources et de source pour tous les connecteurs cibles exécutés sur le cluster Connect associé.

Un même cluster Managed Service pour Apache Kafka peut comporter plusieurs clusters Connect. Si vous exécutez MirrorMaker 2.0, un cluster Connect peut se connecter à des clusters Managed Service pour Apache Kafka non principaux ou à des clusters Kafka autogérés pour lire ou écrire des données de sujet. Ce processus permet la réplication des sujets entre différents clusters.

Du point de vue du modèle de ressources, un cluster Connect est une ressource distincte d'un cluster Managed Service pour Apache Kafka.

Supposons que vous disposiez d'un cluster Managed Service pour Apache Kafka dans lequel vous stockez les données de trafic du site Web. Vous souhaitez diffuser ces données dans BigQuery pour les analyser. Vous pouvez créer un cluster Connect et utiliser un connecteur de récepteur BigQuery pour transférer les données de vos sujets Kafka vers BigQuery. Ce cluster Connect est associé à votre cluster Managed Service pour Apache Kafka en tant que cluster principal.

Plug-in de connecteur

Package logiciel permettant de créer des connecteurs. Considérez-le comme le code qui définit la logique du connecteur.

  • Un connecteur peut être un connecteur source ou récepteur. Un connecteur source écrit les données d'une source dans un cluster Managed Service pour Apache Kafka.

  • Un connecteur de récepteur écrit les données d'un cluster Managed Service pour Apache Kafka dans un récepteur.

Managed Service pour Apache Kafka est compatible avec plusieurs types de plug-ins de connecteur intégrés que vous pouvez configurer pour créer des connecteurs. Ces connecteurs offrent des intégrations avec des services courants tels que Pub/Sub ou BigQuery. Voici les plug-ins de connecteur :

  • Plug-in de connecteur de récepteur BigQuery

  • Plug-in de connecteur de récepteur Cloud Storage

  • Plug-in de connecteur source Pub/Sub

  • Plug-in de connecteur de récepteur Pub/Sub

  • Plug-ins de connecteur MirrorMaker 2.0

Connecteur

Un connecteur est une instance en cours d'exécution d'un plug-in de connecteur dans un cluster Connect spécifique. Vous pouvez créer plusieurs connecteurs à partir du même plug-in de connecteur, chacun avec sa propre configuration spécifique. Par exemple, la configuration peut inclure différents détails d'authentification et paramètres opérationnels. Un connecteur est déployé, configuré et géré dans le cluster Connect. Vous pouvez le démarrer, l'arrêter, le mettre en veille, le redémarrer et mettre à jour sa configuration.

Les composants d'un connecteur sont décrits dans les sections suivantes.

Visiteurs ayant déjà réalisé une conversion

Les convertisseurs sont des composants essentiels de Kafka Connect, responsables de la sérialisation et de la désérialisation. Ils traduisent les données entre le format brut des octets sur les sujets Kafka (par exemple, au format Avro ou JSON) et la représentation interne et structurée des données de Kafka Connect.

Rôle des convertisseurs

  • Pour les connecteurs Sink, les convertisseurs désérialisent les données du format filaire du sujet dans la représentation interne et structurée des données de Kafka Connect, que le connecteur utilise ensuite pour écrire dans le système cible.

  • Pour les connecteurs sources, les convertisseurs sérialisent les données à partir de la représentation interne et structurée des données Kafka Connect fournies par le connecteur, et les convertissent au format filaire spécifié pour le sujet Kafka.

Ce format interne sert de représentation commune, ce qui permet diverses étapes de traitement intermédiaires. Ces étapes incluent des primitives telles que des filtres, des prédicats, des transformations et des convertisseurs, qui fonctionnent tous sur ce format interne unifié. En utilisant un format interne abstrait, la logique de ces étapes intermédiaires reste indépendante des formats de données d'entrée ou de sortie spécifiques.

Un convertisseur devient nécessaire lorsque vous devez interagir avec les données au-delà de leur simple transmission. Plus précisément, les convertisseurs sont nécessaires dans les cas où vous devez effectuer des étapes de traitement intermédiaires, telles que des prédicats ou des transformations, de manière précise et en tenant compte de la structure.

Si vous souhaitez uniquement déplacer une chaîne d'octets (même si elle est au format JSON) d'une source vers Kafka sans aucune manipulation, un convertisseur n'est pas nécessaire.

Dans une configuration de connecteur, si vous ne spécifiez pas les convertisseurs de clé et de valeur, le connecteur utilise la valeur ByteArrayConverter par défaut. La valeur org.apache.kafka.connect.converters.ByteArrayConverter n'applique aucune transformation aux données et les transmet dans leur format d'origine.

Convertisseurs compatibles

Pour cette version, Google Cloud est compatible avec les convertisseurs intégrés suivants :

  • org.apache.kafka.connect.converters.ByteArrayConverter : convertit les données en tableaux d'octets et inversement. Il s'agit du convertisseur par défaut. Il transmet les données via le connecteur sous forme d'octets bruts sous-jacents.

  • org.apache.kafka.connect.json.JsonConverter : convertit les données au format JSON et inversement.

  • org.apache.kafka.connect.storage.StringConverter : convertit les données au format String et inversement.

  • org.apache.kafka.connect.converters.ByteArrayConverter : convertit les données en tableaux d'octets et inversement.

  • org.apache.kafka.connect.converters.DoubleConverter : convertit les données au format Double et inversement.

  • org.apache.kafka.connect.converters.FloatConverter : convertit les données au format float et inversement.

  • org.apache.kafka.connect.converters.IntegerConverter : convertit les données au format Integer et inversement.

  • org.apache.kafka.connect.converters.LongConverter : convertit les données au format long et inversement.

  • org.apache.kafka.connect.converters.ShortConverter : convertit les données au format court et inversement.

  • org.apache.kafka.connect.converters.BooleanConverter : convertit les données au format booléen et inversement.

  • io.confluent.connect.avro.AvroConverter : convertit les données au format Apache Avro et inversement.

Pour cette version, Kafka Connect n'est pas compatible avec la validation par rapport à un schéma distant à l'aide de Schema Registry.

Pour en savoir plus sur les convertisseurs recommandés pour chaque connecteur, consultez la documentation du connecteur spécifique.

Configuration par défaut du convertisseur

Le convertisseur de clé et de valeur par défaut pour tous les connecteurs compatibles est org.apache.kafka.connect.json.JsonConverter.

Lorsque vous configurez vos connecteurs, vous devez spécifier le convertisseur approprié pour la clé et la valeur de vos messages Kafka. Par exemple, si vous utilisez des données JSON, utilisez JsonConverter. Si vos données sont au format chaîne, utilisez StringConverter.

Voici quelques configurations courantes :

  • tasks.max : nombre maximal de tâches à créer pour ce connecteur. Cela contrôle le parallélisme du connecteur. Augmenter le nombre de tâches peut améliorer le débit, mais cela augmente également la consommation de ressources (processeur et mémoire). La valeur optimale dépend de la charge de travail et des ressources allouées aux nœuds de calcul de votre cluster Connect. Pour les connecteurs de récepteur, elle dépend également du nombre de partitions de topics Kafka.

  • value.converter : convertisseur à utiliser pour sérialiser la valeur des messages avant de les envoyer au bucket Cloud Storage. Voici quelques convertisseurs courants :

    • org.apache.kafka.connect.json.JsonConverter : pour les données JSON. Vous devrez souvent définir value.converter.schemas.enable=false lorsque vous utiliserez ce convertisseur avec du code JSON brut (sans schéma).

    • org.apache.kafka.connect.converters.ByteArrayConverter : pour préserver le contenu exact des messages sur deux systèmes.

    • org.apache.kafka.connect.storage.StringConverter : pour les chaînes de texte brut.

  • key.converter : convertisseur à utiliser pour sérialiser la clé des messages. Les mêmes options de convertisseur que pour value.converter s'appliquent. Si vos messages ne contiennent pas de clés, vous pouvez souvent utiliser org.apache.kafka.connect.storage.StringConverter.

  • value.converter.schemas.enable : pour un connecteur de récepteur, définir cette option sur true lors de l'utilisation de org.apache.kafka.connect.json.JsonConverter indique à Kafka Connect de rechercher et d'utiliser un schéma intégré au message Kafka entrant. Lorsque la valeur est définie sur false (par défaut), Kafka Connect s'attend à ce que les données soient au format JSON brut, sans schéma intégré.

Transformations (facultatif)

Les transformations permettent de manipuler ou d'enrichir les données pendant le pipeline de données. Les transformations vous permettent de modifier des messages individuels avant de les envoyer à Managed Service pour Apache Kafka (pour les connecteurs sources) ou au système externe (pour les connecteurs de destination). Vous pouvez utiliser une transformation pour masquer des données sensibles, ajouter des codes temporels ou renommer des champs.

Prédicats (facultatif)

Les prédicats permettent de filtrer les données en fonction de conditions spécifiques. Les prédicats servent de filtres pour appliquer des transformations. Ils déterminent les messages auxquels une transformation s'applique en fonction des propriétés des messages.

Gérer Kafka Connect dans Google Cloud

Avec Kafka Connect, vous pouvez vous concentrer sur le déploiement des connecteurs, tandis que Google Cloudgère l'infrastructure sous-jacente et les complexités opérationnelles. Voici une explication détaillée de ce que Google Cloud automatise et de ce que vous pouvez configurer :

Le service Kafka Connect automatise les opérations suivantes :

  • Provisionnement des nœuds de calcul Kafka Connect : lorsque vous créez un cluster Connect, le service Kafka Connect provisionne automatiquement un cluster de nœuds de calcul dans Kubernetes.

  • Mise en réseau : le service Kafka Connect configure le réseau pour permettre la communication entre les nœuds de calcul, les brokers Managed Service pour Apache Kafka et les systèmes externes. Dans certains cas, vous devrez peut-être modifier vos paramètres réseau existants.

  • Résilience zonale : le service Kafka Connect distribue les nœuds de calcul sur au moins trois zones, ce qui garantit que le traitement des données peut se poursuivre en cas de panne zonale.

  • Authentification : le service Kafka Connect configure également l'authentification avec les brokers Kafka, ce qui garantit des connexions sécurisées.

  • Déploiements et mises à niveau : le service Kafka Connect gère les modifications de configuration des nœuds de calcul, les mises à niveau de version et les correctifs de sécurité, ce qui garantit que vos déploiements sont toujours à jour.

Dans le service Kafka Connect, vous pouvez effectuer les configurations suivantes :

  • Contraintes de capacité et de réseau : définissez des limites de ressources et des configurations réseau pour optimiser les performances et les coûts.

  • Surveillance et journalisation : accédez aux journaux et aux métriques de vos connecteurs pour surveiller les performances et résoudre les problèmes.

  • Gestion du cycle de vie des connecteurs : mettez en pause, reprenez, redémarrez ou arrêtez les connecteurs selon vos besoins pour gérer vos pipelines de données.

Limites

  • Le service Kafka Connect n'accepte que le cluster Managed Service pour Apache Kafka comme cluster Kafka principal. Le cluster principal est celui dans lequel le cluster Kafka Connect écrit ses métadonnées.

  • Le service n'est pas compatible avec l'importation de plug-ins de connecteurs personnalisés dans votre cluster Kafka Connect.

Apache Kafka® est une marque déposée d'Apache Software Foundation ou de ses filiales aux États-Unis et/ou dans d'autres pays.