Efficienza delle prestazioni nel carico di lavoro IoT

Le soluzioni IoT includono dispositivi, componenti perimetrali e cloud e variano da milioni di dispositivi di piccole dimensioni connessi al cloud a soluzioni industriali in cui alcuni server potenti sono gateway per la connettività cloud. Il numero di dispositivi, il posizionamento fisico e geografico e il numero di messaggi inviati o ricevuti sono alcuni dei fattori che possono definire l'efficienza delle prestazioni di un carico di lavoro IoT.

L'efficienza delle prestazioni include anche la capacità di un carico di lavoro IoT di ridimensionare in modo efficiente per soddisfare le esigenze. Un vantaggio del cloud è la disponibilità geografica e la possibilità di ridimensionare i servizi su richiesta, senza tempi di inattività delle applicazioni.

L'efficienza delle prestazioni rappresenta le prestazioni relative all'uso delle risorse in condizioni dichiarate. L'efficienza delle prestazioni misura l'efficacia di un prodotto o di un sistema, quando esegue le funzioni, soddisfa i requisiti per:

  • Comportamento temporale, ad esempio tempi di risposta, tempi di elaborazione e velocità effettiva.

  • Utilizzo delle risorse, o quantità e tipi di risorse usati.

  • Capacità o limiti massimi.

Valutare l'efficienza delle prestazioni nel carico di lavoro IoT

Per valutare il carico di lavoro IoT tramite gli obiettivi del pilastro efficienza delle prestazioni di Well-Architected Framework, completare le domande sull'efficienza delle prestazioni per i carichi di lavoro IoT in Azure Well-Architected Review. Dopo che la valutazione identifica le raccomandazioni chiave per l'efficienza delle prestazioni per la soluzione IoT, usare il contenuto seguente per implementare le raccomandazioni.

Principi di progettazione

Cinque pilastri dell'eccellenza architettonica supportano la metodologia di progettazione del carico di lavoro IoT. Questi pilastri fungono da bussola per le successive decisioni di progettazione nelle principali aree di progettazione IoT. I principi di progettazione seguenti estendono il pilastro della qualità di Azure Well-Architected Framework - Efficienza delle prestazioni.

Principio di progettazione Considerazioni
Progettazione per la scalabilità orizzontale Una soluzione IoT può iniziare con poche centinaia di dispositivi o messaggi e aumentare fino a milioni di dispositivi e messaggi al minuto. È possibile ridimensionare facilmente i servizi cloud in modo da aumentare il carico, ma la situazione può essere più complessa per i dispositivi e i gateway IoT. I dispositivi IoT possono essere progettati o distribuiti prima della finalizzazione della soluzione. IoT industriale o settori simili possono misurare la durata del dispositivo in decenni. L'aggiornamento della capacità sostituendo i dispositivi è costoso. In questi scenari è particolarmente importante pianificare in anticipo.
Sposta a sinistra nei test delle prestazioni Testare in anticipo e testare spesso per rilevare i problemi in anticipo. Tenere presente la complessità di avere sensori, dispositivi e gateway in posizioni geograficamente diverse con caratteristiche, velocità e affidabilità della comunicazione diverse. Pianificare questa complessità nei test e assicurarsi di testare gli scenari di errore, ad esempio la disconnessione di rete. Eseguire test di carico e stress di tutti i componenti di dispositivo, edge e cloud nella soluzione IoT.
Monitorare continuamente le prestazioni nell'ambiente di produzione Per monitorare diversi tipi di dispositivi in più aree geografiche, usare una soluzione di monitoraggio distribuita. Bilanciare la quantità di informazioni monitorate e inviate al cloud rispetto ai costi di memoria e prestazioni. Ottimizzare la trasmissione per gli scenari di diagnostica e monitorare a più livelli e livelli. Esporre le metriche del gateway per soluzioni industriali o abilitate per il gateway.

Livelli di architettura IoT

