Delen via


Prestatie-efficiëntie in uw IoT-workload

IoT-oplossingen omvatten apparaat-, edge- en cloudonderdelen en variëren van miljoenen kleine apparaten die zijn verbonden met de cloud tot industriële oplossingen waarbij enkele krachtige servers gateways zijn voor cloudconnectiviteit. Het aantal apparaten, hun fysieke en geografische plaatsing en het aantal berichten dat ze verzenden of ontvangen, zijn enkele van de factoren die de prestatie-efficiëntie van een IoT-workload kunnen definiëren.

Prestatie-efficiëntie omvat ook de mogelijkheid van een IoT-workload om efficiënt te schalen om aan de vraag te voldoen. Een voordeel van de cloud is de geografische beschikbaarheid en de mogelijkheid om services op aanvraag te schalen, met weinig of geen downtime van toepassingen.

Prestatie-efficiëntie vertegenwoordigt prestaties ten opzichte van resourcegebruik onder opgegeven voorwaarden. Prestatie-efficiëntie meet hoe goed een product of systeem bij het uitvoeren van de functies voldoet aan de vereisten voor:

  • Tijdgedrag, zoals reactietijden, verwerkingstijden en doorvoersnelheden.

  • Resourcegebruik, of de hoeveelheden en typen gebruikte resources.

  • Capaciteit of maximumlimieten.

De efficiëntie van de prestaties in uw IoT-workload evalueren

Als u uw IoT-workload wilt beoordelen met behulp van de Well-Architected Framework Performance Efficiency-pijler, voltooit u de vragen over prestatie-efficiëntie voor IoT-workloads in de Azure Well-Architected Review. Nadat de evaluatie belangrijke aanbevelingen voor prestatie-efficiëntie voor uw IoT-oplossing heeft geïdentificeerd, gebruikt u de volgende inhoud om de aanbevelingen te implementeren.

Ontwerpprincipes

Vijf pijlers van uitstekende architectuur zijn de basis voor de ontwerpmethodologie voor IoT-workloads. Deze pijlers dienen als kompas voor latere ontwerpbeslissingen in de belangrijkste IoT-ontwerpgebieden. De volgende ontwerpprincipes breiden de kwaliteitspijler van het Azure Well-Architected Framework - Performance Efficiency uit.

Ontwerpprincipe Overwegingen
Ontwerpen voor horizontaal schalen Een IoT-oplossing kan beginnen met een paar honderd apparaten of berichten en groeien tot miljoenen apparaten en berichten per minuut. U kunt cloudservices eenvoudig schalen om de belasting te verhogen, maar de situatie kan complexer zijn voor IoT-apparaten en gateways. IoT-apparaten kunnen worden ontworpen of geïmplementeerd voordat de oplossing is voltooid. Industriële IoT of vergelijkbare industrieën kunnen de levensduur van apparaten in tientallen jaren meten. Het bijwerken van de capaciteit door het vervangen van apparaten is kostbaar. In deze scenario's is het vooral belangrijk om vooruit te plannen.
Shift-left bij prestatietests Test vroeg en test vaak om problemen vroeg te ondervangen. Houd rekening met de complexiteit van het hebben van sensoren, apparaten en gateways op geografisch verschillende locaties met verschillende kenmerken, snelheid en betrouwbaarheid van communicatie. Plan deze complexiteit in uw tests en zorg ervoor dat u test op foutscenario's, zoals het verbreken van de netwerkverbinding. Voer stress- en belastingstests uit voor alle onderdelen van het apparaat, de edge en de cloud in uw IoT-oplossing.
Continu controleren op prestaties in productie Als u verschillende typen apparaten in meerdere geografische regio's wilt bewaken, gebruikt u een gedistribueerde bewakingsoplossing. De hoeveelheid informatie die wordt bewaakt en naar de cloud wordt verzonden, afwegen tegen de kosten voor geheugen en prestaties. Overdracht afstemmen voor diagnostische scenario's en bewaken op meerdere niveaus en lagen. Metrische gatewaygegevens beschikbaar maken voor industriële of gatewayoplossingen.

Lagen van IoT-architectuur

