Cette rubrique explique comment créer un connecteur de réception AnalyticDB qui utilise AnalyticDB for MySQL pour exporter les données d'un sujet source Message Queue for Apache Kafka vers AnalyticDB for MySQL ou AnalyticDB for PostgreSQL.
Prérequis
Avant de commencer, assurez-vous que les prérequis suivants sont remplis :
-
Message Queue for Apache Kafka
Activez la fonctionnalité de connecteur pour l'instance Message Queue for Apache Kafka. Pour plus d'informations, consultez la section Activer les connecteurs.
Créez un sujet source pour l'instance Message Queue for Apache Kafka. Pour plus d'informations, consultez la section Étape 1 : Créer un sujet.
-
Function Compute
-
AnalyticDB for MySQL et AnalyticDB for PostgreSQL
AnalyticDB for MySQL : Dans la console AnalyticDB for MySQL, créez un cluster, créez un compte de base de données, connectez-vous au cluster, puis créez une base de données. Pour plus d'informations, consultez les sections Créer un cluster, Créer un compte de base de données, Se connecter à un cluster et Créer une base de données.
AnalyticDB for PostgreSQL : Dans la console AnalyticDB for PostgreSQL, créez une instance, créez un compte de base de données, puis connectez-vous à la base de données. Pour plus d'informations, consultez les sections Créer une instance, Créer et gérer des comptes et Se connecter à une instance.
Notes d'utilisation
Vous ne pouvez exporter les données d'un sujet source d'une instance Message Queue for Apache Kafka vers AnalyticDB for MySQL ou AnalyticDB for PostgreSQL via AnalyticDB for MySQL que si tous les services se trouvent dans la même région. Pour plus d'informations sur les limites des connecteurs, consultez la section Limites.
Cette fonctionnalité est alimentée par Function Compute. Function Compute propose un quota gratuit. Des frais s'appliquent pour l'utilisation des ressources dépassant ce quota. Pour plus d'informations, consultez la section Présentation de la facturation de Function Compute.
Vous pouvez interroger les journaux d'appels de fonction dans Function Compute pour résoudre les problèmes. Pour plus d'informations, consultez la section Configurer la journalisation.
Lors de l'exportation des données, Message Queue for Apache Kafka sérialise les messages sous forme de chaînes UTF-8. Les formats de données binaires ne sont pas pris en charge.
Si le connecteur de réception AnalyticDB utilise un endpoint privé, l'environnement d'exécution Function Compute ne peut pas y accéder par défaut. Pour activer la connectivité réseau, configurez le service de fonction dans la console Function Compute avec le même VPC et le même vSwitch que votre instance AnalyticDB de destination. Pour plus d'informations, consultez la section Mettre à jour un service.
-
Message Queue for Apache Kafka crée automatiquement un rôle lié au service lorsque vous créez un connecteur.
Si aucun rôle lié au service n'existe, Message Queue for Apache Kafka en crée un automatiquement. Ce rôle accorde à Message Queue for Apache Kafka les autorisations nécessaires pour exporter les données.
Si un rôle lié au service existe déjà, Message Queue for Apache Kafka n'en crée pas un autre.
Pour plus d'informations sur les rôles liés au service, consultez la section Rôles liés au service.
Procédure
Pour exporter les données d'un sujet source d'une instance Message Queue for Apache Kafka vers une base de données AnalyticDB à l'aide d'un connecteur de réception AnalyticDB, suivez les étapes ci-dessous :
-
Facultatif : Créez le sujet et le group requis pour le connecteur de réception AnalyticDB
Si vous n'avez pas besoin de personnaliser le sujet et le Group, vous pouvez ignorer cette étape et choisir de les créer automatiquement à l'étape suivante.
ImportantCertains sujets requis par le connecteur de réception AnalyticDB doivent utiliser le
stockage local. Pour les instances Message Queue for Apache Kafka exécutant la version majeure 0.10.2, vous ne pouvez pas créer manuellement des sujets utilisant lestockage local. Ces sujets ne peuvent être créés qu'automatiquement. -
Configurer les services
-
Vérifier le résultat
Créer les sujets requis
Vous pouvez créer manuellement les cinq sujets requis par le connecteur de réception AnalyticDB dans la console Message Queue for Apache Kafka : un sujet d'offset de tâche, un sujet de configuration de tâche, un sujet d'état de tâche, un sujet de file d'attente de lettres mortes et un sujet de données d'erreur. Ces sujets ont des exigences différentes concernant le nombre de partitions et le moteur de stockage. Pour plus d'informations, consultez le tableau Paramètres de configuration du service source.
Connectez-vous à la console ApsaraMQ for Kafka.
-
Sur la page Overview, sélectionnez une région dans la section Resource Distribution.
ImportantVous devez créer les sujets dans la même région que votre application, c'est-à-dire la région où l'instance ECS est déployée. Les sujets ne peuvent pas être utilisés entre différentes régions. Par exemple, si un sujet est créé dans la région Chine (Pékin), le producteur et le consommateur de messages doivent également s'exécuter sur une instance ECS dans la région Chine (Pékin).
Sur la page Instances, cliquez sur le nom de l'instance cible.
Dans le volet de navigation de gauche, cliquez sur Topics.
Sur la page Topics, cliquez sur Create Topic.
-
Dans le panneau Create Topic, définissez les propriétés du sujet, puis cliquez sur OK.
Paramètre
Description
Exemple
Name
Le nom du sujet.
RemarqueDans Kafka, les noms de sujets tels que
xxx_xxxetxxx.xxxsont considérés comme identiques. Une erreur est signalée si vous tentez de créer un sujet avec un nom dupliqué.demo
Description
Une brève description du sujet.
test demo
Partitions
Le nombre de partitions dans le sujet.
12
Storage Engine
RemarqueActuellement, vous pouvez sélectionner un type de moteur de stockage uniquement pour les instances Professional Edition non Serverless. Pour les autres instances, ce paramètre n'est pas pris en charge et est défini par défaut sur Cloud Storage.
Le moteur de stockage pour les messages du sujet.
ApsaraMQ for Kafka prend en charge les deux moteurs de stockage suivants.
Cloud Storage : La couche sous-jacente utilise des disques Alibaba Cloud. Ce moteur de stockage offre une faible latence, des performances élevées, une durabilité élevée et une fiabilité élevée. Il utilise un mécanisme distribué à trois réplicas. Si l'Instance Edition de l'instance est Standard (High Write), le moteur de stockage ne peut être que Cloud Storage.
Local Storage : Utilise l'algorithme de réplication ISR (In-Sync Replica) natif de Kafka et un mécanisme distribué à trois réplicas.
Cloud Storage
Message Type
Le type de messages du sujet.
Normal Message : Par défaut, les messages ayant la même clé sont distribués vers la même partition, et les messages au sein d'une partition sont stockés dans l'ordre de leur envoi. Si une machine du cluster tombe en panne, les messages peuvent devenir désordonnés. Lorsque vous définissez Storage Engine sur Cloud Storage, Normal Message est sélectionné par défaut.
Partitionally Ordered Message : Par défaut, les messages ayant la même clé sont distribués vers la même partition, et les messages au sein d'une partition sont stockés dans l'ordre de leur envoi. Si une machine du cluster tombe en panne, l'ordre des messages est toujours garanti au sein de la partition. Cependant, l'envoi de messages vers certaines partitions peut échouer. Les opérations normales reprennent après la récupération des partitions. Lorsque vous définissez Storage Engine sur Local Storage, Partitionally Ordered Message est sélectionné par défaut.
Normal Message
Log Cleanup Policy
La politique de nettoyage des journaux du sujet.
Lorsque vous définissez Storage Engine sur Local Storage, vous devez configurer la Log Cleanup Policy. Vous ne pouvez définir le moteur de stockage sur Local Storage que pour les instances Professional Edition. Les instances Standard Edition ne sont pas prises en charge.
ApsaraMQ for Kafka prend en charge les deux politiques de nettoyage suivantes.
Delete : Politique de nettoyage des messages par défaut. Si la capacité du disque est suffisante, les messages sont conservés pendant la durée de rétention maximale. Si la capacité du disque est insuffisante (généralement, lorsque l'utilisation du disque dépasse 85 %), les anciens messages sont supprimés prématurément pour garantir la disponibilité du service.
Compact : Utilise la politique de nettoyage Kafka Log Compaction. La politique Log Compaction garantit que pour les messages ayant la même clé, la dernière valeur est toujours conservée. Cela s'applique principalement aux scénarios tels que la récupération de l'état après une panne système ou le rechargement du cache après un redémarrage système. Par exemple, lors de l'utilisation de Kafka Connect ou Confluent Schema Registry, vous devez utiliser un sujet Kafka Compact pour stocker l'état du système ou les informations de configuration.
ImportantLes sujets Compact sont généralement utilisés uniquement dans certains composants de l'écosystème, tels que Kafka Connect ou Confluent Schema Registry. Ne définissez pas cette propriété pour les sujets dans d'autres scénarios d'envoi et de réception de messages. Pour plus d'informations, consultez la bibliothèque de démonstration ApsaraMQ for Kafka.
Compact
Tag
Les tags du sujet.
demo
Après la création du sujet, il s'affiche dans la liste sur la page Topics.
Créer le group requis par le connecteur de réception AnalyticDB
Vous pouvez créer manuellement le group pour la tâche de synchronisation des données du connecteur de réception AnalyticDB dans la console Message Queue for Apache Kafka. Le nom du group doit être connect-Nom de la tâche. Pour plus d'informations, consultez la section Paramètres du service source.
Connectez-vous à la console ApsaraMQ for Kafka.
Sur la page Overview, sélectionnez une région dans la section Resource Distribution.
Sur la page Instances, cliquez sur le nom de l'instance cible.
Dans le volet de navigation de gauche, cliquez sur Groups.
Sur la page Groups, cliquez sur Create Group.
-
Dans le panneau Create Group, saisissez un nom pour le group dans la zone de texte Group ID, entrez une brève description dans la zone de texte Description, ajoutez des tags au group, puis cliquez sur OK.
Après la création du group, il s'affiche dans la liste sur la page Groups.
Créer et déployer un connecteur de sortie AnalyticDB
Connectez-vous à la console ApsaraMQ for Kafka.
Sur la page Overview, sélectionnez une région dans la section Resource Distribution.
Dans le volet de navigation de gauche, cliquez sur Connectors.
Sur la page Connectors, sélectionnez l'instance à laquelle appartient le connecteur dans la liste déroulante Select Instance et cliquez sur Create Connector.
-
Dans l'assistant Create Connector, effectuez les étapes suivantes.
-
Sous l'onglet Configure Basic Information, configurez les paramètres selon vos besoins, puis cliquez sur Next.
Parameter
Description
Example value
Name
Nom du connecteur. Règles de nommage :
Le nom doit comporter entre 1 et 48 caractères. Le premier caractère peut être une lettre majuscule, une lettre minuscule ou un chiffre. Les caractères suivants peuvent être des lettres minuscules, des chiffres ou des traits d'union (-).
Le nom doit être unique au sein d'une même instance Message Queue for Apache Kafka.
Une tâche de synchronisation des données pour un Connecteur doit utiliser un Group nommé connect-nom de la tâche. Si vous ne créez pas manuellement le Group, le système le créera automatiquement pour vous.
kafka-adb-sink
Instance
Le nom et l'ID de l'instance sont renseignés automatiquement.
demo alikafka_post-cn-st21p8vj****
-
Sous l'onglet Configure Source Service, sélectionnez Message Queue for Apache Kafka comme Data Source, configurez les paramètres suivants, puis cliquez sur Next.
Tableau 1. Paramètres du service source
Parameter
Description
Example
Data Source Topic
Rubrique à partir de laquelle synchroniser les données.
adb-test-input
Consumer Thread Concurrency
Nombre de threads de consommateur simultanés pour la rubrique source. Valeur par défaut : 6. Valeurs valides :
1
2
3
6
12
6
Consumer Offset
Position à partir de laquelle la consommation commence. Valeurs valides :
Earliest Offset : démarre la consommation à partir du décalage disponible le plus ancien.
Latest Offset : démarre la consommation à partir du décalage disponible le plus récent.
Earliest Offset
VPC ID
VPC où se trouve la tâche de synchronisation des données. Ce paramètre s'affiche après avoir cliqué sur Configure Runtime Environment. Par défaut, il s'agit du VPC de l'instance Message Queue for Apache Kafka et ne nécessite aucune saisie manuelle.
vpc-bp1xpdnd3l***
vSwitch ID
vSwitch où se trouve la tâche de synchronisation des données. Ce paramètre s'affiche après avoir cliqué sur Configure Runtime Environment. Ce vSwitch doit se trouver dans le même VPC que l'instance Message Queue for Apache Kafka. Par défaut, il s'agit du vSwitch spécifié lors du déploiement de l'instance Message Queue for Apache Kafka.
vsw-bp1d2jgg81***
Failure Handling Policy
Politique de gestion des partitions en cas d'échec d'envoi d'un message. Ce paramètre s'affiche après avoir cliqué sur Configure Runtime Environment. Valeurs valides :
Continue Subscription : poursuit l'abonnement à la partition et imprime un journal d'erreurs.
Stop Subscription : arrête l'abonnement à la partition et imprime un journal d'erreurs.
RemarquePour savoir comment afficher les journaux, consultez Opérations liées aux connecteurs.
Pour trouver des solutions basées sur les codes d'erreur, consultez Codes d'erreur.
Continue Subscription
Resource Creation Method
Méthode de création des rubriques et du groupe requis par le connecteur. Ce paramètre s'affiche après avoir cliqué sur Configure Runtime Environment.
Auto
Manual
Auto
Connector Consumer Group
Groupe utilisé par la tâche de synchronisation des données du connecteur. Cliquez sur Configure Runtime Environment pour afficher ce paramètre. Le nom du groupe doit être connect-nom de la tâche.
connect-kafka-adb-sink
Task Offset Topic
Rubrique utilisée pour stocker les décalages des consommateurs. Ce paramètre s'affiche après avoir cliqué sur Configure Runtime Environment.
Rubrique : il est recommandé que le nom commence par
connect-offset.Partitions : le nombre de partitions doit être supérieur à 1.
Moteur de stockage : la rubrique doit utiliser
local storage.cleanup.policy: la politique de nettoyage des journaux de la rubrique doit êtrecompact.
connect-offset-kafka-adb-sink
Task Configuration Topic
Rubrique utilisée pour stocker les configurations des tâches. Ce paramètre s'affiche après avoir cliqué sur Configure Runtime Environment.
Rubrique : il est recommandé que le nom commence par
connect-config.Partitions : le nombre de partitions doit être égal à 1.
Moteur de stockage : la rubrique doit utiliser
local storage.cleanup.policy: la politique de nettoyage des journaux de la rubrique doit êtrecompact.
connect-config-kafka-adb-sink
Task Status Topic
Rubrique utilisée pour stocker l'état des tâches. Ce paramètre s'affiche après avoir cliqué sur Configure Runtime Environment.
Rubrique : il est recommandé que le nom commence par
connect-status.Partitions : le nombre recommandé de partitions est 6.
Moteur de stockage : la rubrique doit utiliser
local storage.cleanup.policy: la politique de nettoyage des journaux de la rubrique doit êtrecompact.
connect-status-kafka-adb-sink
Dead-letter Queue Topic
Rubrique utilisée pour stocker les données d'erreur provenant du framework Connect. Cliquez sur Configure Runtime Environment pour afficher ce paramètre. Cette rubrique peut être identique à la rubrique de données d'erreur afin d'économiser des ressources de rubrique.
Rubrique : il est recommandé que le nom commence par
connect-error.Partitions : le nombre recommandé de partitions est 6.
Moteur de stockage : la rubrique peut utiliser
local storageoucloud storage.
connect-error-kafka-adb-sink
Error Data Topic
Rubrique utilisée pour stocker les données d'exception provenant du Sink. Cliquez sur Configure Runtime Environment pour afficher ce paramètre. Cette rubrique peut être identique à la rubrique de file d'attente de lettres mortes afin d'économiser des ressources de rubrique.
Rubrique : il est recommandé que le nom commence par
connect-error.Partitions : le nombre recommandé de partitions est 6.
Moteur de stockage : la rubrique peut utiliser
local storageoucloud storage.
connect-error-kafka-adb-sink
-
Sous l'onglet Configure Destination Service, sélectionnez AnalyticDB comme Destination Service, configurez les paramètres suivants, puis cliquez sur Create.
Parameter
Description
Example
Instance Type
Type de l'instance AnalyticDB de destination. Valeurs valides : AnalyticDB for MySQL et AnalyticDB for PostgreSQL.
MySQL
AnalyticDB Instance ID
ID de l'instance de destination AnalyticDB for MySQL ou AnalyticDB for PostgreSQL.
am-bp139yqk8u1ik****
Database Name
Nom de la base de données de destination dans l'instance AnalyticDB.
adb_demo
Table Name
Nom de la table de destination dans la base de données AnalyticDB pour le stockage des messages.
user
Database Username
Nom d'utilisateur pour la connexion à l'instance AnalyticDB afin d'importer les données.
adbmysql
Database Password
Mot de passe pour la connexion à l'instance AnalyticDB afin d'importer les données. Vous définissez le mot de passe lors de la création de l'instance. Si vous oubliez le mot de passe, vous pouvez le réinitialiser.
AnalyticDB for MySQL : pour plus d'informations sur la réinitialisation du mot de passe, consultez Modifier le mot de passe d'un compte.
AnalyticDB for PostgreSQL : connectez-vous à la console AnalyticDB for PostgreSQL, cliquez sur le nom de l'instance, puis cliquez sur Account Management dans le volet de navigation de gauche. Recherchez le compte dont vous souhaitez réinitialiser le mot de passe et cliquez sur Reset Password dans la colonne Actions.
****
RemarqueMessage Queue for Apache Kafka transmet le nom d'utilisateur et le mot de passe en tant que variables d'environnement à la fonction Function Compute lors de la création de la tâche. Une fois la tâche créée, Message Queue for Apache Kafka ne conserve pas ces informations.
Une fois le connecteur créé, vous pouvez le consulter sur la page Connectors.
-
Sur la page Connectors, recherchez le connecteur que vous avez créé et cliquez sur Deploy dans la colonne Actions.
Configurer le service Function Compute
Après avoir créé et déployé avec succès un connecteur de sortie AnalyticDB dans la console Message Queue for Apache Kafka, Function Compute crée automatiquement un service et une fonction pour le connecteur. Le service est nommé selon le format kafka-service-<nom_du_connecteur>-<chaîne_aléatoire>, et la fonction est nommée selon le format fc-adb-<chaîne_aléatoire>.
-
Sur la page Connectors, recherchez le connecteur cible et cliquez sur Configure Function dans la colonne Actions.
Cette action vous redirige vers la console Function Compute.
Dans la console Function Compute, recherchez le service de fonction créé automatiquement et configurez ses informations VPC et vSwitch. Pour connaître la procédure détaillée, consultez Mettre à jour un service.
Configurer la base de données AnalyticDB de destination
Après avoir configuré le service Function Compute, vous devez ajouter le bloc CIDR de son vSwitch à la liste d'autorisation de votre instance AnalyticDB. Vous trouverez ce bloc CIDR sur la page vSwitch de la console VPC, dans la ligne correspondant au VPC et au vSwitch du service Function Compute.
AnalyticDB for MySQL : connectez-vous à la console AnalyticDB for MySQL et configurez la liste d'autorisation. Pour plus d'informations, consultez Configurer une liste d'autorisation d'adresses IP.
AnalyticDB for PostgreSQL : connectez-vous à la console AnalyticDB for PostgreSQL et configurez la liste d'autorisation. Pour plus d'informations, consultez Configurer une liste d'autorisation.
Envoyer des messages de test
Vous pouvez envoyer des messages à la rubrique source dans Message Queue for Apache Kafka pour tester l'exportation des données vers AnalyticDB for MySQL ou AnalyticDB for PostgreSQL.
Le contenu du message (Value) doit être au format JSON. Le contenu est analysé en paires clé-valeur. Chaque clé de l'objet JSON doit correspondre à un nom de colonne dans la table de la base de données de destination, et la valeur correspondante représente les données à insérer dans cette colonne. Par conséquent, chaque clé d'un message envoyé depuis Message Queue for Apache Kafka doit avoir une colonne portant le même nom dans la base de données. Vous pouvez afficher les noms de colonnes d'une table de base de données en vous connectant à la base de données depuis la console AnalyticDB for MySQL ou la console AnalyticDB for PostgreSQL.
Sur la page Connectors, recherchez le connecteur cible et cliquez sur Test dans la colonne Actions.
-
Dans le panneau Send Message, envoyez un message de test.
-
Définissez Sending Method sur Console.
Dans la zone de texte Message Key, saisissez la clé du message. Par exemple, demo.
Dans la zone de texte Message Content, saisissez le contenu du message de test. Par exemple, {"key": "test"}.
-
Définissez Send to Specified Partition pour indiquer si le message doit être envoyé à une partition spécifique.
Cliquez sur Yes et saisissez l'ID de partition dans la zone de texte Partition ID. Par exemple, 0. Pour interroger l'ID de partition, consultez Afficher l'état de la partition.
Cliquez sur No pour ne pas spécifier de partition.
Définissez Sending Method sur Docker. Exécutez la commande Docker dans la section Run the Docker container to produce a sample message pour envoyer le message.
Définissez Sending Method sur SDK. Sélectionnez un SDK pour le langage ou le framework requis et un type de connexion pour envoyer les messages.
-
Vérifier le résultat
Après avoir envoyé des messages à la rubrique source dans Message Queue for Apache Kafka, connectez-vous à la console AnalyticDB for MySQL ou à la console AnalyticDB for PostgreSQL, connectez-vous à la base de données et accédez à la fenêtre SQL Window de Data Management Service (DMS). Interrogez la table dans l'instance correspondante pour vérifier si les données ont été correctement exportées.
L'exemple suivant illustre les données exportées depuis ApsaraMQ for Kafka vers AnalyticDB for MySQL. Dans DMS, la table cible user dans AnalyticDB for MySQL affiche des enregistrements de données avec les colonnes id, name et id-id. Par exemple, le premier enregistrement a une valeur id de 20210001 et une valeur name de test.