Cette rubrique présente le guide d'utilisation, les paramètres de page et la foire aux questions (FAQ) relatifs à la réplication globale des messages, afin que vous puissiez rapidement comprendre et utiliser cette fonctionnalité.
Prérequis
Une instance ApsaraMQ for RocketMQ (file d'attente de messages cloud) doit être créée. Exigences de version :
-
Instances de la série 4,0 ApsaraMQ for RocketMQ.
RemarqueL'édition Standard des instances de la série 4,0 prend uniquement en charge la synchronisation unidirectionnelle.
Instances de la série 5,0 ApsaraMQ for RocketMQ.
Cette rubrique utilise des instances de la série 5,0 ApsaraMQ for RocketMQ comme exemple, à la fois pour le cluster source et le cluster cible.
Recommandations relatives aux spécifications
Lorsque vous utilisez la réplication globale des messages, la synchronisation des messages ajoute une surcharge TPS aux instances après la configuration des mappages de rubriques. Tenez compte des limites de TPS d'envoi et de réception de pointe des instances ApsaraMQ for RocketMQ source et cible de la tâche de synchronisation.
Spécifications recommandées :
Par exemple, sans synchronisation, une instance ApsaraMQ for RocketMQ affiche un TPS d'envoi de pointe de 10 000 messages/s et un TPS de réception de pointe de 10 000 messages/s.
Les configurations TPS suivantes sont recommandées pour l'instance source et l'instance cible :
Type de tâche | Instance source | Instance cible | ||||
Limite de TPS d'envoi et de réception de pointe (messages/s) | TPS d'envoi de pointe (messages/s) | TPS de réception de pointe (messages/s) | Limite de TPS d'envoi et de réception de pointe (messages/s) | TPS d'envoi de pointe (messages/s) | TPS de réception de pointe (messages/s) | |
Synchronisation unidirectionnelle | 30 000 | 10 000 | 20 000 | 20 000 | 10 000 | 10 000 |
Synchronisation bidirectionnelle | 40 000 | 20 000 | 20 000 | 40 000 | 20 000 | 20 000 |
Consultez la limite de TPS d'envoi et de réception de pointe d'une instance sur la page Instance Details. Pour connaître les limites de TPS des instances selon différentes spécifications, consultez la section Limites des spécifications.
Ajustez le TPS de réception de pointe de l'instance cible en fonction de la vitesse de traitement requise par votre activité.
Créer une tâche de réplication globale des messages
Lors de la première utilisation de la réplication globale des messages, la boîte de dialogue Alibaba Cloud Service Authorization - RocketMQ Global Message Replication s'affiche. Après avoir cliqué sur Confirm, le rôle lié au service AliyunServiceRoleForRMQDisasterRecovery du service cible est automatiquement créé, permettant ainsi à la fonctionnalité de réplication globale des messages de s'exécuter dans ApsaraMQ for RocketMQ. Pour plus d'informations, consultez la section Rôles liés au service.
Étape 1 : Créer une tâche
Connectez-vous à la console ApsaraMQ for RocketMQ.
Dans le volet de navigation de gauche, cliquez sur Global Message Replication, puis sur Create Task.
-
Sur la page Create Task, saisissez les informations suivantes. Les principales configurations sont décrites ci-dessous. Configurez les autres paramètres selon vos besoins. Ensuite, cliquez sur Create.
En haut de la page, définissez Task Name sur
rocket-test, sélectionnez One-way Backup: synchronizes data from the source cluster to the destination cluster pour Task Type, et saisissez une Task Description si nécessaire. Configurez le cluster source et le cluster cible dans les volets gauche et droit. Une flèche entre les volets indique la direction de la synchronisation.Pour les configurations des différents types de clusters du cluster source et du cluster cible, consultez les tableaux suivants :
ApsaraMQ for RocketMQ
Paramètre
Description
Exemple
Version
Sélectionnez la version de l'instance ApsaraMQ for RocketMQ.
Instance de la série 4.0
Instance de la série 5,0
Instance de la série 5,0
Region
Sélectionnez la région de l'instance ApsaraMQ for RocketMQ.
Chine (Hangzhou)
Instance
Sélectionnez l'instance ApsaraMQ for RocketMQ.
rmq-cn-778***
Mode d'authentification
Aucune configuration requise
Authentification basée sur les ACL
Authentification basée sur les ACL
Nom d'utilisateur
Sélectionnez un nom d'utilisateur.
yS8x01****
ID du groupe de sécurité
Groupe de sécurité de l'instance ECS qui héberge l'instance ApsaraMQ for RocketMQ. Ce paramètre est requis lorsque Version est défini sur une instance de la série 5.0.
Règle entrante : Aucune exigence.
Règle sortante :
Politique : Autoriser
Protocole : TCP personnalisé
Destination : Le bloc CIDR doit inclure tous les blocs CIDR des vSwitch du cluster. La plage de ports doit inclure 8080 et 8081.
sg-2ze4jlbqy2s40pc4****
Configuration système des conditions de filtrage
(Facultatif) Vous pouvez ajouter des attributs personnalisés (propriétés utilisateur) aux messages. Les consommateurs peuvent ensuite filtrer les messages en fonction d'une politique d'abonnement utilisant la syntaxe SQL-92.
Key : Clé de la propriété utilisateur.
Source cluster value : Valeur de la propriété utilisateur ajoutée aux messages provenant du cluster source.
Target cluster value : Valeur de la propriété utilisateur ajoutée aux messages provenant du cluster cible.
Le code suivant fournit un exemple de filtrage d'abonnement SQL-92 :
String sqlStr = "{Key} IS NOT NULL AND {Key} = {Source/Target Cluster Value}"; consumer.subscribe(MqConfig.TOPIC, MessageSelector.bySql(sqlStr));Aucun
Apache RocketMQ
Paramètre
Description
Exemple
Point d'accès
Le format d'un point d'accès est
{nom de domaine/IP}:{numéro de port}.XX.XX.XX.XX:8080
Mode d'authentification
Aucune configuration requise
Authentification basée sur les ACL
Authentification basée sur les ACL
Nom d'utilisateur
Saisissez un nom d'utilisateur en fonction de vos besoins métier.
yS8x01****
Mot de passe
Saisissez un mot de passe en fonction de vos besoins métier.
F17R4to****
Type de réseau
Réseau public
VPC
Réseau public
Region
Ce paramètre est requis si vous définissez Network type sur VPC. Sélectionnez la région des instances ECS sur lesquelles Apache RocketMQ est déployé.
Chine (Hangzhou)
VPC
Ce paramètre est requis si vous définissez Network type sur VPC. Sélectionnez le VPC des instances ECS sur lesquelles Apache RocketMQ est déployé.
vpc-bp17fapfdj0dwzjkd****
vSwitch
Ce paramètre est requis si vous définissez Network type sur VPC. Sélectionnez le vSwitch des instances ECS sur lesquelles Apache RocketMQ est déployé.
vsw-bp1gbjhj53hdjdkg****
ID du groupe de sécurité
Ce paramètre est requis si vous définissez Network type sur VPC. Sélectionnez le groupe de sécurité des instances ECS sur lesquelles Apache RocketMQ est déployé.
Règle entrante : Aucune exigence.
Règle sortante :
Politique : Autoriser
Protocole : TCP personnalisé
Destination : Le bloc CIDR doit inclure les blocs CIDR de tous les nœuds Apache RocketMQ. La plage de ports doit inclure les ports de service de tous les nœuds Apache RocketMQ. Les ports par défaut sont 9876, 10911 et 10909. Si vous avez modifié les ports NameServer ou broker, vous devez spécifier les ports mis à jour.
sg-2ze4jlbqy2s40pc4****
Configuration système des conditions de filtrage
(Facultatif) Vous pouvez ajouter des attributs personnalisés (propriétés utilisateur) aux messages. Les consommateurs peuvent ensuite filtrer les messages en fonction d'une politique d'abonnement utilisant la syntaxe SQL-92.
Key : Clé de la propriété utilisateur.
Source cluster value : Valeur de la propriété utilisateur ajoutée aux messages provenant du cluster source.
Target cluster value : Valeur de la propriété utilisateur ajoutée aux messages provenant du cluster cible.
Le code suivant fournit un exemple de filtrage d'abonnement SQL-92 :
String sqlStr = "{Key} IS NOT NULL AND {Key} = {Source/Target Cluster Value}"; consumer.subscribe(MqConfig.TOPIC, MessageSelector.bySql(sqlStr));Aucun
Étape 2 : Configurer les mappages de rubriques
Sur la page Task Basic Information, cliquez sur Message Synchronization Tasks dans le volet de navigation de gauche.
-
Cliquez sur Batch Mapping ou Add Mapping pour configurer les mappages de rubriques pour la synchronisation dans la boîte de dialogue.
Batch Mapping : Configurez et sélectionnez les mappages de rubriques requis, puis cliquez sur OK.
Add Mapping : Configurez le mappage de rubrique requis, puis cliquez sur OK.
RemarqueSi le cluster source est un cluster Apache RocketMQ, vous devez spécifier un groupe pour la synchronisation des messages. N'utilisez pas un groupe déjà utilisé pour les opérations métier.
La synchronisation des messages ne démarre qu'après la configuration des mappages de rubriques.
Étape 3 : (Facultatif) Activer la synchronisation de la progression des consommateurs
Après avoir activé la synchronisation de la progression des consommateurs, la progression actuelle de la consommation d'un groupe consommant une rubrique peut être synchronisée avec le cluster cible. Pour plus d'informations, consultez la section Synchronisation de la progression des consommateurs.
Configuration du client consommateur
Par exemple, vous configurez une tâche de synchronisation bidirectionnelle dans laquelle le cluster source est une instance ApsaraMQ for RocketMQ dans la région Chine (Shanghai) et le cluster cible est une instance ApsaraMQ for RocketMQ dans la région Chine (Hangzhou). La clé Key de la condition de filtrage est définie sur Region, la valeur du cluster source sur Shanghai et la valeur du cluster cible sur Hangzhou.
Dans des conditions normales, un client consommateur à Shanghai consomme uniquement les données de la région de Shanghai et ne consomme pas les données de Hangzhou. Une correspondance basée sur un seul attribut personnalisé est donc suffisante. Pour plus d'informations, consultez la section Filtrage des messages.
Abonnez-vous aux messages et faites correspondre en fonction d'un seul attribut personnalisé.
String topic = "topic";
// Subscribe only to the messages of the local region.
FilterExpression filterExpression = new FilterExpression("Region IS NOT NULL", FilterExpressionType.SQL92);
// The Region key in the user property is NULL for locally produced messages because the local producer application does not set this key.
simpleConsumer.subscribe(topic, filterExpression);
Abonnez-vous à tous les messages de la rubrique sans filtrage.
String topic = "topic";
// Subscribe to all messages.
FilterExpression filterExpression = new FilterExpression("True", FilterExpressionType.SQL92);
simpleConsumer.subscribe(topic, filterExpression);