Ontwerpprincipes voor prestatie-efficiëntie helpen bij het verduidelijken van overwegingen om ervoor te zorgen dat uw IoT-workload voldoet aan de vereisten in de basislagen van de IoT-architectuur. In de volgende secties worden de specifieke laaggegevens voor de prestatie-efficiëntiepijler beschreven.

Diagram met de lagen en horizontale activiteiten in de IoT-architectuur.

Apparaat- en gatewaylaag

Een IoT-apparaat is een computerapparaat dat verbinding maakt met een IoT-oplossing en gegevens kan verzamelen, verzenden of ontvangen. Gateways zijn verbindingspunten tussen apparaten en de cloud, of tussen IoT en andere onderdelen.

Hardwaremogelijkheden optimaliseren

Het upgraden of vervangen van hardware is kostbaar en tijdrovend. Vooraf de grootte van IoT-apparaten aanpassen aan de vereiste capaciteit en functionaliteit.

Optimaliseren voor hardwaremogelijkheden:

  • Voer reken- en invoer-uitvoerintensieve taken uit op specifieke hardware. Voer bijvoorbeeld machine learning-algoritmen (ML) uit op lokale GPU's (Graphics Processing Units).

  • Optimaliseer bestaande hardwaremogelijkheden met behulp van efficiënte talen en frameworks zoals Embedded C en Rust Embedded. U kunt de Azure IoT Embedded C SDK gebruiken bij het ontwikkelen voor beperkte apparaten of wanneer het grootste deel van de beveiligings- en communicatiestack al beschikbaar is op het apparaat.

  • Gebruik de Azure IoT-apparaat-SDK voor C voor alles wat u nodig hebt om verbinding te maken met de cloudgateway. De SDK's (Software Development Kits) van Azure IoT Device beheren de vereiste berichtomzetting, foutafhandeling en mechanismen voor opnieuw proberen die nodig zijn voor een tolerante verbinding.

Schalen is belangrijk voor de apparaat- en gatewaylaag. Deze laag schalen:

  • Gateways gebruiken als schaaleenheden. Als uw oplossing in de loop van de tijd IoT-apparaten of -assets (bijvoorbeeld OPC UA-servers ) toevoegt, gebruikt u meer edge-gateways om gegevens van die servers op te nemen.

  • Voer een schaalevaluatie uit voor alle upstream-lagen, inclusief cloudgateways en cloudservices. Zie Apparaten inrichten in ioT-hubs voor meer informatie over het gebruik van meerdere IoT-hubs als schaaleenheden voor een IoT-oplossing.

Workloads uitvoeren aan de rand

Afhankelijk van systeembeperkingen, zoals netwerkdoorvoer of latentie, kunt u overwegen om bepaalde workloads aan de rand uit te voeren. Werkbelastingen scheiden op basis van tijdsbeperking en vereiste latentie- en reactietijden. Gebruik lokale rekenkracht voor scenario's met lage latentie en onregelmatig verbonden scenario's. Grootschalige workloads uitvoeren in de cloud.

Gebruik prioriteitswachtrijen aan de rand om verschillende gegevensstromen in de vereiste volgorde te verzenden. Met prioriteitswachtrijen worden berichten in volgorde van prioriteit verzonden, maar Azure IoT Hub logboeken nog steeds berichten op basis van ontvangstvolgorde.

Apparaatconnectiviteit optimaliseren

Houd rekening met de volgende punten om de apparaatconnectiviteit te optimaliseren:

  • Gebruik de IoT Hubs met de laagste latentie voor uw apparaten. Mogelijk hebt u IoT Hubs in meerdere regio's nodig wanneer apparaten verbinding moeten maken vanaf verschillende geografische locaties.

  • Gebruik een open stateful verbinding voor bidirectionele communicatie tussen de apparaten en de IoT-oplossing om de overhead van het instellen van verbindingen te minimaliseren.

  • Sluit niet alle apparaten tegelijk aan, bijvoorbeeld na een regionale stroomstoring. Gebruik afgekapte exponentieel uitstel met geïntroduceerde jitter bij het opnieuw proberen.

Offlinescenario's optimaliseren