I principi di progettazione dell'efficienza delle prestazioni consentono di chiarire le considerazioni per garantire che il carico di lavoro IoT soddisfi i requisiti nei livelli fondamentali dell'architettura IoT. Le sezioni seguenti illustrano le specifiche del livello per il pilastro dell'efficienza delle prestazioni.

Diagramma che mostra i livelli e le attività trasversali nell'architettura IoT.

Livello dispositivo e gateway

Un dispositivo IoT è un dispositivo di elaborazione che si connette a una soluzione IoT e può raccogliere, trasmettere o ricevere dati. I gateway sono punti di connessione tra dispositivi e cloud o tra IoT e altri componenti.

Ottimizzare le funzionalità hardware

L'aggiornamento o la sostituzione dell'hardware è costoso e richiede molto tempo. Ridimensionare i dispositivi IoT per la capacità e le funzionalità necessarie in anticipo.

Per ottimizzare le funzionalità hardware:

  • Eseguire attività a elevato utilizzo di calcolo e output di input su hardware specifico. Ad esempio, eseguire algoritmi di Machine Learning (ML) in unità di elaborazione grafica locali (GPU).

  • Ottimizzare le funzionalità hardware esistenti usando linguaggi e framework efficienti come Embedded C e Rust Embedded. È possibile usare Azure IoT Embedded C SDK durante lo sviluppo per i dispositivi vincolati o quando la maggior parte dello stack di sicurezza e comunicazione è già disponibile nel dispositivo.

  • Usare Azure IoT SDK per dispositivi per C per tutti gli elementi necessari per connettersi al gateway cloud. Gli SDK (Device Development Kit) di Azure IoT gestiscono la traduzione dei messaggi necessaria, la gestione degli errori e i meccanismi di ripetizione dei tentativi necessari per una connessione resiliente.

Il ridimensionamento è importante per il livello del dispositivo e del gateway. Per ridimensionare questo livello:

  • Usare i gateway come unità di scala. Se la soluzione aggiunge dispositivi o asset IoT (ad esempio server OPC UA ) nel tempo, usare più gateway perimetrali per inserire i dati da tali server.

  • Eseguire una valutazione della scalabilità per tutti i livelli upstream, inclusi i gateway cloud e i servizi cloud. Per altre informazioni sull'uso di più hub IoT come unità di scala per una soluzione IoT, vedere Come effettuare il provisioning dei dispositivi negli hub IoT.

Eseguire carichi di lavoro al perimetro

A seconda dei vincoli di sistema, ad esempio velocità effettiva o latenza di rete, prendere in considerazione l'esecuzione di alcuni carichi di lavoro nella rete perimetrale. Separare i carichi di lavoro in base al vincolo di tempo e ai tempi di risposta necessari. Usare il calcolo locale per scenari a bassa latenza e con connessione intermittente. Eseguire carichi di lavoro su larga scala nel cloud.

Nel perimetro usare le code di priorità per inviare flussi di dati diversi nell'ordine richiesto. Con le code di priorità i messaggi vengono inviati in ordine di priorità, ma hub IoT di Azure ancora inserisce nel journal i messaggi in base all'ordine di ricezione.

Ottimizzare la connettività dei dispositivi

Considerare i punti seguenti per ottimizzare la connettività dei dispositivi:

  • Usare gli hub IoT con la latenza più bassa per i dispositivi. Potrebbero essere necessari hub IoT in più aree quando i dispositivi devono connettersi da posizioni geografiche diverse.

  • Usare una connessione con stato aperto per le comunicazioni bidirezionali tra i dispositivi e la soluzione IoT per ridurre al minimo l'overhead di configurazione delle connessioni.

  • Non connettere tutti i dispositivi contemporaneamente, ad esempio dopo un'interruzione dell'alimentazione a livello di area. Usare il backoff esponenziale troncato con l'introduzione di jitter durante la ripetizione dei tentativi.

Ottimizzare gli scenari offline

