Ce document explique comment intégrer Apache Kafka et Pub/Sub Lite en à l'aide du connecteur Kafka de groupe Pub/Sub.
À propos du connecteur Kafka de groupe Pub/Sub
Apache Kafka est une plate-forme Open Source de streaming d'événements. Il est généralement utilisées dans des architectures distribuées pour permettre la communication les composants couplés. Pub/Sub Lite est un service géré qui permet d'envoyer de recevoir des messages de manière asynchrone. Comme avec Kafka, vous pouvez utiliser Pub/Sub Lite pour communiquer entre les composants de votre cloud de l'architecture.
Le connecteur Kafka de groupe Pub/Sub vous permet d'intégrer ces deux systèmes. Les connecteurs suivants sont inclus dans le fichier JAR du connecteur:
- Le connecteur de récepteur lit les enregistrements d'un ou de plusieurs sujets Kafka. et les publie sur Pub/Sub Lite.
- Le connecteur source lit les messages d'un sujet Pub/Sub Lite. et les publie sur Kafka.
Voici quelques scénarios dans lesquels vous pouvez utiliser le connecteur Kafka de groupe Pub/Sub:
- Vous migrez une architecture basée sur Kafka vers Google Cloud.
- Vous disposez d'un système frontend qui stocke des événements dans Kafka en dehors Google Cloud, mais vous utilisez aussi Google Cloud pour exécuter une partie de votre backend qui doivent recevoir les événements Kafka.
- Vous collectez les journaux d'une solution Kafka sur site et les envoyez Google Cloud pour l'analyse de données.
- Vous disposez d'un système frontend qui utilise Google Cloud, mais vous stockez également des données sur site à l'aide de Kafka.
Le connecteur requiert Kafka Connect qui est un framework de flux de données entre Kafka et d'autres systèmes. Pour utiliser vous devez exécuter Kafka Connect en même temps que votre cluster Kafka.
Dans ce document, nous partons du principe que vous connaissez à la fois Kafka et Pub/Sub Lite. Pour commencer à utiliser Pub/Sub Lite, consultez Publier et recevoir des messages dans Pub/Sub Lite à l'aide de la console Google Cloud
Premiers pas avec le connecteur Kafka de groupe Pub/Sub
Cette section vous guide tout au long des tâches suivantes:- Configurer le connecteur Kafka du groupe Pub/Sub
- Envoyer des événements depuis Kafka vers Pub/Sub Lite
- Envoyez des messages depuis Pub/Sub Lite vers Kafka.
Prérequis
Installer Kafka
Suivez le Guide de démarrage rapide d'Apache Kafka pour installer un Kafka à nœud unique sur votre machine locale. Effectuez ces étapes dans dans le guide de démarrage rapide:
- Téléchargez la dernière version de Kafka et extrayez-la.
- Démarrez l'environnement Kafka.
- Créez un sujet Kafka.
Authentifier
Le connecteur Kafka du groupe Pub/Sub doit s'authentifier auprès de Pub/Sub pour envoyer et recevoir des messages Pub/Sub. Pour configurer l'authentification, procédez comme suit:
- Connectez-vous à votre compte Google Cloud. Si vous débutez sur Google Cloud, créez un compte pour évaluer les performances de nos produits en conditions réelles. Les nouveaux clients bénéficient également de 300 $ de crédits gratuits pour exécuter, tester et déployer des charges de travail.
- Installez Google Cloud CLI.
-
Pour initialiser gcloudCLI, exécutez la commande suivante :
gcloud init
-
Create or select a Google Cloud project.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
-
Créez des identifiants d'authentification locaux pour votre compte Google :
gcloud auth application-default login
-
Attribuez des rôles à votre compte Google. Exécutez la commande suivante une fois pour chacun des rôles IAM suivants :
roles/pubsublite.admin
gcloud projects add-iam-policy-binding PROJECT_ID --member="user:EMAIL_ADDRESS" --role=ROLE
- en remplaçant
PROJECT_ID
par l'ID de votre projet : - Remplacez
EMAIL_ADDRESS
par votre adresse e-mail. - Remplacez
ROLE
par chaque rôle individuel.
- en remplaçant
- Installez Google Cloud CLI.
-
Pour initialiser gcloudCLI, exécutez la commande suivante :
gcloud init
-
Create or select a Google Cloud project.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
-
Créez des identifiants d'authentification locaux pour votre compte Google :
gcloud auth application-default login
-
Attribuez des rôles à votre compte Google. Exécutez la commande suivante une fois pour chacun des rôles IAM suivants :
roles/pubsublite.admin
gcloud projects add-iam-policy-binding PROJECT_ID --member="user:EMAIL_ADDRESS" --role=ROLE
- en remplaçant
PROJECT_ID
par l'ID de votre projet : - Remplacez
EMAIL_ADDRESS
par votre adresse e-mail. - Remplacez
ROLE
par chaque rôle individuel.
- en remplaçant
Télécharger le fichier JAR du connecteur
Téléchargez le fichier JAR du connecteur sur votre ordinateur local. Pour en savoir plus, consultez Procurez-vous le connecteur. dans le fichier README de GitHub.
Copier les fichiers de configuration du connecteur
Clonez ou téléchargez le Dépôt GitHub pour le connecteur.
git clone https://github.com/googleapis/java-pubsub-group-kafka-connector.git cd java-pubsub-group-kafka-connector
Copiez le contenu du répertoire
config
dans le sous-répertoireconfig
de votre installation Kafka.cp config/* [path to Kafka installation]/config/
Ces fichiers contiennent les paramètres de configuration du connecteur.
Mettre à jour votre configuration Kafka Connect
- Accédez au répertoire contenant le binaire Kafka Connect que vous téléchargée.
- Dans le répertoire binaire Kafka Connect, ouvrez le fichier nommé
config/connect-standalone.properties
dans un éditeur de texte. - Si l'élément
plugin.path property
est mis en commentaire, annulez la mise en commentaire. Mettez à jour
plugin.path property
pour inclure le chemin d'accès au fichier JAR du connecteur.Exemple :
plugin.path=/home/PubSubKafkaConnector/pubsub-group-kafka-connector-1.0.0.jar
Définissez la propriété
offset.storage.file.filename
sur un nom de fichier local. Dans en mode autonome, Kafka utilise ce fichier pour stocker les données de décalage.Exemple :
offset.storage.file.filename=/tmp/connect.offsets
Transférer des événements de Kafka vers Pub/Sub Lite
Cette section explique comment démarrer le connecteur de récepteur, publier des événements sur Kafka, puis de lire les messages transférés à partir de Pub/Sub Lite.
Utilisez la Google Cloud CLI pour créer une réservation Pub/Sub Lite.
gcloud pubsub lite-reservations create RESERVATION_NAME \ --location=LOCATION \ --throughput-capacity=4
Remplacez les éléments suivants :
- RESERVATION_NAME: nom du service Pub/Sub Lite réservation.
- LOCATION: emplacement du réservation.
Utilisez la Google Cloud CLI pour créer un sujet Pub/Sub Lite avec une abonnement.
gcloud pubsub lite-topics create LITE_TOPIC \ --location=LOCATION \ --partitions=2 \ --per-partition-bytes=30GiB \ --throughput-reservation=RESERVATION_NAME gcloud pubsub lite-subscriptions create LITE_SUBSCRIPTION \ --location=LOCATION \ --topic=LITE_TOPIC
Remplacez les éléments suivants :
- LITE_TOPIC: nom du sujet Pub/Sub Lite à recevoir des messages de Kafka.
- LOCATION: emplacement du sujet La valeur doit correspondre à emplacement de la réservation.
- RESERVATION_NAME: nom du service Pub/Sub Lite réservation.
- LITE_SUBSCRIPTION: nom d'un objet Pub/Sub Lite pour le sujet.
Ouvrez le fichier
/config/pubsub-lite-sink-connector.properties
dans un éditeur de texte. Ajouter des valeurs pour les propriétés suivantes, qui sont marquées"TODO"
dans commentaires:topics=KAFKA_TOPICS pubsublite.project=PROJECT_ID pubsublite.location=LOCATION pubsublite.topic=LITE_TOPIC
Remplacez les éléments suivants :
- KAFKA_TOPICS: liste de sujets Kafka à lire, séparés par une virgule
- PROJECT_ID: projet Google Cloud contenant vos un sujet Pub/Sub Lite.
- LOCATION: emplacement du sujet Pub/Sub Lite.
- LITE_TOPIC: sujet Pub/Sub Lite à recevoir de Kafka.
À partir du répertoire Kafka, exécutez la commande suivante:
bin/connect-standalone.sh \ config/connect-standalone.properties \ config/pubsub-lite-sink-connector.properties
Suivez les étapes décrites dans le Guide de démarrage rapide d'Apache Kafka pour écrire des événements dans votre sujet Kafka.
S'abonner à l'abonnement Pub/Sub Lite à l'aide de l'une des les méthodes présentées dans Recevoir des messages provenant d'abonnements Lite
Transférer des messages de Pub/Sub Lite vers Kafka
Cette section explique comment démarrer le connecteur source, publier des messages dans Pub/Sub Lite et lire les messages transférés depuis Kafka.
Utilisez la Google Cloud CLI pour créer une réservation Pub/Sub Lite.
gcloud pubsub lite-reservations create RESERVATION_NAME \ --location=LOCATION \ --throughput-capacity=4
Remplacez les éléments suivants :
- RESERVATION_NAME: nom du service Pub/Sub Lite réservation.
- LOCATION: emplacement du réservation.
Utilisez la Google Cloud CLI pour créer un sujet Pub/Sub Lite avec une abonnement.
gcloud pubsub lite-topics create LITE_TOPIC \ --location=LOCATION \ --partitions=2 \ --per-partition-bytes=30GiB \ --throughput-reservation=RESERVATION_NAME gcloud pubsub lite-subscriptions create LITE_SUBSCRIPTION \ --location=LOCATION \ --topic=LITE_TOPIC
Remplacez les éléments suivants :
- LITE_TOPIC: nom du sujet Pub/Sub Lite.
- LOCATION: emplacement du sujet La valeur doit correspondre à emplacement de la réservation.
- RESERVATION_NAME: nom du service Pub/Sub Lite réservation.
- LITE_SUBSCRIPTION: nom d'un objet Pub/Sub Lite pour le sujet.
Ouvrez le fichier nommé
/config/pubsub-lite-source-connector.properties
dans un éditeur de texte. Ajoutez des valeurs pour les propriétés suivantes, qui sont marquées"TODO"
dans les commentaires:topic=KAFKA_TOPIC pubsublite.project=PROJECT_ID pubsublite.location=LOCATION pubsublite.subscription=LITE_SUBSCRIPTION
Remplacez les éléments suivants :
- KAFKA_TOPIC: sujets Kafka qui reçoivent le les messages Pub/Sub.
- PROJECT_ID: projet Google Cloud contenant vos sujet Pub/Sub.
- LOCATION: emplacement du sujet Pub/Sub Lite.
- LITE_SUBSCRIPTION: sujet Pub/Sub Lite
À partir du répertoire Kafka, exécutez la commande suivante:
bin/connect-standalone.sh \ config/connect-standalone.properties \ config/pubsub-lite-source-connector.properties
Publiez des messages dans le sujet Pub/Sub Lite à l'aide de l'une des méthodes présentées dans Publier des messages dans des sujets Lite.
Lisez le message de Kafka. Suivez les étapes décrites dans le Guide de démarrage rapide d'Apache Kafka pour lire les messages du sujet Kafka.
Conversion par SMS
Un enregistrement Kafka contient une clé et une valeur, qui sont des tableaux d'octets de longueur variable. Éventuellement, un L'enregistrement Kafka peut également avoir des en-têtes, qui sont des paires clé-valeur. A Message Pub/Sub Lite comporte les champs suivants:
key
: clé Message (bytes
)data
: données du message (bytes
)attributes
: zéro, un ou plusieurs attributs. Chaque attribut est une(key,values[])
sur la carte. Un même attribut peut avoir plusieurs valeurs.event_time
: code temporel d'événement facultatif fourni par l'utilisateur.
Kafka Connect utilise des convertisseurs pour sérialiser les clés et les valeurs vers et depuis Kafka. Pour contrôler la sérialisation, définissez les propriétés suivantes dans le connecteur de configuration:
key.converter
: convertisseur utilisé pour sérialiser les clés d'enregistrement.value.converter
: convertisseur utilisé pour sérialiser les valeurs d'enregistrement.
Conversion de Kafka vers Pub/Sub Lite
Le connecteur de récepteur convertit les enregistrements Kafka en messages Pub/Sub Lite. comme suit.
Enregistrement Kafka
(SinkRecord ) |
Message Pub/Sub Lite |
---|---|
Clé | key |
Valeur | data |
En-têtes | attributes |
Horodatage | eventTime |
Type d'horodatage | attributes["x-goog-pubsublite-source-kafka-event-time-type"] |
Thème | attributes["x-goog-pubsublite-source-kafka-topic"] |
Partition | attributes["x-goog-pubsublite-source-kafka-offset"] |
Décalage (offset) | attributes["x-goog-pubsublite-source-kafka-partition"] |
Les clés, les valeurs et les en-têtes sont encodés comme suit:
- Les schémas Null sont traités comme des schémas de chaîne.
- Les charges utiles d'octets sont écrites directement sans conversion.
- Les charges utiles de chaîne, d'entiers et à virgule flottante sont encodées dans une séquence de Octets UTF-8.
- Toutes les autres charges utiles sont encodées dans un tampon de protocole
Value
puis converti en chaîne d'octets.- Les champs de chaîne imbriqués sont encodés dans un tampon de protocole
Value
. - Les champs d'octets imbriqués sont encodés sous la forme d'un tampon de protocole
Value
contenant le Octets encodés en base64. - Les champs numériques imbriqués sont encodés en double dans un tampon de protocole
Value
. - Les cartes comportant des clés de tableau, de carte ou de structure ne sont pas acceptées.
- Les champs de chaîne imbriqués sont encodés dans un tampon de protocole
Conversion de Pub/Sub Lite vers Kafka
Le connecteur source convertit les messages Pub/Sub Lite en enregistrements Kafka. comme suit:
Message Pub/Sub Lite | Enregistrement Kafka
(SourceRecord )
|
---|---|
key |
Clé |
data |
Valeur |
attributes |
En-têtes |
event_time |
Timestamp. Si event_time n'est pas présent, l'état
de temps est utilisé. |
Options de configuration
En plus des configurations fournies par l'API Kafka Connect, est compatible avec les configurations Pub/Sub Lite suivantes.
Options de configuration du connecteur de récepteur
Le connecteur de récepteur accepte les options de configuration suivantes.
Paramètre | Type de données | Description |
---|---|---|
connector.class |
String |
Obligatoire. Classe Java du connecteur. Pour
connecteur de récepteur Pub/Sub Lite, la valeur doit être
com.google.pubsublite.kafka.sink.PubSubLiteSinkConnector
|
gcp.credentials.file.path |
String |
Facultatif. Chemin d'accès à un fichier qui stocke les identifiants Google Cloud pour authentifier Pub/Sub Lite. |
gcp.credentials.json |
String |
Facultatif. Un blob JSON contenant Google Cloud pour pour authentifier Pub/Sub Lite. |
pubsublite.location |
String |
Obligatoire. L'emplacement un sujet Pub/Sub Lite. |
pubsublite.project |
String |
Obligatoire. La ressource Google Cloud contenant un sujet Pub/Sub Lite. |
pubsublite.topic |
String |
Obligatoire. Le sujet Pub/Sub Lite à publier des enregistrements Kafka. |
topics |
String |
Obligatoire. Une liste de sujets Kafka séparés par une virgule à à lire. |
Options de configuration du connecteur source
Le connecteur source accepte les options de configuration suivantes.
Paramètre | Type de données | Description |
---|---|---|
connector.class |
String |
Obligatoire. Classe Java du connecteur. Pour
connecteur source Pub/Sub Lite, la valeur doit être
com.google.pubsublite.kafka.source.PubSubLiteSourceConnector
|
gcp.credentials.file.path |
String |
Facultatif. Chemin d'accès à un fichier qui stocke les identifiants Google Cloud pour authentifier Pub/Sub Lite. |
gcp.credentials.json |
String |
Facultatif. Un blob JSON contenant Google Cloud pour pour authentifier Pub/Sub Lite. |
kafka.topic |
String |
Obligatoire. Le sujet Kafka qui reçoit les messages de Pub/Sub Lite. |
pubsublite.location |
String |
Obligatoire. L'emplacement un sujet Pub/Sub Lite. |
pubsublite.partition_flow_control.bytes |
Long |
Nombre maximal d'octets en attente par partition Pub/Sub Lite. Valeur par défaut: 20 000 000 |
pubsublite.partition_flow_control.messages |
Long |
Nombre maximal de messages en attente par partition Pub/Sub Lite. Valeur par défaut : |
pubsublite.project |
String |
Obligatoire. Le projet Google Cloud contenant le un sujet Pub/Sub Lite. |
pubsublite.subscription |
String |
Obligatoire. Nom de l'instance Pub/Sub Lite à partir duquel extraire les messages. |
Étape suivante
- Découvrez les différences entre Kafka et Pub/Sub.
- En savoir plus sur le connecteur Kafka de groupe Pub/Sub
- Voir le connecteur Kafka de groupe Pub/Sub Dépôt GitHub