U kunt apparaten voorzien van voldoende informatie en context om te werken zonder een cloudverbinding en om gegevens lokaal op te slaan, zodat ze kunnen herstellen van verbroken verbindingen en opnieuw opstarten. De volgende strategieën ondersteunen offlinebewerkingen:

  • Zorg ervoor dat het apparaat gegevens lokaal kan opslaan wanneer het apparaat niet is verbonden, inclusief logboeken en telemetrie in de cache op basis van prioriteit.

  • Stel een time to live (TTL) in voor de gegevens, zodat verlopen gegevens automatisch worden verwijderd.

  • Verwijder minder belangrijke gegevens wanneer het apparaat niet is verbonden, om lokale opslag te verminderen en de synchronisatietijd te verkorten wanneer het apparaat opnieuw verbinding maakt.

  • Als de opslag van edge-apparaten de capaciteit bereikt, gebruikt u een strategie voor cacheverwijdering, zoals FIFO (first-in last-out), last-in first-out (LIFO) of op basis van prioriteit.

  • Overweeg het gebruik van een afzonderlijke schijf of schijfcontroller om gegevens op te slaan, zodat de runtime of toepassing van het apparaat kan blijven werken wanneer er weinig opslagruimte beschikbaar is.

Gebruik apparaatdubbels en moduledubbels om statusinformatie asynchroon te synchroniseren tussen apparaten en de cloud, zelfs wanneer apparaten momenteel niet zijn verbonden met de cloudgateway. Apparaat- en moduledubbels bevatten alleen de huidige status op een bepaald moment, geen geschiedenis of verwijderde informatie.

Opname- en communicatielaag

De gegevensopname- en communicatielaag verzendt gegevens van de apparaten naar de IoT-oplossing. Communicatiepatronen tussen apparaten en de IoT-oplossing zijn onder andere:

  • Apparaat-naar-cloud-berichten.
  • Cloud-naar-apparaat-berichten.
  • Bestandsuploads.
  • Apparaatdubbels.
  • Directe methoden.

Efficiëntie van berichten optimaliseren

Het aantal en de grootte van berichten van apparaat naar cloud is een belangrijke parameter voor de efficiëntie van de prestaties van de IoT-oplossing. Azure IoT-services zoals IoT Hub en Azure IoT Central definiëren berichtlimieten per laag, wat van invloed is op zowel de prestaties als de kosten van de oplossing.

Houd rekening met de volgende aanbevelingen voor berichten:

  • IoT Hub en IoT Central berekenen het dagelijkse aantal quotumberichten op basis van een berichtgrootte van 4 kB. Als u kleinere berichten verzendt, blijft een deel van de capaciteit ongebruikt. Over het algemeen gebruikt u berichtgrootten dicht bij de grens van 4 kB. Groepeer kleinere apparaat-naar-cloud-berichten in grotere berichten om het totale aantal berichten te verminderen, maar houd rekening met de geïntroduceerde latentie bij het combineren van berichten.

  • Vermijd spraakmakende communicatie. Ontwerp geen interacties die veel kleine berichten verzenden voor apparaat-naar-apparaat- of module-naar-module-edge-communicatie.

  • Gebruik ingebouwde Azure IoT Edge SDK-berichtbatch voor Advanced Message Queuing Protocol (AMQP) om meerdere telemetrieberichten naar de cloud te verzenden.

  • Gebruik batchverwerking op toepassingsniveau door meerdere kleinere berichten op het downstreamapparaat te combineren en grotere berichten naar de edge-gateway te verzenden. Deze batchverwerking beperkt de berichtoverhead en vermindert schrijfbewerkingen naar lokale edge-schijfopslag.

  • Gebruik AMQP-verbindingsmultiplexing om de afhankelijkheid van TCP-verbindingen (Transmission Control Protocol) per SDK-client te verminderen. Met AMQP-verbindingsmultiplexing kunnen meerdere apparaten één TCP-verbinding gebruiken om te IoT Hub.

  • Gebruik directe methoden voor interactie tussen aanvragen en antwoorden die direct kunnen slagen of mislukken, na een door de gebruiker opgegeven time-out. Deze aanpak is handig voor scenario's waarin de actie anders is, afhankelijk van of het apparaat heeft gereageerd.

  • Gebruik apparaatdubbels voor informatie over de apparaatstatus, waaronder metagegevens en configuraties. IoT Hub onderhoudt een apparaatdubbel voor elk apparaat dat u verbindt.

