Le 23 janvier 2019, ApsaraMQ for RocketMQ a introduit une architecture basée sur des instances qui améliore l'isolation des ressources, simplifie leur gestion, ajoute la prise en charge des protocoles TCP et HTTP et centralise la gestion des autorisations via Resource Access Management (RAM).
Mettez à jour votre ons-client vers la dernière version pour garantir la compatibilité avec ces modifications.
Types d'instances
ApsaraMQ for RocketMQ propose deux éditions pour l'isolation multi-locataire. Achetez plusieurs instances dans la même région afin de séparer les environnements, les équipes ou les charges de travail.
| Édition | Isolation | Limite par région |
|---|---|---|
| Standard Edition | Logique : les instances partagent l'infrastructure sous-jacente | Jusqu'à 8 |
| Enterprise Platinum Edition | Physique : chaque instance s'exécute sur des ressources dédiées | Illimitée |
Pour plus d'informations, consultez ApsaraMQ for RocketMQ Enterprise Platinum Edition.
Namespaces et nommage des ressources
Un namespace définit la portée d'unicité des noms de ressources, tels que les topics et les ID de groupe. Au sein d'un namespace, chaque nom de ressource doit être unique. En revanche, des ressources situées dans des namespaces distincts peuvent partager le même nom.
ApsaraMQ for RocketMQ prend en charge deux catégories d'instances selon le comportement du namespace.
Instances par défaut
Les instances par défaut partagent un namespace global :
Les noms de ressources doivent être uniques globalement, au sein de toutes les instances et entre elles.
Pour les utilisateurs existants, une instance par défaut est automatiquement créée dans chaque région où des ressources sont déjà présentes.
Pour configurer l'endpoint, accédez à la page Instance Details dans la console ApsaraMQ for RocketMQ et copiez la valeur de l'endpoint.
// Recommended
properties.put(PropertyKeyConst.NAMESRV_ADDR, "xxxx");
// Legacy (still supported, but NAMESRV_ADDR is preferred)
properties.put(PropertyKeyConst.ONSAddr, "xxxx");
Instances avec namespaces
Les instances dotées de namespaces indépendants limitent la portée des noms de ressources au niveau de l'instance :
L'unicité des noms de ressources n'est requise qu'au sein d'une même instance. Différentes instances peuvent réutiliser les mêmes noms.
Cette approche est utile pour les configurations multi-équipes ou multi-environnements, où chaque équipe ou environnement dispose de sa propre instance.
Pour configurer l'endpoint, accédez à la page Instance Details dans la console ApsaraMQ for RocketMQ et copiez la valeur de l'endpoint.
// Recommended
properties.put(PropertyKeyConst.NAMESRV_ADDR, "xxx");
Les instances avec namespaces nécessitent la dernière version de ons-client. Consultez les notes de version de votre SDK :
Java : Notes de version
C++ : Notes de version
.NET : Notes de version
Gestion simplifiée des ressources
Ce qui a changé
Auparavant, ApsaraMQ for RocketMQ gérait trois types de ressources (topics, ID de producteur et ID de consommateur) avec des relations N:N. Chaque topic nécessitait des associations explicites avec un producteur et un consommateur, ce qui devenait difficile à maintenir à grande échelle.
Les ID de groupe remplacent les ID de producteur et de consommateur
Les ID de producteur et les ID de consommateur sont désormais unifiés en ID de groupe. Dans la console ApsaraMQ for RocketMQ, les modules Producers et Consumers sont fusionnés en un seul module Groups.
Le flux de travail simplifié est le suivant :
Créez un topic (inchangé).
Créez un ID de groupe ; aucun ID de producteur ou de consommateur séparé n'est nécessaire.
Associez l'ID de groupe à un topic dans votre code ; aucune association manuelle n'est requise dans la console.
Mettre à jour votre code
Utilisez PropertyKeyConst.GROUP_ID à la place des paramètres obsolètes PropertyKeyConst.ProducerId et PropertyKeyConst.ConsumerId.
Recommandé :
// Use GROUP_ID for both producers and consumers.
// ProducerId and ConsumerId are deprecated.
properties.put(PropertyKeyConst.GROUP_ID, "The original CID-XXX or the GID-XXX");
Hérité (toujours pris en charge) :
// Producer
properties.put(PropertyKeyConst.ProducerId, "The original PID-XXX or the GID-XXX");
// Consumer
properties.put(PropertyKeyConst.ConsumerId, "The original CID-XXX or the GID-XXX");
Notes de compatibilité
Les ID de producteur et de consommateur existants continuent de fonctionner. Les services en cours d'exécution ne sont pas affectés.
Les ID de consommateur commençant par
CID-ouCID_restent valides. Spécifiez-les comme valeur dePropertyKeyConst.ConsumerIdou dePropertyKeyConst.GROUP_ID.La liste des ID de producteur n'est plus visible dans la console, mais cela n'affecte pas les services en cours d'exécution.
Prise en charge de HTTP et RESTful
Les instances Standard Edition prennent en charge les protocoles HTTP et RESTful pour la connectivité au sein d'un réseau ou entre différents réseaux. Des SDK client HTTP sont disponibles pour sept langages de programmation.
Pour plus de détails, consultez Remarques sur l'utilisation des SDK client HTTP.
Migrer les politiques RAM
La fonctionnalité intégrée de gestion des autorisations dans ApsaraMQ for RocketMQ a été dépréciée le 2 avril 2019. Migrez vos configurations d'autorisation vers Alibaba Cloud RAM dès que possible.
Configurez les politiques RAM pour votre compte. Pour obtenir des instructions, consultez Accorder des autorisations aux utilisateurs RAM.
Les autorisations existantes restent effectives pendant la transition. Après la migration, gérez toutes les politiques depuis la console RAM.