È possibile fornire ai dispositivi informazioni e contesto sufficienti per funzionare senza una connessione cloud e archiviare i dati in locale, in modo che possano essere ripristinati da disconnessioni e riavvii. Le strategie seguenti supportano le operazioni offline:

  • Assicurarsi che il dispositivo sia in grado di archiviare i dati in locale quando il dispositivo non è connesso, inclusi i log e i dati di telemetria memorizzati nella cache in base alla priorità.

  • Impostare una durata (TTL) sui dati, in modo che i dati scaduti vengano rimossi automaticamente.

  • Eliminare i dati meno importanti quando il dispositivo non è connesso, per ridurre l'archiviazione locale necessaria e ridurre i tempi di sincronizzazione quando il dispositivo si riconnette.

  • Se l'archiviazione dei dispositivi perimetrali raggiunge la capacità, usare una strategia di rimozione della cache, ad esempio fiFO (first-in last-out), last-in first-out (LIFO) o basata su priorità.

  • È consigliabile usare un disco o un controller disco separato per archiviare i dati, in modo che il runtime del dispositivo o l'applicazione continuino a funzionare quando lo spazio di archiviazione è insufficiente.

Usare dispositivi gemelli e moduli gemelli per sincronizzare in modo asincrono le informazioni sullo stato tra dispositivi e cloud, anche quando i dispositivi non sono attualmente connessi al gateway cloud. I dispositivi gemelli e i moduli gemelli contengono solo lo stato corrente in un momento specifico, non alcuna cronologia o informazioni rimosse.

Livello di inserimento e comunicazione

Il livello di inserimento e comunicazione dei dati invia i dati dai dispositivi alla soluzione IoT. I modelli di comunicazione tra dispositivi e la soluzione IoT includono:

  • Messaggi da dispositivo a cloud.
  • Messaggi da cloud a dispositivo.
  • Caricamenti di file.
  • Dispositivi gemelli.
  • Metodi diretti.

Ottimizzare l'efficienza della messaggistica

Il numero e le dimensioni dei messaggi da dispositivo a cloud sono un parametro importante per l'efficienza delle prestazioni della soluzione IoT. I servizi Azure IoT, ad esempio hub IoT e Azure IoT Central, definiscono i limiti dei messaggi per livello, che influiscono sia sulle prestazioni della soluzione che sui costi.

Prendere in considerazione i suggerimenti seguenti per la messaggistica:

  • hub IoT e IoT Central calcolano i conteggi giornalieri dei messaggi di quota in base a una dimensione di 4 KB. L'invio di messaggi più piccoli lascia una certa capacità inutilizzata. In generale, usare le dimensioni dei messaggi vicino al limite di 4 KB. Raggruppare messaggi da dispositivo a cloud più piccoli in messaggi di dimensioni maggiori per ridurre il numero totale di messaggi, ma considerare la latenza introdotta durante la combinazione dei messaggi.

  • Evitare comunicazioni chiacchiere. Per la comunicazione perimetrale da dispositivo a dispositivo o da modulo a modulo, non progettare interazioni che inviano molti messaggi di piccole dimensioni.

  • Usare batch di messaggi di Azure IoT Edge SDK predefiniti per Advanced Message Queuing Protocol (AMQP) per inviare più messaggi di telemetria al cloud.

  • Usare l'invio in batch a livello di applicazione combinando più messaggi più piccoli nel dispositivo downstream e inviando messaggi più grandi al gateway perimetrale. Questo batch limita il sovraccarico dei messaggi e riduce le scritture nell'archiviazione su disco perimetrale locale.

  • Usare il multiplexing della connessione AMQP per ridurre le dipendenze dai limiti delle connessioni TCP (Transmission Control Protocol) per ogni client SDK. Con il multiplexing della connessione AMQP, più dispositivi possono usare una singola connessione TCP per hub IoT.

  • Usare metodi diretti per le interazioni request-reply che possono avere esito positivo o negativo immediatamente, dopo un timeout specificato dall'utente. Questo approccio è utile per gli scenari in cui il corso di azione è diverso a seconda che il dispositivo abbia risposto.

  • Usare i dispositivi gemelli per informazioni sullo stato del dispositivo, inclusi i metadati e le configurazioni. hub IoT gestisce un dispositivo gemello per ogni dispositivo connesso.