Inzicht in berichtenquota en beperking

De IoT Hub laag stelt limieten voor de cloudgateway per eenheid in. Het quotum voor berichten definieert aanhoudende doorvoer en langdurige verzendsnelheden voor de laag. IoT Hub kan belastingen boven deze quota voor korte tijd verwerken om bursts of belastingoverschrijdingen flexibel te verwerken.

Een andere belangrijke limiet is de belasting per uur of dag van de service of de beperkingslimiet . Beperkingslimieten beschermen een IoT-hub te lang tegen te veel belasting.

In de volgende diagrammen ziet u de relatie tussen belastings-, quotum- en beperkingslimieten. In het linkerdiagram ziet u dat IoT Hub een aanhoudende of constante hoge belasting tot het niveau van het quotum voor de IoT Hub laag kan verwerken. In het rechterdiagram ziet u dat IoT Hub de belasting kan verwerken die in de loop van de tijd verandert, zolang de vertragingslimiet niet wordt bereikt en gemiddeld niet boven het quotum voor de IoT Hub-laag komt.

Linkerdiagram met een hoge belasting die constant onder het quotum blijft. Vergeleken met het rechterdiagram met een lagere belasting met af en toe pieken.

Berichtverwerking optimaliseren

Berichten van een apparaat of gateway moeten mogelijk worden vertaald, verwerkt of verrijkt met meer informatie voordat ze worden opgeslagen. Deze stap kan tijdrovend zijn, dus het is belangrijk om het effect op de prestaties te evalueren. Sommige aanbevelingen zijn conflicterend, zoals het gebruik van compressie voor het optimaliseren van gegevensoverdracht versus het vermijden van cloudverwerking bij het ontsleutelen van berichten. Deze aanbevelingen moeten worden afgewogen en geëvalueerd ten opzichte van andere architecturale pijlers en oplossingsvereisten.

De prestaties van cloudgegevensverwerking optimaliseren:

  • Optimaliseer de gegevensindeling die wordt gebruikt om gegevens naar de cloud te verzenden. Vergelijk de prestaties (en kosten) van bandbreedte en prestatieverbetering met minder cloudgegevensverwerking. Overweeg het gebruik van IoT Hub berichtverrijking om context toe te voegen aan apparaatberichten.

  • Tijdgebonden gebeurtenisverwerking uitvoeren op opgenomen gegevens wanneer deze binnenkomen, in plaats van niet-verwerkte gegevens op te slaan en complexe query's te vereisen om de gegevens te verkrijgen. Voor tijdskritieke gebeurtenisverwerking moet u rekening houden met de gevolgen van late aankomst en vensters. Evalueer afhankelijk van het gebruiksscenario, bijvoorbeeld kritieke alarmafhandeling versus berichtverrijking.

  • Selecteer de juiste IoT Hub laag, Basic of Standard, op basis van de oplossingsvereisten. Houd rekening met functies die niet worden ondersteund door de Basic-laag.

  • Selecteer de juiste IoT Hub laaggrootte, 1, 2 of 3, en het aantal exemplaren op basis van gegevensdoorvoer, quota en bewerkingsbeperkingen. Selecteer voor IoT Central de juiste laag: Standard 0, Standard 1 of Standard 2, op basis van het aantal berichten dat van apparaten naar de cloud is verzonden.

  • Overweeg het gebruik van Azure Event Grid voor het routeren van gebeurtenissen voor publiceren/abonneren. Zie React gebeurtenissen IoT Hub met behulp van Event Grid om acties te activeren en Berichtroutering en Event Grid vergelijken voor IoT Hub voor meer informatie.

Gegevens prioriteren

Sommige gegevens die apparaten naar de cloud verzenden, zijn mogelijk belangrijker dan andere gegevens. Het classificeren en verwerken van de gegevens op basis van prioriteit is een goede gewoonte voor prestatieefficiëntie.

