Ce document fournit des conseils aux développeurs, aux architectes et aux décideurs sur les options de migration des données Kafka externes vers Google Cloud, de reprise après sinistre, d' intégration à BigQuery et de capture des données modifiées (CDC) à partir de bases de données.
Vous pouvez déplacer des données Kafka vers un cluster Google Cloud Managed Service pour Apache Kafka ou vers un autre produit Google, tel qu'une table BigQuery ou un emplacement Cloud Storage. Google CloudPour obtenir un résumé, consultez le tableau suivant.
| Cas d'utilisation | Source de données | Destination des données | Solution recommandée |
|---|---|---|---|
| Copier les données | Cluster Apache Kafka autogéré | Cluster Managed Service pour Apache Kafka | Créez un connecteur source MirrorMaker 2.0 dans un cluster Connect. |
| Analyser les données dans un entrepôt de données | Cluster Managed Service pour Apache Kafka | BigQuery | Créez un connecteur de récepteur BigQuery dans un cluster Connect. |
| Migrer les données avec synchronisation | Cluster Kafka autogéré | Cluster Managed Service pour Apache Kafka | Créez un connecteur source MirrorMaker 2.0 dans un cluster Connect. |
| Répliquer le cluster entre les régions | Managed Service pour Apache Kafka (région A) | Cluster Managed Service pour Apache Kafka (région B) | Créez un connecteur source MirrorMaker 2.0 dans un cluster Connect. |
| Sauvegarder des données | Managed Service pour Apache Kafka | Cloud Storage | Créez un connecteur de récepteur Cloud Storage dans un cluster Connect. |
| Capturer les modifications de la base de données | Base de données relationnelle, Spanner ou Bigtable | Managed Service pour Apache Kafka | Exécutez un pipeline Apache Beam sur Dataflow. |
| Traiter les données avec Apache Spark | Managed Service pour Apache Kafka | Apache Spark | Exécutez Managed Service pour Apache Spark sur Compute Engine. |
Solutions recommandées pour vous aider à déplacer vos données Kafka
Google Cloud propose plusieurs solutions pour intégrer vos données Kafka. Chaque offre présente des avantages uniques en fonction de vos besoins et de votre infrastructure existante. La meilleure méthode d'intégration pour vous dépend de vos systèmes existants, de vos compétences actuelles et de votre capacité à gérer l'infrastructure.
Utiliser Kafka Connect
Google Cloud Managed Service pour Apache Kafka vous permet de provisionner des clusters qui exécutent Kafka Connect. L'objectif principal de Kafka Connect est de connecter votre cluster Managed Service pour Apache Kafka à d'autres systèmes pour des cas d'utilisation tels que la migration, la sauvegarde, la reprise après sinistre, la haute disponibilité et l'intégration des données. Nous vous recommandons d'utiliser Kafka Connect pour les tâches d'intégration de données les plus courantes pour Managed Service pour Apache Kafka. Kafka Connect présente plusieurs avantages :
Connectez vos clusters Kafka externes à différentes Google Cloud sources de données et récepteurs à l'aide de connecteurs intégrés. Les clusters Kafka externes incluent Managed Service pour Apache Kafka, les clusters Kafka sur site et les déploiements cloud personnalisés. Les connecteurs compatibles sont les suivants :
Connecteurs MirrorMaker 2.0
Récepteur BigQuery
Récepteur Cloud Storage
Source Pub/Sub
Récepteur Pub/Sub
Bénéficiez de l'évolutivité et de la fiabilité de l'infrastructure de Google Cloud's qui garantit que vos pipelines de données peuvent gérer des volumes de données croissants et maintenir une haute disponibilité.
Déchargez la charge opérationnelle liée à la gestion de l'infrastructure Kafka Connect sur Google Cloud.
Surveillez et gérez vos clusters Kafka Connect à l'aide des outils de surveillance et de journalisation de Google Cloud's.
Pour en savoir plus sur Kafka Connect, consultez la présentation de Kafka Connect.
Utiliser Dataflow
Google CloudLe service de traitement de données sans serveur de propose l'intégration de données par flux et par lot sans serveur. Vous pouvez utiliser Dataflow pour déplacer des données Kafka vers différents récepteurs, tels que des ensembles de données BigQuery ou des buckets Cloud Storage. Vous pouvez déployer des pipelines Dataflow à l'aide d'un modèle Dataflow ou d'un pipeline Apache Beam. Choisissez votre déploiement Dataflow en fonction des facteurs suivants :
Pour des déploiements plus simples et plus rapides, en particulier pour les tâches d'intégration de données courantes, choisissez des modèles Dataflow prédéfinis qui peuvent être déployés directement depuis la console.
Pour une flexibilité, un contrôle et des cas d'utilisation complexes nécessitant une logique personnalisée, choisissez un pipeline Apache Beam.
Modèles intégrés
Les modèles Dataflow intégrés sont des pipelines Apache Beam prédéfinis que vous pouvez déployer dans un assistant de tâches facile à utiliser et sans code. Dataflow fournit plusieurs modèles Dataflow pour exporter des données Kafka vers Google Cloud.
Pipelines Apache Beam personnalisés
Les modèles Dataflow présentés dans la section précédente peuvent ne pas répondre à toutes vos exigences. Par exemple, vous devrez peut-être intégrer vos données Kafka à une source ou un récepteur qui n'est pas compatible avec ces modèles. Vous devrez peut-être également effectuer des transformations, des normalisations ou des mutations sur les enregistrements.
Dans ces scénarios, vous pouvez utiliser le SDK Apache Beam pour créer des pipelines qui peuvent être exécutés sur Dataflow.
Pour en savoir plus sur le modèle de programmation Apache Beam, y compris les concepts clés tels que les pipelines, les PCollections, les transformations et les exécuteurs, consultez la page Modèle de programmation pour Apache Beam.
Pour obtenir des ressources sur la prise en main de la programmation Apache Beam, y compris l'installation du SDK, les guides de programmation et les environnements interactifs, consultez la page Utiliser Apache Beam pour créer des pipelines. Le document fournit également des liens pour concevoir, créer et tester votre pipeline, ainsi que des exemples de pipelines de streaming.
Si vous devez écrire des flux de modifications (capture des données modifiées) dans Kafka, nous vous recommandons d'utiliser les composants suivants dans votre pipeline Dataflow :
DebeziumIO pour les bases de données relationnelles telles que Cloud SQL, MySQL, Postgres et SQL Server.
Flux de modifications Spanner pour Spanner
Flux de modifications Bigtable pour Bigtable
Dataflow fournit plusieurs ressources pour utiliser Kafka avec votre pipeline Dataflow :
Choisir entre Kafka Connect et Dataflow
Lors du transfert de données entre des clusters Kafka, en particulier vers Managed Service pour Apache Kafka, Kafka Connect est généralement la solution de référence. MirrorMaker 2.0, qui fait partie de Kafka Connect, est bien adapté aux tâches telles que la migration de cluster, la sauvegarde, la reprise après sinistre ou les transformations de base. Kafka Connect est compatible avec les transformations d'enregistrement à la fois pour les modifications de base par message.
Pour la migration de données à volume élevé nécessitant des transformations complexes, Dataflow est le choix le plus approprié. La force de Dataflow réside dans sa capacité à effectuer des opérations complexes basées sur les flux, y compris le nettoyage, l'enrichissement et l'agrégation des données, avant que les données n'atteignent le cluster Managed Service pour Apache Kafka cible. Dataflow permet de joindre plusieurs flux de données avec une logique avancée de fenêtrage et d'alignement, qui sont essentielles pour la corrélation et l'agrégation de données complexes. Cette fonctionnalité différencie Dataflow de Kafka Connect, qui est limité aux modifications de base par message.
Utiliser Managed Service pour Apache Spark pour les pipelines Spark
Ce service entièrement géré pour les charges de travail Apache Spark et Hadoop est adapté si vous disposez de pipelines Spark existants. Les utilisateurs d'Apache Spark peuvent connecter des déploiements Spark existants à Managed Service pour Apache Kafka à l'aide de Managed Service pour Apache Spark. Managed Service pour Apache Spark est le service entièrement géré de Google Cloud pour les pipelines Spark. Il inclut des outils de gestion du cycle de vie des clusters. Par exemple, si vous disposez d'une application Spark qui traite des données de streaming provenant de Kafka et que vous souhaitez migrer cette application vers Google Cloud, Managed Service pour Apache Spark est un choix approprié.
Pour Spark Streaming et Kafka, Apache Spark fournit un guide d'intégration. Pour faciliter le déploiement des workflows Kafka courants, Managed Service pour Apache Spark fournit un certain nombre de modèles Open Source.