Informazioni sulle quote e la limitazione della messaggistica

Il livello hub IoT imposta i limiti del gateway cloud per unità. La quota di messaggistica definisce la velocità effettiva sostenuta e le tariffe di invio sostenute per il livello. hub IoT può gestire carichi superiori a queste quote per brevi durate per gestire in modo resiliente i picchi o i sovraccarici del carico.

Un altro limite importante è il carico o la limitazione oraria o giornaliera del servizio. I limiti di limitazione proteggono un hub IoT da un carico eccessivo per troppo tempo.

I diagrammi seguenti illustrano la relazione tra i limiti di carico, quota e limitazione. Il diagramma sinistro mostra che hub IoT può gestire un carico elevato costante o sostenuto fino al livello della quota per il livello di hub IoT. Il diagramma destro mostra che hub IoT può gestire il carico che cambia nel tempo, purché non raggiunge il limite di limitazione e in media non supera la quota per il livello hub IoT.

Diagramma sinistro che mostra costantemente un carico elevato al di sotto della quota. Rispetto al diagramma destro che mostra un carico inferiore con picchi occasionali.

Ottimizzare l'elaborazione dei messaggi

I messaggi di un dispositivo o di un gateway potrebbero dover essere tradotti, elaborati o arricchiti con altre informazioni prima dell'archiviazione. Questo passaggio potrebbe richiedere molto tempo, quindi è importante valutare l'effetto sulle prestazioni. Alcune raccomandazioni sono in conflitto, ad esempio l'uso della compressione per ottimizzare il trasferimento dei dati e evitare l'elaborazione cloud nella decrittografia dei messaggi. Queste raccomandazioni devono essere bilanciate e valutate rispetto ad altri pilastri dell'architettura e requisiti di soluzione.

Per ottimizzare le prestazioni di elaborazione dati cloud:

  • Ottimizzare il formato dati usato per inviare dati al cloud. Confrontare le prestazioni (e i costi) della larghezza di banda rispetto al miglioramento delle prestazioni con meno elaborazione dati cloud necessaria. È consigliabile usare hub IoT arricchimento dei messaggi per aggiungere contesto ai messaggi del dispositivo.

  • Eseguire l'elaborazione di eventi critici in caso di dati inseriti non appena arriva, anziché archiviare dati non elaborati e richiedere query complesse per acquisire i dati. Per l'elaborazione di eventi critici, prendere in considerazione gli effetti dell'arrivo in ritardo e della finestra. Valutare in base al caso d'uso, ad esempio la gestione degli allarmi critici rispetto all'arricchimento dei messaggi.

  • Selezionare il livello di hub IoT appropriato, Basic o Standard, in base ai requisiti della soluzione. Tenere presente le funzionalità che il livello Basic non supporta.

  • Selezionare il livello di hub IoT appropriato, 1, 2 o 3 e il numero di istanze in base alla velocità effettiva dei dati, alle quote e alle limitazioni delle operazioni. Per IoT Central selezionare il livello corretto: Standard 0, Standard 1 o Standard 2, in base al numero di messaggi inviati dai dispositivi al cloud.

  • È consigliabile usare Griglia di eventi di Azure per il routing degli eventi publish-subscribe. Per altre informazioni, vedere React per hub IoT eventi usando Griglia di eventi per attivare azionie Confrontare il routing dei messaggi e Griglia di eventi per hub IoT.

Classificare in ordine di priorità i dati

Alcuni dati inviati dai dispositivi al cloud potrebbero essere più importanti di altri dati. La classificazione e la gestione dei dati in base alla priorità è una procedura consigliata per l'efficienza delle prestazioni.