Een thermostaatsensor verzendt bijvoorbeeld temperatuur, vochtigheid en andere telemetriegegevens, maar verzendt ook een alarm wanneer de temperatuur buiten een gedefinieerd bereik valt. Het systeem classificeert het alarmbericht als een hogere prioriteit en verwerkt het op een andere manier dan de temperatuurtelemetrie.

Houd rekening met de volgende aanbevelingen voor gegevensclassificatie en -verwerking:

  • Gebruik IoT Edge prioriteitswachtrijen om ervoor te zorgen dat belangrijke gegevens prioriteit krijgen tijdens het verzenden naar IoT Hub. IoT Edge buffert berichten wanneer er geen verbinding is, maar nadat de verbinding is hersteld, worden eerst alle gebufferde berichten in volgorde van prioriteit verzonden, gevolgd door nieuwe berichten.

  • Gebruik IoT Hub berichtroutering om routes voor verschillende gegevensprioriteiten te scheiden, afhankelijk van het gebruiksscenario. IoT Hub berichtroutering voegt enige latentie toe.

  • Gegevens met lage prioriteit opslaan en verzenden met langere intervallen of met behulp van batch- of bestandsuploads. Malwaredetectie bij geüploade bestanden verhoogt de latentie.

  • Scheid berichten op basis van tijdsbeperkingen. Verzend bijvoorbeeld rechtstreeks berichten naar IoT Hub wanneer er een tijdsbeperking is en gebruik bestandsupload via IoT Hub of batchgegevensoverdracht, zoals Azure Data Factory als er geen tijdsbeperking is. U kunt de IoT Edge blobmodule gebruiken voor het uploaden van bestanden.

Laag voor apparaatbeheer en modellering

Verschillende typen apparaten kunnen verbinding maken met een IoT-oplossing en een IoT-oplossing kan tegelijkertijd verbinding maken met veel apparaten en gateways. Naast het verbinden en configureren van apparaten en gateways, moet de IoT-oplossing de gegevens begrijpen die de apparaten en gateways vastleggen en opnemen, en moet deze gegevens overdragen en contextualiseren.

IoT-onderdelen kunnen gebruikmaken van verschillende protocollen, connectiviteit, frequenties voor gegevensopname en communicatiepatronen. De IoT-oplossing moet kunnen beheren welke apparaten en gateways zijn verbonden en hoe deze zijn geconfigureerd.

Apparaten en configuraties voor prestatie-efficiëntie beheren:

  • Optimaliseer de grootte op basis van de belasting van het apparaat en het bericht.

  • Weet het aantal berichten dat de cloudgateway kan verwerken, afhankelijk van de laag en het aantal eenheden.

  • Houd rekening met afwijkingen in aanhoudende doorvoer als gevolg van gegevensdistributie, seizoensgebondenheid en bursting.

  • Gebruik meerdere cloudgateways wanneer de IoT-oplossing miljoenen apparaten moet beheren. Gebruik DPS om apparaten toe te wijzen aan IoT-hubs.

Apparaten inrichten met DPS

Gebruik DPS om een verbinding met een IoT-hub in te stellen tijdens het inrichten, wanneer de IoT Hub verbinding niet meer beschikbaar is of tijdens het opnieuw opstarten van het apparaat.

  • Gebruik het gelijkmatig gewogen DPS-distributiebeleid om het gewicht voor inrichting aan te passen op basis van use-case. Zie Hoe apparaten worden toegewezen aan IoT Hubs voor meer informatie.

  • Overweeg apparaten in te richten voor de IoT-oplossing gedurende een bepaalde periode, gedistribueerd of in kleinere batches, om de DPS-belasting en het quotum te verdelen. Bij het onboarden in batches moet u de batches en de algehele migratietijdlijn plannen. Account voor DPS-limieten in het aantal bewerkingen, apparaatregistraties en het maximum aantal verbindingen per minuut, inclusief latentie en nieuwe pogingen.

  • Gebruik DPS om apparaten toe te wijzen aan IoT Hubs in verschillende regio's op basis van latentie.

  • Gebruik een cachestrategie voor de DPS-verbindingsreeks om dps-bewerkingen voor opnieuw verbinden te verminderen.

