Une fois la tâche de suivi des modifications créée, utilisez le kit de développement logiciel (SDK) fourni par Data Transmission Service (DTS) pour vous abonner aux modifications de données. Cette rubrique explique comment utiliser un SDK pour consommer des données provenant de sources de données distribuées, telles que PolarDB-X 1,0 et les bases de données logiques DMS.
Prérequis
Vous avez créé une instance de suivi des modifications. L'instance est dans l'état Normal. Pour plus d'informations, consultez la page Création d'une tâche de suivi des modifications pour une instance PolarDB-X 1,0 ou Création d'une tâche de suivi des modifications pour une base de données logique DMS.
Vous avez créé un groupe de consommateurs pour votre instance d'abonnement.
Si vous utilisez un utilisateur RAM pour consommer les données souscrites, cet utilisateur doit disposer de l'autorisation AliyunDTSFullAccess ainsi que des autorisations d'accès aux objets souscrits. Pour plus d'informations, consultez les pages Attribution d'autorisations à un utilisateur RAM pour gérer DTS via une stratégie système et Gestion des autorisations d'un utilisateur RAM.
Remarques sur l'utilisation
Lors de la consommation des données souscrites, vous devez impérativement terminer la consommation des données avant d'appeler la méthode
commitde l'objetDefaultUserRecordpour valider les informations de décalage (offset). N'appelez pas la méthode de validation avant d'avoir consommé les données, sous peine de provoquer une perte de données.Les différents processus de consommation sont indépendants les uns des autres.
Procédure
Téléchargez et décompressez le code exemple du SDK.
-
Vérifiez la version du code du SDK.
Accédez au répertoire dans lequel vous avez décompressé le code exemple du SDK.
Ouvrez le fichier pom.xml situé dans ce répertoire à l'aide d'un éditeur de texte.
-
Mettez à jour le SDK de suivi des modifications vers la dernière version.
RemarqueVous trouverez la dernière dépendance Maven sur la page dts-new-subscribe-sdk.
-
Modifiez le code du SDK.
Ouvrez le fichier décompressé avec un éditeur de code.
-
Selon le mode d'utilisation du client SDK, ouvrez le fichier DistributedDTSConsumerDemo.java.
RemarqueLe chemin d'accès au fichier Java est le suivant :
aliyun-dts-subscribe-sdk-java-master/src/test/java/com/aliyun/dts/subscribe/clients/. -
Définissez les paramètres dans le code Java.
public static void main(String[] args) throws ClientException { // Configuration for subscribing to a distributed data source, such as PolarDB-X 1.0 (formerly DRDS). Configure information such as the AccessKey, instance ID, main task ID, and consumer group. String accessKeyId = "LTA***********99reZ"; String accessKeySecret = "****************"; String regionId = "cn-hangzhou"; String dtsInstanceId = "dtse5212sed162****"; String jobId = "l791216x16d****"; String sid = "dtsip412t13160****"; String userName = "xftest"; String password = "******"; String proxyUrl = "dts-cn-****.com:18001"; // initial checkpoint for first seek(a timestamp to set, eg 1566180200 if you want (Mon Aug 19 10:03:21 CST 2019)) String checkpoint = "1639620090"; // Convert physical database/table name to logical database/table name boolean mapping = true; // if force use config checkpoint when start. for checkpoint reset, only assign mode works boolean isForceUseInitCheckpoint = false; ConsumerContext.ConsumerSubscribeMode subscribeMode = ConsumerContext.ConsumerSubscribeMode.ASSIGN; DistributedDTSConsumerDemo demo = new DistributedDTSConsumerDemo(userName, password, regionId, jobId, sid, dtsInstanceId, accessKeyId, accessKeySecret, subscribeMode, proxyUrl, checkpoint, isForceUseInitCheckpoint, mapping); demo.start(); }Paramètre
Description
Comment l'obtenir
accessKeyId
ID de la clé AccessKey.
Pour plus d'informations, consultez la page Obtention d'une paire de clés AccessKey.
accessKeySecret
Clé secrète AccessKey.
regionId
ID de la région où se trouve la tâche de suivi des modifications.
Dans la console DTS, cliquez sur l'ID de l'instance de suivi des modifications cible. Sur la page Basic Information, vous pouvez récupérer les informations relatives à la région. Par exemple, si la région est Chine (Hangzhou), définissez ce paramètre sur
cn-hangzhou. Pour plus d'informations, consultez la page Liste des régions.dtsInstanceId
ID de l'instance de suivi des modifications.
Dans la console DTS, cliquez sur l'ID de l'instance de suivi des modifications cible. Sur la page Basic Information, vous pouvez récupérer l'DTS Instance ID de l'instance de suivi des modifications.
jobId
ID de la tâche de suivi des modifications.
Appelez l'opération DescribeDtsJobs pour récupérer l'ID de la tâche de suivi des modifications (DtsJobId).
sid
ID du groupe de consommateurs.
Dans la console DTS, cliquez sur l'ID de l'instance de suivi des modifications cible. Dans le volet de navigation de gauche, cliquez sur Consume Data. Vous pouvez récupérer l'Consumer Group ID/Name et le Account du groupe de consommateurs.
RemarqueLe mot de passe du compte du groupe de consommateurs est spécifié lors de la création du groupe.
userName
Compte du groupe de consommateurs.
password
Mot de passe du compte du groupe de consommateurs.
proxyUrl
Endpoint et port du canal de suivi des modifications.
RemarqueSi l'instance ECS sur laquelle vous déployez le client SDK et le canal de suivi des modifications se trouvent dans le même réseau classique ou le même VPC, abonnez-vous aux données via le réseau interne afin d'obtenir la latence la plus faible possible.
Nous déconseillons l'utilisation d'un endpoint public en raison d'une éventuelle instabilité du réseau.
Dans la console DTS, cliquez sur l'ID de l'instance de suivi des modifications cible. Sur la page Basic Information, vous pouvez récupérer les informations relatives au Network.
checkpoint
Décalage du consommateur (consumer offset). Il s'agit de l'horodatage à partir duquel le client SDK commence à consommer les enregistrements de données. La valeur correspond à un horodatage UNIX exprimé en secondes.
RemarqueVous pouvez utiliser les informations de décalage du consommateur pour les opérations suivantes :
En cas d'interruption du processus de consommation, vous pouvez transmettre le décalage du consommateur pour reprendre la consommation des données et éviter toute perte.
Lors du démarrage du client SDK, vous pouvez transmettre le décalage du consommateur requis pour ajuster le décalage d'abonnement et consommer les données selon vos besoins.
Le décalage du consommateur doit se situer dans la plage d'horodatage de l'instance de suivi des modifications et doit être converti en horodatage UNIX.
RemarqueVous pouvez afficher la plage d'horodatage de l'instance de suivi des modifications dans la colonne Data Range de la liste des tâches de suivi.
Vous pouvez utiliser un moteur de recherche pour trouver un convertisseur d'horodatage UNIX.
-
Facultatif : Pour modifier le type de données des données souscrites, modifiez la méthode
buildRecordListener()ou utilisez une classe personnalisée.public static Map<String, RecordListener> buildRecordListener() { // user can impl their own listener RecordListener mysqlRecordPrintListener = new RecordListener() { @Override public void consume(DefaultUserRecord record) { OperationType operationType = record.getOperationType(); if (operationType.equals(OperationType.INSERT) || operationType.equals(OperationType.UPDATE) || operationType.equals(OperationType.DELETE) || operationType.equals(OperationType.HEARTBEAT)) { // consume record RecordListener recordPrintListener = new DefaultRecordPrintListener(DbType.MySQL); recordPrintListener.consume(record); //commit method push the checkpoint update record.commit(""); } } }; return Collections.singletonMap("mysqlRecordPrinter", mysqlRecordPrintListener); } Ouvrez la structure du projet dans votre IDE et assurez-vous que la version OpenJDK utilisée pour le projet est la 1,8.
-
Exécutez le code client.
La sortie indique que le client s'abonne aux modifications de données de la base de données source.
-
Le client SDK collecte et affiche périodiquement des statistiques sur la consommation de données. Ces statistiques incluent le nombre total d'enregistrements de données envoyés et reçus, le volume total de données et le nombre d'enregistrements par seconde (RPS).
Tableau 1. Statistiques de consommation de données
Paramètre
Description
outCountsNombre total d'enregistrements de données consommés par le client SDK.
outBytesVolume total de données consommées par le client SDK, en octets.
outRpsNombre de requêtes par seconde envoyées par le client SDK pour consommer les données.
outBpsNombre de bits transmis par seconde lors de la consommation des données par le client SDK.
countAucun.
inBytesVolume total de données envoyées par le serveur DTS, en octets.
DStoreRecordQueueTaille de la file d'attente de cache de données lorsque le serveur DTS envoie des données.
inCountsNombre total d'enregistrements de données envoyés par le serveur DTS.
inRpsNombre de requêtes envoyées par le serveur DTS par seconde.
inBpsNombre de bits transmis par seconde lors de l'envoi des données par le serveur DTS.
__dtHorodatage auquel le client SDK reçoit les données, en millisecondes.
DefaultUserRecordQueueTaille de la file d'attente de cache de données après sérialisation.