Ad esempio, un sensore termostato invia temperatura, umidità e altri dati di telemetria, ma invia anche un allarme quando la temperatura non rientra in un intervallo definito. Il sistema classifica il messaggio di allarme come priorità più alta e lo gestisce in modo diverso rispetto ai dati di telemetria della temperatura.

Considerare i consigli seguenti per la classificazione e la gestione dei dati:

  • Usare IoT Edge code di priorità per assicurarsi che i dati importanti siano classificati in ordine di priorità durante l'invio a hub IoT. IoT Edge memorizza nel buffer i messaggi quando non è disponibile alcuna connettività, ma dopo il ripristino della connessione, invia prima tutti i messaggi memorizzati nel buffer in ordine di priorità, seguiti da nuovi messaggi.

  • Usare hub IoT routing dei messaggi per separare le route per priorità dei dati diverse a seconda del caso d'uso. hub IoT routing dei messaggi aggiunge una certa latenza.

  • Salvare e inviare dati con priorità bassa a intervalli più lunghi oppure usando caricamenti batch o file. Il rilevamento malware nei file caricati aumenta la latenza.

  • Separare i messaggi in base ai vincoli di tempo. Ad esempio, inviare messaggi a hub IoT direttamente quando è presente un vincolo di tempo e usare il caricamento di file tramite hub IoT o trasferimento di dati batch, ad esempio Azure Data Factory se non è presente alcun vincolo di tempo. È possibile usare il modulo BLOB IoT Edge per il caricamento di file.

Livello di modellazione e gestione dei dispositivi

Diversi tipi di dispositivi possono connettersi a una soluzione IoT e una soluzione IoT può connettersi a molti dispositivi e gateway contemporaneamente. Oltre a connettere e configurare dispositivi e gateway, la soluzione IoT deve comprendere i dati acquisiti e inseriti dai gateway e deve trasferire e contestualizzare tali dati.

I componenti IoT possono usare protocolli, connettività, frequenze di inserimento dati e modelli di comunicazione diversi. La soluzione IoT deve essere in grado di gestire quali dispositivi e gateway sono connessi e come sono configurati.

Per gestire dispositivi e configurazioni per l'efficienza delle prestazioni:

  • Ottimizzare il ridimensionamento in base al carico del dispositivo e del messaggio.

  • Conoscere il numero di messaggi che il gateway cloud può gestire, a seconda del livello e del numero di unità.

  • Tenere conto delle anomalie nella velocità effettiva sostenuta a causa della distribuzione dei dati, della stagionalità e del bursting.

  • Usare più gateway cloud quando la soluzione IoT deve gestire milioni di dispositivi. Usare dps per assegnare i dispositivi agli hub IoT.

Effettuare il provisioning dei dispositivi con dps

Usare DPS per configurare una connessione a un hub IoT durante il provisioning, quando la connessione hub IoT non è più disponibile o durante il riavvio del dispositivo.

  • Usare i criteri di distribuzione ponderati del servizio Device Provisioning in modo uniforme per regolare il peso per il provisioning, in base al caso d'uso. Per altre informazioni, vedere Come i criteri di allocazione assegnano i dispositivi agli hub IoT.

  • Prendere in considerazione il provisioning dei dispositivi nella soluzione IoT in un periodo di tempo, distribuito o in batch più piccoli, per bilanciare il carico e la quota del servizio Device Provisioning. Durante l'onboarding in batch, pianificare i batch e la sequenza temporale complessiva della migrazione. Tenere conto dei limiti del servizio Device Provisioning in numero di operazioni, registrazioni dei dispositivi e numero massimo di connessioni al minuto, tra cui latenza e tentativi.

  • Usare dps per allocare i dispositivi agli hub IoT in aree diverse in base alla latenza.

  • Usare una strategia di memorizzazione nella cache per il servizio Device Provisioning stringa di connessione per ridurre le operazioni di riconnessione del servizio Device Provisioning.

Gestire i dispositivi downstream