Downstream-apparaten beheren

Een IoT-oplossing is horizontaal schaalbaar als deze meerdere gateways of edge-apparaten per site of locatie heeft en downstreamapparaten die verbinding kunnen maken met een van deze gateways of edge-apparaten.

  • Gebruik meerdere gateways en edge-apparaten in de vertaalmodus wanneer het aantal downstreamapparaten, hun berichten en berichtgrootten na verloop van tijd verandert en hun protocol of bericht moet worden vertaald. Gateways en edge-apparaten in de vertaalmodus kunnen protocollen of berichten vertalen naar en van downstreamapparaten, maar er is een toewijzing nodig om de gateway te vinden waarop een downstreamapparaat is verbonden. Houd rekening met toegevoegde berichtomzetting en bufferoverhead op de gateway of het edge-apparaat wanneer u de vertaalmodus gebruikt.

  • Gebruik meerdere gateways en edge-apparaten in de transparante modus om verbinding te maken met downstream Message Queue Telemetry Transport- (MQTT) of AMQP-apparaten wanneer hun aantal in de loop van de tijd per site of locatie kan veranderen. Gateways en edge-apparaten in de transparante modus kunnen MQTT-/AMQP-apparaten verbinden voor bidirectionele communicatie. Houd rekening met extra berichtbuffering, opslag en configuratieoverhead op de gateway of het edge-apparaat wanneer u de transparante modus gebruikt.

Transportlaag

De transportlaag verwerkt verbindingen tussen een apparaat en de IoT-oplossing en transformeert IoT-berichten naar netwerkpakketten en verzendt deze via het fysieke netwerk. IoT-oplossingen maken vaak gebruik van AMQP- en MQTT-verbindingsprotocollen.

Resourcegebruik optimaliseren

De verbinding tussen een apparaat en de cloud moet veilig, betrouwbaar en schaalbaar zijn om het beoogde aantal apparaten en berichten te verwerken.

  • Gebruik een open stateful verbinding tussen een apparaat en de cloudgateway. IoT Hub is geoptimaliseerd voor het beheren van miljoenen open stateful verbindingen met behulp van MQTT-, AMQP- of WebSocket-protocollen. Houd open verbindingen met de apparaten om de overhead van beveiligingshanddrukken, verificatie en autorisatie te minimaliseren. Deze procedure verbetert de prestaties en vermindert de vereiste bandbreedte aanzienlijk.

  • Gebruik een AMQP-protocol dat multiplexing van meerdere kanalen op één verbinding ondersteunt om het aantal open verbindingen dat nodig is voor de cloudgateway te minimaliseren. Door multiplexing te gebruiken, kan een transparante gateway meerdere leaf-apparaten verbinden met behulp van hun eigen kanalen via één verbinding.

  • Gebruik de cloudgatewaypatronen voor apparaat- en moduledubbels om statusgegevens asynchroon uit te wisselen tussen apparaten en de cloud.

  • DPS configureren om de apparaatstatus te verplaatsen wanneer een apparaat verbinding maakt met een andere cloudgateway.

Gegevenscommunicatie optimaliseren

Het aantal en de grootte van berichten van apparaat naar cloud zijn van invloed op de prestaties en kosten. Het evalueren van gegevenscommunicatie is essentieel voor de efficiëntie van de prestaties van uw IoT-workload.

  • Gebruik een efficiënte gegevensindeling en codering die geen grote bandbreedte gebruikt om gegevens naar de cloud te verzenden. Voor netwerken met een lage bandbreedte kunt u overwegen een gecomprimeerde of binaire indeling te gebruiken, maar begrijpt u de overhead van het decomprimeren of converteren van de gegevens in de cloud.

  • Overweeg om gegevens met een hoog volume lokaal op te slaan en deze elk uur of dagelijks te uploaden.

  • Groepeer veel kleine apparaat-naar-cloud-berichten in minder grotere berichten om het totale aantal te verminderen. Verzend echter niet alleen grote berichten, maar balanceer tussen de gemiddelde berichtgrootte en doorvoer.

Opslaglaag

