Pubblicare e sottoscrivere messaggi MQTT usando il broker MQTT

Importante

Anteprima di Operazioni di Azure IoT – Abilitata da Azure Arc è attualmente in anteprima. Non è consigliabile usare questo software di anteprima negli ambienti di produzione.

Sarà necessario distribuire una nuova installazione di Operazioni di Azure IoT quando sarà messa a disposizione una versione disponibile a livello generale. Non sarà possibile aggiornare un'installazione di anteprima.

Vedere le condizioni per l'utilizzo supplementari per le anteprime di Microsoft Azure per termini legali aggiuntivi che si applicano a funzionalità di Azure in versione beta, in anteprima o in altro modo non ancora disponibili a livello generale.

Il broker MQTT offre un broker MQTT di livello aziendale conforme agli standard, scalabile, a disponibilità elevata e nativo di Kubernetes. Fornisce il piano di messaggistica per l'anteprima delle Operazioni di Azure IoT, abilita la comunicazione bidirezionale perimetrale/cloud e supporta applicazioni guidate dagli eventi alla rete perimetrale.

Conforme a MQTT

Il broker MQTT include un broker MQTT conforme agli standard che supporta sia MQTT v3.1.1 che MQTT v5.

Message Queue Telemetry Transport (MQTT) è emerso come lingua franca tra i protocolli nello spazio IoT. Il design semplice di MQTT consente a un singolo broker di servire decine di migliaia di client contemporaneamente, con una semplice creazione e gestione di argomenti di pubblicazione-sottoscrizione. Molti dispositivi IoT supportano MQTT in modo nativo, con la lunga coda dei protocolli IoT razionalizzata in MQTT dai gateway di traduzione downstream.

Il broker MQTT usa il protocollo MQTT come base per il livello di messaggistica. Per altre informazioni sulle funzionalità MQTT supportate, vedere supporto delle funzionalità MQTT nel broker MQTT.

Disponibilità e scalabilità elevate

Kubernetes può ridimensionare orizzontalmente i carichi di lavoro da eseguire in più istanze. Questa ridondanza significa capacità aggiuntiva per gestire le richieste e l'affidabilità nel caso in cui un'istanza si arresti. Kubernetes ha una correzione automatica predefinita e le istanze vengono ripristinate automaticamente.

Oltre a essere una tecnologia di ridimensionamento elastica, Kubernetes è anche uno standard per DevOps. Se MQTT è la lingua franca tra i protocolli IoT, Kubernetes è la lingua franca per il livello dell'infrastruttura di calcolo. Adottando Kubernetes, è possibile usare la stessa pipeline CI/CD, strumenti, monitoraggio, creazione di pacchetti di app, competenze dei dipendenti ovunque. Il risultato è un singolo sistema end-to-end che va dal cloud computing, ai server locali e ai gateway IoT più piccoli sul presenti in fabbrica. È possibile dedicare meno tempo a gestire l'infrastruttura o DevOps e concentrarsi sull'azienda.

Il broker MQTT è incentrato sul valore univoco del piano dati nativo perimetrale che può fornire all'ecosistema Kubernetes, adattandosi senza problemi. Offre prestazioni elevate e un piano di piattaforma di messaggistica scalabile basato su MQTT e un'integrazione senza problemi con altri carichi di lavoro scalabili Kubernetes e Azure.

Sicuro per impostazione predefinita

Il broker MQTT si basa sui concetti di sicurezza e identità nativi di Azure e Kubernetes testati in modo da renderlo altamente sicuro e utilizzabile. Supporta più meccanismi di autenticazione per la flessibilità insieme a meccanismi di controllo di accesso granulari fino al livello di argomento MQTT singolo.

Suggerimento

È possibile accedere alla distribuzione predefinita del broker MQTT usando l'indirizzo IP del cluster, TLS e un token dell'account del servizio. I client che si connettono dall'esterno del cluster necessitano di una configurazione aggiuntiva prima di potersi connettere.

Integrazione di Azure Arc

La piattaforma ibrida di Microsoft è ancorata a Kubernetes con Azure Arc come singolo piano di controllo. Fornisce un piano di gestione che proietta le risorse non Azure, locali o cloud esistenti in Azure Resource Manager. Il risultato è un singolo riquadro di controllo per gestire macchine virtuali, cluster Kubernetes e database non in esecuzione nei data center di Azure.