Una soluzione IoT è scalabile orizzontalmente se dispone di più gateway o dispositivi perimetrali per sito o posizione e dispositivi downstream che possono connettersi a uno di questi gateway o dispositivi perimetrali.

  • Usare più gateway e dispositivi perimetrali in modalità di conversione quando il numero di dispositivi downstream, i messaggi e le dimensioni dei messaggi cambiano nel tempo e il protocollo o il messaggio deve essere tradotto. I gateway e i dispositivi perimetrali in modalità di conversione possono convertire protocolli o messaggi da e verso dispositivi downstream, ma è necessario un mapping per trovare il gateway a cui è connesso un dispositivo downstream. Tenere conto dell'overhead aggiunto per la conversione dei messaggi e il buffering nel gateway o nel dispositivo perimetrale quando si usa la modalità di conversione.

  • Usare più gateway e dispositivi perimetrali in modalità trasparente per connettere i dispositivi MQTT (DownStream Message Queue Telemetry Transport) o AMQP quando il numero può cambiare nel tempo per sito o posizione. I gateway e i dispositivi perimetrali in modalità trasparente possono connettere dispositivi MQTT/AMQP per la comunicazione bidirezionale. Tenere conto del sovraccarico di buffer dei messaggi, archiviazione e configurazione aggiuntivo nel gateway o nel dispositivo perimetrale quando si usa la modalità trasparente.

Livello di trasporto

Il livello di trasporto gestisce le connessioni tra un dispositivo e la soluzione IoT, trasformando i messaggi IoT in pacchetti di rete e inviandoli tramite la rete fisica. Le soluzioni IoT usano in genere protocolli di connessione AMQP e MQTT.

Ottimizzare l'utilizzo delle risorse

La connessione tra un dispositivo e il cloud deve essere sicura, affidabile e scalabile per gestire il numero di dispositivi e messaggi di destinazione.

  • Usare una connessione con stato aperta da un dispositivo al gateway cloud. hub IoT è ottimizzato per la gestione di milioni di connessioni aperte con stato tramite protocolli MQTT, AMQP o WebSocket. Mantenere le connessioni aperte ai dispositivi per ridurre al minimo il sovraccarico degli handshake di sicurezza, dell'autenticazione e dell'autorizzazione. Questa procedura migliora le prestazioni e riduce notevolmente la larghezza di banda necessaria.

  • Usare un protocollo AMQP che supporta il multiplexing di più canali in una singola connessione per ridurre al minimo il numero di connessioni aperte richieste dal gateway cloud. Usando il multiplexing, un gateway trasparente può connettere più dispositivi foglia usando i propri canali tramite una singola connessione.

  • Usare i modelli di gateway cloud dei dispositivi e dei moduli gemelli per scambiare in modo asincrono le informazioni sullo stato tra i dispositivi e il cloud.

  • Configurare dps per spostare lo stato del dispositivo quando un dispositivo si connette a un altro gateway cloud.

Ottimizzare la comunicazione dei dati

Il numero e le dimensioni dei messaggi da dispositivo a cloud influiscono sulle prestazioni e sui costi. La valutazione della comunicazione dei dati è fondamentale per l'efficienza delle prestazioni nel carico di lavoro IoT.

  • Usare un formato di dati e una codifica efficienti che non usano una larghezza di banda estesa per inviare dati al cloud. Per le reti a larghezza di banda ridotta, è consigliabile usare un formato compresso o binario, ma comprendere il sovraccarico di scompressione o conversione dei dati nel cloud.

  • È consigliabile archiviare dati con volume elevato in locale e caricarlo ogni ora o ogni giorno.

  • Raggruppare molti piccoli messaggi da dispositivo a cloud in meno messaggi più grandi per ridurre il numero totale. Tuttavia, non inviare solo messaggi di grandi dimensioni, ma bilanciare tra le dimensioni medie dei messaggi e la velocità effettiva.

Livello di archiviazione