Voor de verschillende typen gegevens die in een IoT-oplossing worden verzameld en waarnaar wordt verwezen, zijn vaak opslagtypen vereist die zijn gespecialiseerd en geoptimaliseerd voor verschillende scenario's op apparaten, gateways en de cloud. Gegevens die wereldwijd of lokaal beschikbaar moeten zijn in meerdere geografische regio's en in sommige gevallen moeten worden gerepliceerd om de latentie te optimaliseren, verhogen de complexiteit van IoT-opslag.

  • Gebruik een tijdreeksdatabase voor het opslaan van tijdreeksgegevens met tijdstempels en waarden. Verrijk de telemetrie van tijdreeksgegevens met kolommen voor filteren, bijvoorbeeld CustomerID, RoomID of andere use-casespecifieke kolommen.

  • Gebruik apparaat- en gatewayopslag voor het opslaan van gegevens in de cache of om gegevens te bewaren wanneer de verbinding wordt verbroken. Account voor vereiste opslagruimte. Bewaar niet alle gegevens, maar gebruik downsampling, sla alleen aggregaties op of sla gegevens gedurende een beperkte periode op.

  • Overweeg om opslag voor gegevensopname en gebeurtenisverwerking te scheiden van rapportage- en integratieopslagbehoeften.

  • Gebruik het gegevensopslagtype dat past bij de vereiste doorvoer, grootte, retentieperiode, gegevensvolume, CRUD-vereisten en regionale replicatie. Enkele voorbeelden zijn Azure Data Lake Storage, Azure Data Explorer, Azure SQL en Azure Cosmos DB.

Gebeurtenisverwerkings- en analyselaag

U kunt gegevens verwerken die apparaten genereren voordat u deze naar of in de IoT-oplossing verzendt. Gegevensverwerking kan bestaan uit vertaling, contextualisatie, filteren en routeren, of meer geavanceerde analyses, zoals trendanalyse of anomaliedetectie.

Edge-verwerking optimaliseren versus cloudverwerking

Voer realtime en bijna realtime workloads uit, of kleine, geoptimaliseerde verwerking met lage latentie met tijdsbeperkingen, op apparaten of aan de rand met behulp van lokale rekenkracht. Voer grotere workloads of andere workloads met toegevoegde of externe gegevens of rekenafhankelijkheden uit in de cloud.

Voer bijvoorbeeld een machine learning-algoritme uit aan de rand om personen in een videostream te tellen en een gebeurtenis met het aantal naar de cloud te verzenden. Gebruik de cloud om trends tussen verschillende factory's te vergelijken.

Voer analyseworkloads uit aan de rand met behulp van de Stream Analytics Edge-module. U kunt bijvoorbeeld anomaliedetectie aan de rand uitvoeren en de gebeurtenissen die naar de cloud worden verzonden labelen met de gedetecteerde anomalie. Wanneer u analyses aan de rand uitvoert, moet u rekening houden met extra latentie, late aankomst en gevolgen voor vensters.

Houd rekening met de overhead van een edge-workload met veel verbonden downstreamapparaten. Het edge-knooppunt moet alle berichten doorsturen of verwerken en alle gegevens in de cache opslaan als er sprake is van onregelmatige cloudconnectiviteit. Valideer de impact op de prestaties van uw oplossing door te testen met het geplande maximum aan downstreamapparaten en -berichten per Edge-knooppunt. Houd rekening met de prestatie-impact die berichtvertaling of -verrijking kan hebben op edge, IoT Hub of cloud-gebeurtenisverwerking.

Afzonderlijke workloads categoriseren