Il broker MQTT viene distribuito come estensione Azure Arc per Kubernetes e può essere gestito tramite un provider di risorse di Azure completo (RP) - microsoft/IoTOperationsMQ. Ciò significa che è possibile gestirlo esattamente come le risorse cloud native di Azure, ad esempio macchine virtuali, archiviazione e così via.

La tecnologia Azure Arc consente di rendere effettive le modifiche ai servizi broker MQTT in esecuzione nel cluster Kubernetes locale. Facoltativamente, se si preferisce un approccio nativo di Kubernetes, è possibile gestire il broker MQTT con definizioni di risorse personalizzate (CRD) di Kubernetes in locale o usando tecnologie GitOps come Flux.

Connettori cloud

Potrebbero essere previsti requisiti di messaggistica diversi per lo scenario cloud. Ad esempio, un percorso del cloud/edge bidirezionale rapido per i dati con priorità elevata o per alimentare dashboard cloud quasi in tempo reale e un lento percorso per dati meno critici in tempo che possono essere aggiornati in batch.

Per offrire flessibilità, il broker MQTT fornisce connettori di Azure predefiniti a Hub eventi (con endpoint Kafka), funzionalità broker MQTT della Griglia di eventi, Microsoft Fabric e Archiviazione BLOB. Il broker MQTT è estendibile in modo da poter scegliere la soluzione di messaggistica cloud preferita che funziona con la soluzione.

L'integrazione su Azure Arc consente di configurare i connettori per l'uso dell'identità gestita di Azure per l'accesso ai servizi cloud con potenti controllo degli accessi in base al ruolo di Azure (RBAC). Non è necessaria alcuna gestione delle credenziali manuale, non sicura e complessa.

Modello di programmazione Dapr

Dapr semplifica l’idraulica tra le applicazioni distribuite esponendo le loro funzionalità comuni, ad esempio la gestione dello stato, la chiamata da servizio a servizio e la messaggistica di pubblicazione-sottoscrizione. I componenti Dapr sono alla base dei blocchi predefiniti e forniscono l'implementazione concreta per ogni funzionalità. È possibile concentrarsi sulla logica di business e consentire a Dapr di gestire i dettagli dell'applicazione distribuita.

Il broker MQTT offre blocchi predefiniti collegabili alla pubblicazione-sottoscrizione di Dapr e state store che rendono lo sviluppo e la distribuzione di applicazioni guidate dagli eventi all'avanguardia in modo semplice e tecnologico indipendente.

Architettura

Il broker MQTT ha tre livelli:

  • Livello front-end senza stato che gestisce le richieste client
  • Bilanciamento del carico che instrada le richieste e connette il broker ad altri
  • Livello back-end con stato e partizionato che archivia ed elabora i dati

Il livello back-end partiziona i dati in base a chiavi diverse, ad esempio l'ID client per le sessioni client e il nome dell'argomento per i messaggi di argomento. Usa la replica a catena per replicare i dati all'interno di ogni partizione. Per i dati condivisi da tutte le partizioni, usa una singola catena che si estende su tutte le partizioni.

Gli obiettivi dell'architettura sono:

  • Tolleranza di errore e isolamento: la pubblicazione dei messaggi continua se i nodi back-end hanno un esito negativo e impediscono la propagazione degli errori al resto del sistema
  • Ripristino errori: ripristino automatico degli errori senza intervento dell'operatore
  • Nessuna perdita di messaggi: recapito di messaggi se almeno un nodo front-end e un nodo back-end è in esecuzione
  • Ridimensionamento elastico: scalabilità orizzontale della velocità effettiva di pubblicazione e sottoscrizione per supportare distribuzioni perimetrali e cloud
  • Prestazioni coerenti su larga scala: limitare il sovraccarico della latenza dei messaggi a causa della replica a catena
  • Semplicità operativa: dipendenza minima da componenti esterni per semplificare la manutenzione e la complessità

Passaggi successivi

Distribuire l'anteprima di Operazioni di Azure IoT in un cluster Kubernetes abilitato per Arc