I diversi tipi di dati raccolti e a cui si fa riferimento in una soluzione IoT richiedono spesso tipi di archiviazione specializzati e ottimizzati per diversi scenari su dispositivi, gateway e cloud. I dati che devono essere disponibili in più aree geografiche a livello globale o locale e, in alcuni casi, replicati per ottimizzare la latenza, aumentano la complessità dell'archiviazione IoT.

  • Usare un database di serie temporali per archiviare i dati delle serie temporali con timestamp e valori. Arricchire i dati della serie temporale con colonne per il filtro, ad esempio CustomerID, RoomID o altre colonne specifiche del caso d'uso.

  • Usare l'archiviazione del dispositivo e del gateway per la memorizzazione nella cache dei dati o per mantenere i dati quando si disconnette. Account per lo spazio di archiviazione richiesto. Non mantenere tutti i dati, ma usare il downampling, archiviare solo aggregazioni o archiviare i dati per periodi di tempo limitati.

  • È consigliabile separare l'inserimento dei dati e l'elaborazione degli eventi dalle esigenze di creazione di report e archiviazione di integrazione.

  • Usare il tipo di archiviazione dati adatto alla necessità di velocità effettiva, dimensioni, periodo di conservazione, volume di dati, requisiti CRUD e replica a livello di area necessari. Alcuni esempi sono Azure Data Lake Storage, Azure Esplora dati, Azure SQL e Azure Cosmos DB.

Livello di elaborazione e analisi degli eventi

È possibile elaborare i dati generati dai dispositivi prima di inviarli a o all'interno della soluzione IoT. L'elaborazione dei dati può includere traduzione, contestualizzazione, filtro e routing o analisi più avanzate, ad esempio analisi delle tendenze o rilevamento anomalie.

Ottimizzare l'elaborazione perimetrale rispetto all'elaborazione cloud

Eseguire carichi di lavoro in tempo reale e quasi in tempo reale, o di piccole dimensioni, ottimizzate, a bassa latenza con vincoli di tempo, su dispositivi o sul bordo usando il calcolo locale. Eseguire carichi di lavoro più grandi o altri carichi di lavoro che hanno aggiunto o esterno dati o dipendenze di calcolo, nel cloud.

Ad esempio, eseguire un algoritmo di Machine Learning sul bordo per contare le persone in un flusso video e inviare un evento contenente il conteggio al cloud. Usare il cloud per confrontare le tendenze tra diverse factory.

Eseguire carichi di lavoro di analisi sul bordo usando il modulo Analisi di flusso Edge. Ad esempio, è possibile eseguire il rilevamento anomalie al bordo ed etichettare gli eventi inviati al cloud con l'anomalia rilevata. Quando si esegue l'analisi sul bordo, tenere conto della latenza aggiuntiva, dell'arrivo in ritardo e dell'impatto sulla finestra.

Tenere presente il sovraccarico di un carico di lavoro perimetrale con molti dispositivi downstream connessi. Il nodo perimetrale deve inoltrare o elaborare tutti i messaggi e gestire la memorizzazione nella cache di tutti i dati se è presente connettività cloud intermittente. Convalidare l'impatto sulle prestazioni sulla soluzione eseguendo test con il massimo pianificato di dispositivi e messaggi downstream per nodo perimetrale. Tenere presente l'impatto sulle prestazioni che la traduzione o l'arricchimento dei messaggi possono avere sul bordo, hub IoT o sull'elaborazione di eventi cloud.

Classificare singoli carichi di lavoro

Separare i carichi di lavoro in base al vincolo di tempo e i tempi di risposta necessari, ad esempio la risposta entro secondi e batch all'ora. I sistemi hardware ibridi su chip (SoCs) possono supportare i carichi di lavoro a livello di dispositivo.

Nel bordo usare le code di priorità per separare flussi di dati diversi con priorità diverse e TTL. Ad esempio, gli allarmi devono essere sempre inviati prima, ma hanno un TTL inferiore rispetto ai dati di telemetria.

