Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Scrizioni condivise in Griglia di eventi di Azure Broker MQTT sono un modello di messaggistica che consente a più client di utilizzare messaggi da una sottoscrizione a un singolo argomento come gruppo, consentendo al broker di distribuire i messaggi tra i client in modo con carico bilanciato. Invece di ogni sottoscrittore che riceve ogni messaggio, un solo client all'interno del gruppo condiviso riceve ogni messaggio, migliorando la scalabilità e la velocità effettiva per i sistemi di elaborazione back-end.
Funzionamento delle sottoscrizioni condivise
In una sottoscrizione MQTT standard ogni client sottoscritto riceve una copia di ogni messaggio. Con le sottoscrizioni condivise, il broker considera un gruppo di client come un singolo sottoscrittore logico e distribuisce i messaggi tra di essi.
- Ogni messaggio dell'applicazione corrispondente al filtro condiviso viene recapitato a una sola sessione attiva all'interno del gruppo
- La distribuzione del carico è tipicamente bilanciata in modo casuale all'interno del gruppo.
- Una sessione client può contenere contemporaneamente sottoscrizioni condivise e non condivise
- Più gruppi possono sottoscrivere lo stesso argomento in modo indipendente
Formato dell'argomento della sottoscrizione condivisa
Le sottoscrizioni condivise usano il formato seguente:
$share/{group-name}/{topic-filter}
Componenti:
-
$share→ Identifica una sottoscrizione condivisa -
{group-name}→ gruppo logico di consumatori -
{topic-filter}→ Argomento o sottoscrizione con caratteri jolly
Esempio:
$share/order-processors/retail/orders/#
Caratteristiche chiave
- Consumo con carico bilanciato: i messaggi vengono distribuiti tra client nello stesso gruppo per garantire un'elaborazione efficiente.
- Scalabilità orizzontale: i consumer possono aumentare in modo indipendente senza impatto sugli editori.
- Gruppi di consumer indipendenti: più gruppi condivisi ricevono gli stessi messaggi in modo indipendente durante il bilanciamento interno.
- Supporto per le sottoscrizioni miste: un client può gestire sottoscrizioni condivise e non condivise nella stessa sessione.
Scenario di esempio: Elaborazione degli ordini al dettaglio
Considerate uno scenario di elaborazione degli ordini al dettaglio usando Event Grid MQTT Broker.
- Argomento:
retail/orders - Gruppo condiviso:
order-workers - Clienti: Worker1, Worker2, Worker3
Flusso:
- Gli ordini vengono pubblicati in
retail/orders - Tutti i lavoratori sottoscrivono:
$share/order-workers/retail/orders - Gestore MQTT di Griglia di eventi distribuisce:
- Ordine 1 → Lavoratore1
- Ordine 2 → Lavoratore2
- Ordine 3 → Lavoratore3
Ogni ordine viene elaborato una sola volta, mentre il sistema viene ridimensionato orizzontalmente.
Comportamento e vincoli del protocollo
Supporto della versione MQTT
- Funzionalità disponibile solo in MQTT 5
- I client MQTT 3.1.1 che tentano
$share/...verranno disconnessi
Semantica per il recapito dei messaggi
- Ogni messaggio viene recapitato a un client per gruppo
- Il recapito segue la semantica almeno una volta (QoS 1)
Ordinamento dei messaggi
- Nessuna garanzia di ordinamento rigoroso tra i membri del gruppo
Comportamento della sessione
- La scadenza della sessione influisce sul recapito dei messaggi:
- Se un client si disconnette e la sessione scade, i messaggi potrebbero essere riassegnati
- Le sessioni persistenti migliorano l'affidabilità
Casi d'uso nel broker MQTT di Event Grid
Le sottoscrizioni condivise sono ideali per:
- Elaborazione dei dati di telemetria IoT ad alta velocità effettiva: distribuire dati di telemetria o eventi tra più servizi di elaborazione.
- Pool di ruoli di lavoro back-end/microservizi: consentire ai servizi senza stato di elaborare gli eventi senza duplicazione.
- Consumatori di Unified Namespace (UNS): consumano efficientemente flussi di dati industriali ad alta capacità.
Quando usare le sottoscrizioni condivise
Usare sottoscrizioni condivise quando:
- È necessaria l'elaborazione parallela dei messaggi.
- Un singolo consumer non può gestire il carico.
- Si vogliono architetture scalabili e resilienti.
- Si vuole evitare di creare un bilanciamento del carico personalizzato.