ApsaraMQ for RabbitMQ est un service de messagerie entièrement géré reposant sur une architecture de stockage distribuée et hautement disponible. Il implémente le protocole AMQP 0-9-1 et assure la compatibilité avec les clients RabbitMQ open source. Par rapport à RabbitMQ open source, ApsaraMQ for RabbitMQ résout les problèmes de stabilité courants, tels que l'accumulation de messages et les scénarios de split-brain. Il offre également les avantages d'un service de messagerie cloud, notamment une forte concurrence, un déploiement distribué et une mise à l'échelle flexible.
Cette rubrique compare ApsaraMQ for RabbitMQ et RabbitMQ open source en termes de fonctionnalités, de mise à l'échelle, de fiabilité, ainsi que pour les exchanges et les queues.
Pour obtenir la liste complète des avantages, consultez la rubrique Avantages.
Fonctionnalités
|
Fonctionnalité |
ApsaraMQ for RabbitMQ |
RabbitMQ open source |
|
Protocole |
AMQP 0-9-1 |
AMQP 0-9-1, AMQP 1.0, STOMP, MQTT, HTTP(S) et WebSocket |
|
SDK client |
Tous les SDK clients RabbitMQ open source (tous langages, toutes versions) |
SDK open source |
|
Messages différés |
Précision à la seconde. Compatible avec le plug-in x-delayed-message et la méthode TTL. Consultez la rubrique Messages différés. |
Nécessite un plug-in ou la méthode d'expiration TTL et de transfert des messages |
|
Messages transactionnels |
Non pris en charge |
Pris en charge |
|
Messages ordonnés |
Pris en charge. Consultez la rubrique Consommation ordonnée des messages. |
Pris en charge |
|
Priorité des messages |
Uniquement pour les instances dédiées |
Pris en charge |
|
Nouvelle tentative de distribution des messages |
Nouvelle distribution automatique lorsque les messages ne sont pas accusés de réception dans le délai imparti. Consultez la rubrique Politique de nouvelle tentative. |
Aucune nouvelle tentative intégrée. Les messages non accusés bloquent la queue, ce qui peut provoquer une accumulation et une interruption du service. |
|
Authentification |
Nom d'utilisateur et mot de passe personnalisés, ou identifiants générés à partir d'une paire AccessKey dans Resource Access Management (RAM). Consultez les rubriques Noms d'utilisateur et mots de passe statiques et Identifiants RAM. |
Nom d'utilisateur et mot de passe personnalisés |
|
Contrôle d'accès |
Modèle d'autorisations open source et autorisation basée sur les politiques RAM. Consultez les rubriques Gestion des autorisations et Contrôle d'accès RAM. |
Modèle d'autorisations open source |
Observabilité
|
Capacité |
ApsaraMQ for RabbitMQ |
RabbitMQ open source |
|
Tableau de bord |
Métriques intégrées au niveau vhost, exchange et queue. L'intégration Prometheus et Grafana est préconfigurée. Consultez la rubrique Tableau de bord. |
Deux options : (1) Utilisez l'interface de gestion pour les métriques, mais construisez votre propre couche de stockage et de visualisation. (2) Configurez manuellement Prometheus et Grafana. |
|
Suivi des messages |
Affichage des traces basé sur la console présentant le cycle de vie complet du message. Recherche par queue, ID de message ou heure de traitement. Consultez la rubrique Traces des messages. |
Les données de trace sont écrites dans les fichiers journaux côté serveur, ce qui rend la recherche et l'analyse des causes profondes plus lentes. |
Commandes AMQP
Le tableau suivant compare le comportement de la commande AMQP BasicCancel entre ApsaraMQ for RabbitMQ et RabbitMQ open source.
|
Élément |
ApsaraMQ for RabbitMQ |
RabbitMQ open source |
|
|
Annule l'abonnement du consommateur ; les messages déjà distribués sont replacés dans la queue. |
Annule l'abonnement du consommateur ; les messages déjà distribués restent dans l'état Unacked. |
Cette différence est importante lors du dépannage de la distribution des messages après l'annulation de la consommation par un client. Dans ApsaraMQ for RabbitMQ, le remplacement dans la queue après BasicCancel signifie que les messages non accusés peuvent être redistribués à d'autres consommateurs. Dans RabbitMQ open source, ces messages restent non accusés jusqu'à la fermeture du canal ou l'expiration du délai.
Mise à l'échelle et fiabilité
|
Dimension |
ApsaraMQ for RabbitMQ |
RabbitMQ open source |
|
Débit du cluster |
Aucune limite supérieure fixe. Une architecture distribuée sans nœud maître prend en charge la mise à l'échelle horizontale. |
Limitée par la capacité d'un seul nœud. La mise à l'échelle verticale nécessite une mise à niveau du matériel. |
|
Débit d'une seule queue |
Aucune limite supérieure fixe. Chaque queue effectue une mise à l'échelle horizontale sur plusieurs nœuds. |
Limitée par le nœud qui héberge la queue. |
|
Connexions |
Mise à l'échelle avec le cluster. L'ajout de nœuds augmente la capacité de connexion sans dégrader les performances. |
Limitée par les ressources d'une seule machine. |
|
Messages différés |
Précision à la seconde, débit élevé, prêt à l'emploi |
Nécessite la configuration d'un plug-in |
|
Haute disponibilité |
Déploiement multizone avec séparation du stockage et du calcul. Les nœuds de calcul défaillants peuvent être rapidement supprimés et isolés. Les données sont stockées en triple exemplaire. |
Repose sur les mirror queues ou les quorum queues. Cette implémentation est sujette aux problèmes de split-brain. |
|
Accumulation de messages |
Maintient des performances stables même en cas de retards massifs. Le fonctionnement normal du cluster n'est pas affecté. |
Les retards importants consomment la mémoire du nœud et peuvent déclencher des erreurs de type out-of-memory, entraînant une interruption du service. |
|
Mise à l'échelle élastique |
Ajoutez ou supprimez des nœuds de cluster à la demande pour adapter la capacité. Les instances serverless sont facturées en fonction du volume de messages, ce qui élimine le besoin d'une planification préalable de la capacité. |
La capacité est contrainte par la plus grande machine du cluster. La mise à l'échelle nécessite des mises à niveau matérielles ou un nouveau partitionnement du cluster. |
|
Auto-réparation |
Un système d'inspection intégré détecte et résout automatiquement les interblocages et les pannes de nœuds. |
Aucune auto-réparation automatisée. Une intervention manuelle est requise. |
Exchanges
ApsaraMQ for RabbitMQ prend en charge les mêmes types et propriétés d'exchanges que RabbitMQ open source.
|
Propriété |
ApsaraMQ for RabbitMQ |
RabbitMQ open source |
|
Types |
direct, fanout, headers, topic, x-delayed-message, x-consistent-hash |
direct, fanout, headers, topic, x-delayed-message, x-consistent-hash |
|
Persistance |
Persistant et non persistant |
Persistant et non persistant |
|
Suppression automatique |
Pris en charge |
Pris en charge |
|
Interne |
Pris en charge |
Pris en charge |
|
Exchange alternatif |
Pris en charge |
Pris en charge |
|
Exchange de hachage cohérent |
Pris en charge |
Pris en charge |
Queues
ApsaraMQ for RabbitMQ abstrait les décisions d'infrastructure au niveau des queues. Toutes les queues s'exécutent sur un cluster distribué haute disponibilité, il n'est donc pas nécessaire de choisir entre les types de queues classic et quorum ni de configurer manuellement la réplication.
|
Propriété |
ApsaraMQ for RabbitMQ |
RabbitMQ open source |
|
Type de queue |
Cluster HA distribué (aucune configuration requise) |
Sélection manuelle requise : classic (mirror queue) ou quorum queue |
|
Attribution des nœuds |
Entièrement géré, aucune attribution manuelle |
Sélection manuelle des nœuds requise |
|
Politique de nouvelle tentative |
Nouvelle distribution automatique en cas de délai d'attente de consommation. Consultez la rubrique Politique de nouvelle tentative. |
Aucune nouvelle distribution basée sur un délai d'attente |
|
Persistance |
Persistant et non persistant |
Persistant et non persistant |
|
Longueur maximale / octets de longueur maximale / longueur maximale en mémoire / octets de longueur maximale en mémoire |
Aucune configuration requise. Prend en charge l'accumulation massive de messages sans pression sur la mémoire. |
Doit être configuré pour éviter les pannes out-of-memory causées par une accumulation illimitée. |
|
Limite de distribution |
Valeur par défaut de 16 (statique). Consultez la rubrique Politique de nouvelle tentative. |
Configuration manuelle requise |
|
Dead-letter exchange |
Pris en charge |
Pris en charge |
|
Clé de routage dead-letter |
Pris en charge |
Pris en charge |
|
Consommateur unique actif |
Pris en charge. Consultez la rubrique Consommation ordonnée des messages. |
Pris en charge |
Action
Le tableau suivant compare le comportement de la commande AMQP BasicCancel entre ApsaraMQ for RabbitMQ et RabbitMQ open source.
|
Élément |
ApsaraMQ for RabbitMQ |
RabbitMQ open source |
|
BasicCancel |
Annule l'abonnement du consommateur ; les messages déjà distribués sont replacés dans la queue. |
Annule l'abonnement du consommateur ; les messages déjà distribués restent dans l'état Unacked. |