Vue d’ensemble des abonnements partagés dans Azure Event Grid MQTT Broker

Les abonnements partagés dans Azure Event Grid MQTT Broker sont un modèle de messagerie qui permet à plusieurs clients de consommer des messages d'un abonnement unique de rubrique en tant que groupe, ce qui permet au courtier de distribuer les messages entre les clients d'une manière équilibrée en charge. Au lieu de chaque abonné recevant chaque message, un seul client au sein du groupe partagé reçoit chaque message, ce qui améliore l’extensibilité et le débit pour les systèmes de traitement principal.

Fonctionnement des abonnements partagés

Dans un abonnement MQTT standard, chaque client abonné reçoit une copie de chaque message. Avec les abonnements partagés, le répartiteur traite un groupe de clients en tant qu’abonné logique unique et distribue les messages entre eux.

  • Chaque message d’application correspondant au filtre partagé est remis à une seule session active au sein du groupe
  • La distribution est généralement répartie de manière équilibrée et aléatoire au sein du groupe.
  • Une session cliente peut contenir simultanément des abonnements partagés et non partagés
  • Plusieurs groupes peuvent s’abonner à la même rubrique indépendamment

Format de rubrique d’abonnement partagé

Les abonnements partagés utilisent le format suivant :

$share/{group-name}/{topic-filter}

Composants :

  • $share → Identifie un abonnement partagé
  • {group-name} → groupe de consommateurs logiques
  • {topic-filter} → Sujet ou abonnement générique

Exemple :

$share/order-processors/retail/orders/#

Caractéristiques clés

  • Consommation équilibrée de charge : les messages sont distribués entre les clients du même groupe pour garantir un traitement efficace.
  • Scalabilité horizontale : les consommateurs peuvent effectuer un scale-out indépendamment sans avoir d’impact sur les éditeurs.
  • Groupes de consommateurs indépendants : plusieurs groupes partagés reçoivent les mêmes messages indépendamment tout en équilibrant en interne.
  • Prise en charge des abonnements mixtes : un client peut gérer les abonnements partagés et non partagés dans la même session.

Exemple de scénario : Traitement des commandes de vente au détail

Envisagez un scénario de traitement des commandes commerciales à l’aide d’Event Grid MQTT Broker :

  • Sujet: retail/orders
  • Groupe partagé : order-workers
  • Clients : Worker1, Worker2, Worker3

Flux:

  1. Les commandes sont publiées sur retail/orders
  2. Tous les travailleurs s’abonnent à : $share/order-workers/retail/orders
  3. Event Grid MQTT Broker distribue :
    • Commande 1 → Worker1
    • Commande 2 → Worker2
    • Commande 3 → Worker3

Chaque commande est traitée une seule fois, tandis que le système s’adapte horizontalement.

Diagramme du courtier MQTT d’Event Grid distribuant trois commandes retail à trois workers à l’aide du groupe d’abonnement partagé order-workers.

Comportement et contraintes du protocole

Support de version MQTT

  • Fonctionnalité uniquement pour MQTT 5
  • Les clients MQTT 3.1.1 qui tentent $share/... seront déconnectés

Sémantique de remise de messages

  • Chaque message est remis à un client par groupe
  • La livraison suit la sémantique au moins une fois (QoS 1)

Classement des messages

  • Aucune garantie de l’ordre strict entre les membres du groupe

Comportement de session

  • L’expiration de la session a un impact sur la remise des messages :
    • Si un client se déconnecte et que la session expire, les messages peuvent être réaffectés.
    • Les sessions persistantes améliorent la fiabilité

Cas d’usage dans Event Grid MQTT Broker

Les abonnements partagés sont idéaux pour :

  • Traitement de télémétrie IoT à haut débit : distribuez les données de télémétrie ou les événements sur plusieurs services de traitement.
  • Pools de travailleurs back-end/microservices : permettre aux services sans état de traiter les événements sans duplication.
  • Consommateurs d’espaces de noms unifiés (UNS) : consomment efficacement des flux de données industriels à débit élevé.

Quand utiliser des abonnements partagés

Utilisez des abonnements partagés quand :

  • Vous avez besoin d’un traitement parallèle des messages.
  • Un seul consommateur ne peut pas gérer la charge.
  • Vous souhaitez des architectures évolutives et résilientes.
  • Vous souhaitez éviter de créer un équilibrage de charge personnalisé.

Diagramme montrant un abonnement partagé où une rubrique distribue les messages entre plusieurs consommateurs pour le traitement parallèle.