Werkbelastingen scheiden op basis van tijdsbeperking en vereiste latentie en reactietijden, bijvoorbeeld reactie binnen seconden versus batch per uur. Hybride hardware systems-on-a-chip (SoC's) kunnen workloads op apparaatniveau ondersteunen.

Gebruik aan de rand prioriteitswachtrijen om verschillende gegevensstromen met verschillende prioriteiten en TTL te scheiden. Alarmen moeten bijvoorbeeld altijd eerst worden verzonden, maar een lagere TTL hebben dan telemetrie.

In de cloud kunt u consumentengroepen op Azure Event Hubs gebruiken om verschillende gegevensstromen te scheiden en alarmen op een andere manier af te handelen en te schalen dan telemetrie. U kunt ook IoT Hub-routes gebruiken om verschillende gegevensstromen te scheiden, met filteren en afzonderlijke eindpunten. IoT Hub berichtroutering voegt enige latentie toe. Gebruik Event Hubs, Azure Event Grid of Azure Service Bus om workloads te distribueren en tegelijkertijd te beschermen tegen tegendruk in de cloud.

Te complexe IoT Hub routeringsregels kunnen van invloed zijn op de doorvoer, met name routeringsregels met JSON-filters voor berichttekst, waarbij elk bericht moet worden gedeserialiseerd en gescand.

Cloudgegevens met grote volumes verwerken

Ga als volgt te werk om de efficiëntie van de prestaties voor cloudgegevens met een hoog volume te optimaliseren:

  • Gebruik standaardserviceintegratie tussen IoT Hub en gegevensbestemmingen zoals Azure Data Lake Storage en Azure Data Explorer die al zijn geoptimaliseerd voor doorvoer met hoge prestaties.

  • Gebruik de Event Hubs SDK om aangepaste opname te ontwikkelen vanuit een IoT-hub met de meegeleverde gebeurtenisprocessor. De gebeurtenisprocessor kan apparaten en hosts opnieuw verdelen.

  • Gebruik het juiste aantal IoT Hub partities en consumentengroepen voor het aantal gelijktijdige gegevenslezers en vereiste doorvoer.

  • Scheid de opslag die nodig is voor gegevensopname en gebeurtenisverwerking van de opslag die nodig is voor rapportage en integratie.

  • Gebruik de gegevensopslag die aan de behoeften voldoet op basis van de vereiste doorvoer, grootte, retentieperiode, gegevensvolume, CRUD-vereisten en regionale replicatie. Voorbeelden zijn Azure Data Lake Storage, Azure Data Explorer, Azure SQL of Azure Cosmos DB. Zie Een Azure-gegevensarchief voor uw toepassing selecteren voor meer informatie.

Integratielaag

De integratielaag verbindt een IoT-oplossing met andere services en zakelijke toepassingen.

  • Scheid de opnamepijplijn van de IoT-oplossing van integratieverwerking. Zorg ervoor dat complexe query's of laden van de integratielaag geen invloed hebben op de prestaties van gegevensopname.

  • Gebruik goed gedefinieerde API's met versiebeheer voor toegang tot IoT-gegevens en -opdrachten.

  • Vermijd hulpprogramma's voor eindgebruikers om door de gebruiker gedefinieerde query's te maken voor IoT-gegevensopslag. Overweeg het gebruik van afzonderlijke gegevensarchieven voor integratie en rapportage.

DevOps-laag

Gebruik de volgende DevOps-mechanismen om de efficiëntie van de prestaties te maximaliseren:

  • Een verbonden register voor lokale caching en implementatie van containerinstallatiekopieën.

  • IoT Hub implementaties naar meerdere apparaten tegelijk bijwerken, inclusief apparaten en gateways.

  • Apparaatdubbels en moduledubbels om apparaatconfiguraties op een schaalbare en efficiënte manier bij te werken.

  • Prestatietests, inclusief stress- en belastingstests voor het repliceren van de productieomgeving, zoals locatie en heterogene apparaten.

Bewaking

Gebruik Azure Monitor om IoT Hub metrische gegevens te verzamelen met waarschuwingen voor kritieke metrische gegevens. Stel Azure Monitor-waarschuwingen in op basis van de huidige schaallimieten, zoals apparaat-naar-cloud-berichten die per seconde worden verzonden. Stel de waarschuwing in op een percentage van de limiet, zoals 75%, voor de voorafgaande melding van toekomstige schaalbaarheidslimieten. Stel ook Azure Monitor-waarschuwingen in voor logboeken en metrische gegevens, zoals het aantal beperkingsfouten.

Stel Azure Service Health-servicewaarschuwingen in om meldingen te activeren wanneer IoT Hub status verandert.

Volgende stappen