Nel cloud è possibile usare i gruppi di consumer in Hub eventi di Azure per separare diversi flussi di dati e gestire e ridimensionare gli allarmi in modo diverso dai dati di telemetria. È anche possibile usare route hub IoT per separare flussi di dati diversi, con filtri e endpoint separati. hub IoT routing dei messaggi aggiunge una latenza. Usare Hub eventi, Griglia di eventi di Azure o bus di servizio di Azure per distribuire i carichi di lavoro durante la protezione contro la pressione indietro nel cloud.

Le regole di routing hub IoT complesse possono influire sulla velocità effettiva, soprattutto le regole di routing con filtri JSON del corpo del messaggio, in cui ogni messaggio deve essere deserializzato e analizzato.

Gestire i dati cloud ad alto volume

Per ottimizzare l'efficienza delle prestazioni per i dati cloud ad alto volume:

  • Usare l'integrazione del servizio out-of-box tra hub IoT e destinazioni dati come Azure Data Lake Storage e Azure Esplora dati che sono già ottimizzate per la velocità effettiva ad alte prestazioni.

  • Usare l'SDK di Hub eventi per sviluppare l'inserimento personalizzato da un hub IoT con il processore di eventi incluso. Il processore di eventi può ribilanciare i dispositivi e gli host.

  • Usare il numero corretto di hub IoT partizioni e gruppi di consumer per il numero di lettori di dati simultanei e la velocità effettiva necessaria.

  • Separare l'archiviazione necessaria per l'inserimento dei dati e l'elaborazione degli eventi dall'archiviazione necessaria per la creazione di report e l'integrazione.

  • Usare l'archiviazione dati adatta alle esigenze in base alla velocità effettiva, alle dimensioni, al periodo di conservazione, al volume di dati, ai requisiti CRUD e alla replica a livello di area. Gli esempi sono Azure Data Lake Storage, Azure Esplora dati, Azure SQL o Azure Cosmos DB. Per altre informazioni, vedere Selezionare un archivio dati di Azure per l'applicazione.

Livello di integrazione

Il livello di integrazione connette una soluzione IoT ad altri servizi e applicazioni aziendali.

  • Separare la pipeline di inserimento della soluzione IoT dall'elaborazione dell'integrazione. Assicurarsi che le query complesse o i carichi dal livello di integrazione non influiscano sulle prestazioni di inserimento dei dati.

  • Usare API ben definite e con versioni per l'accesso ai dati e ai comandi IoT.

  • Evitare strumenti per gli utenti finali per creare query definite dall'utente nell'archiviazione dati IoT. È consigliabile usare archivi dati separati per l'integrazione e per la creazione di report.

Livello DevOps

Usare i meccanismi DevOps seguenti per ottimizzare l'efficienza delle prestazioni:

  • Registro di sistema connesso per la memorizzazione nella cache locale e la distribuzione delle immagini del contenitore.

  • hub IoT aggiornare le distribuzioni a più dispositivi contemporaneamente, inclusi i dispositivi e i gateway.

  • Dispositivi gemelli e moduli gemelli per aggiornare le configurazioni del dispositivo in modo scalabile ed efficiente.

  • Test delle prestazioni, inclusi test di stress e carico per replicare l'ambiente di produzione, ad esempio la posizione e i dispositivi eterogeni.

Monitoraggio

Usare Monitoraggio di Azure per raccogliere metriche hub IoT con avvisi per le metriche critiche. Configurare gli avvisi di Monitoraggio di Azure in base ai limiti di scalabilità correnti, ad esempio il dispositivo ai messaggi cloud inviati al secondo. Impostare l'avviso su una percentuale del limite, ad esempio il 75%, per la pre-notifica dei limiti di scalabilità imminenti. Configurare anche gli avvisi di Monitoraggio di Azure per i log e le metriche, ad esempio il numero di errori di limitazione.

Impostare gli avvisi del servizio Integrità servizio di Azure per attivare le notifiche quando hub IoT cambia lo stato.

Passaggi successivi