Share via


Prestandaeffektivitet i din IoT-arbetsbelastning

IoT-lösningar omfattar enhets-, gräns- och molnkomponenter och sträcker sig från miljontals små enheter som är anslutna till molnet till industriella lösningar där några kraftfulla servrar är gatewayer för molnanslutning. Antalet enheter, deras fysiska och geografiska placering och antalet meddelanden som de skickar eller tar emot är några av de faktorer som kan definiera prestandaeffektiviteten för en IoT-arbetsbelastning.

Prestandaeffektivitet omfattar även en IoT-arbetsbelastnings förmåga att skala effektivt för att uppfylla kraven. En fördel med molnet är geografisk tillgänglighet och möjligheten att skala tjänster på begäran, med lite eller ingen programavbrottstid.

Prestandaeffektivitet representerar prestanda i förhållande till resursanvändning under angivna förhållanden. Prestandaeffektivitet mäter hur väl en produkt eller ett system uppfyller kraven för:

  • Tidsbeteende, till exempel svarstider, bearbetningstider och dataflödeshastigheter.

  • Resursutnyttjande, eller mängder och typer av resurser som används.

  • Kapacitet eller maxgränser.

Utvärdera prestandaeffektivitet i din IoT-arbetsbelastning

Om du vill utvärdera din IoT-arbetsbelastning via linserna i Well-Architected Framework Performance Efficiency-pelaren slutför du frågorna om prestandaeffektivitet för IoT-arbetsbelastningar i Azure Well-Architected Review. När utvärderingen har identifierat viktiga rekommendationer för prestandaeffektivitet för din IoT-lösning använder du följande innehåll för att implementera rekommendationerna.

Designprinciper

Fem grundpelare för arkitekturens utmärkthet ligger till grund för designmetoden för IoT-arbetsbelastningar. Dessa pelare fungerar som en kompass för efterföljande designbeslut inom de viktigaste IoT-designområdena. Följande designprinciper utökar kvalitetspelare i Azure Well-Architected Framework – Prestandaeffektivitet.

Designprincip Överväganden
Design för horisontell skalning En IoT-lösning kan börja med några hundra enheter eller meddelanden och växa till miljontals enheter och meddelanden per minut. Du kan enkelt skala molntjänster till en ökad belastning, men situationen kan vara mer komplex för IoT-enheter och gatewayer. IoT-enheter kan utformas eller distribueras innan lösningen slutförs. Industriell IoT eller liknande branscher kan mäta enhetens livslängd på årtionden. Det är dyrt att uppdatera kapaciteten genom att ersätta enheter. I dessa scenarier är det särskilt viktigt att planera framåt.
Skift vänster vid prestandatestning Testa tidigt och testa ofta för att fånga upp problem tidigt. Var medveten om komplexiteten i att ha sensorer, enheter och gatewayer på geografiskt olika platser med olika egenskaper, hastighet och tillförlitlighet för kommunikation. Planera för den här komplexiteten i testningen och se till att testa för felscenarier som nätverksfrånkoppling. Utför stress- och belastningstestning av alla enhets-, gräns- och molnkomponenter i din IoT-lösning.
Övervaka kontinuerligt prestanda i produktion Om du vill övervaka olika typer av enheter i flera geografiska regioner använder du en distribuerad övervakningslösning. Balansera mängden information som övervakas och skickas till molnet mot minnes- och prestandakostnader. Justera överföringen för diagnostikscenarier och övervaka på flera nivåer och lager. Exponera gatewaymått för industriella eller gatewayaktiverade lösningar.

IoT-arkitekturskikt

Designprinciper för prestandaeffektivitet hjälper till att klargöra överväganden för att säkerställa att din IoT-arbetsbelastning uppfyller kraven i de grundläggande IoT-arkitekturskikten. I följande avsnitt beskrivs lagerspecifika för grundpelare för prestandaeffektivitet.

Diagram som visar lager och övergripande aktiviteter i IoT-arkitekturen.

Enhets- och gatewaylager

En IoT-enhet är en beräkningsenhet som ansluter till en IoT-lösning och kan samla in, överföra eller ta emot data. Gatewayer är anslutningspunkter mellan enheter och molnet, eller mellan IoT och andra komponenter.

Optimera maskinvarufunktioner

Det är dyrt och tidskrävande att uppgradera eller ersätta maskinvara. Ändra storlek på IoT-enheter för nödvändig kapacitet och funktionalitet i förväg.

Så här optimerar du för maskinvarufunktioner:

  • Kör beräknings- och indataintensiva uppgifter på specifik maskinvara. Kör till exempel ML-algoritmer (Machine Learning) på lokala grafikprocessorer (GPU:er).

  • Optimera befintliga maskinvarufunktioner med hjälp av effektiva språk och ramverk som Embedded C och Rust Embedded. Du kan använda Azure IoT Embedded C SDK när du utvecklar för begränsade enheter, eller när merparten av säkerhets- och kommunikationsstacken redan är tillgänglig på enheten.

  • Använd Azure IoT-enhets-SDK för C för allt du behöver för att ansluta till molngatewayen. Azure IoT Device Software Development Kits (SDK:er) hanterar nödvändig meddelandeöversättning, felhantering och återförsöksmekanismer som behövs för en elastisk anslutning.

Skalning är viktigt för enhets- och gatewaylagret. Så här skalar du det här lagret:

  • Använd gatewayer som skalningsenheter. Om din lösning lägger till IoT-enheter eller tillgångar (till exempel OPC UA-servrar ) över tid använder du fler gränsgatewayer för att mata in data från dessa servrar.

  • Utför en skalningsutvärdering för alla överordnade lager, inklusive molngatewayer och molntjänster. Mer information om hur du använder flera IoT-hubbar som skalningsenheter för en IoT-lösning finns i Så här etablerar du enheter över IoT-hubbar.

Köra arbetsbelastningar vid gränsen

Beroende på systembegränsningar som nätverksdataflöde eller svarstid bör du överväga att köra vissa arbetsbelastningar vid gränsen. Separera arbetsbelastningar efter tidsbegränsning och nödvändiga svarstider och svarstider. Använd lokal beräkning för korta svarstider och tillfälligt anslutna scenarier. Kör storskaliga arbetsbelastningar i molnet.

Vid gränsen använder du prioritetsköer för att skicka olika dataströmmar i den ordning som krävs. Med prioritetsköer skickas meddelanden i prioritetsordning, men Azure IoT Hub fortfarande journalför meddelanden baserat på kvittoordning.

Optimera enhetsanslutning

Tänk på följande för att optimera enhetsanslutningen:

  • Använd de IoT Hubs som har lägst svarstid till dina enheter. Du kan behöva IoT Hubs i flera regioner när enheter behöver ansluta från olika geografiska platser.

  • Använd en öppen tillståndskänslig anslutning för dubbelriktad kommunikation mellan enheterna och IoT-lösningen för att minimera kostnaderna för att konfigurera anslutningar.

  • Anslut inte alla enheter samtidigt, till exempel efter ett regionalt strömavbrott. Använd trunkerad exponentiell backoff med introducerad jitter när du försöker igen.

Optimera offlinescenarier

Du kan ge enheter tillräckligt med information och kontext för att fungera utan en molnanslutning och för att lagra data lokalt, så att de kan återställas från frånkopplingar och omstarter. Följande strategier stöder offlineåtgärder:

  • Kontrollera att enheten kan lagra data lokalt när enheten inte är ansluten, inklusive loggar och cachelagrad telemetri enligt prioritet.

  • Ange en time to live (TTL) för data, så att utgångna data tas bort automatiskt.

  • Ignorera mindre viktiga data när enheten inte är ansluten, för att minska den lokala lagring som behövs och minska synkroniseringstiden när enheten återansluts.

  • Om gränsenhetslagringen når kapaciteten använder du en strategi för cacheborttagning, till exempel först-in-last-out (FIFO), lifo (last-in first-out) eller prioritetsbaserad.

  • Överväg att använda en separat disk eller diskkontrollant för att lagra data, så att enhetens körning eller program kan fortsätta att fungera när lagringen är låg.

Använd enhetstvillingar och modultvillingar för att asynkront synkronisera tillståndsinformation mellan enheter och molnet, även om enheterna för närvarande inte är anslutna till molngatewayen. Enhets- och modultvillingar innehåller endast det aktuella tillståndet vid en tidpunkt, inte någon historik eller borttagen information.

Inmatnings- och kommunikationslager

Datainmatnings- och kommunikationslagret skickar data från enheterna till IoT-lösningen. Kommunikationsmönster mellan enheter och IoT-lösningen omfattar:

  • Meddelanden från enhet till moln.
  • Meddelanden från moln till enhet.
  • Filuppladdningar.
  • Enhetstvillingar.
  • Direkta metoder.

Optimera meddelandeeffektiviteten

Antalet och storleken på meddelanden från enhet till moln är en viktig parameter för prestandaeffektivitet för IoT-lösningen. Azure IoT-tjänster som IoT Hub och Azure IoT Central definierar meddelandegränser per nivå, vilket påverkar både lösningens prestanda och kostnad.

Överväg följande meddelanderekommendationer:

  • IoT Hub och IoT Central beräknar antalet dagliga kvotmeddelanden baserat på meddelandestorleken 4 KB. När mindre meddelanden skickas används inte viss kapacitet. I allmänhet använder du meddelandestorlekar nära gränsen på 4 KB. Gruppera mindre meddelanden från enhet till moln i större meddelanden för att minska det totala antalet meddelanden, men överväg den introducerade svarstiden när du kombinerar meddelanden.

  • Undvik trafikintensiv kommunikation. För gränskommunikation från enhet till enhet eller från modul till modul ska du inte utforma interaktioner som skickar många små meddelanden.

  • Använd inbyggd Azure IoT Edge SDK-meddelandebatchbearbetning för Advanced Message Queuing Protocol (AMQP) för att skicka flera telemetrimeddelanden till molnet.

  • Använd batchbearbetning på programnivå genom att kombinera flera mindre meddelanden på nedströmsenheten och skicka större meddelanden till gränsgatewayen. Den här batchbearbetningen begränsar meddelandeomkostnaderna och minskar skrivningar till lokal gränsdisklagring.

  • Använd AMQP-anslutnings multiplexering för att minska beroendet av TCP-anslutningsgränser (Transmission Control Protocol) per SDK-klient. Med AMQP-anslutnings multiplexering kan flera enheter använda en enda TCP-anslutning för att IoT Hub.

  • Använd direkta metoder för interaktion mellan begäran och svar som kan lyckas eller misslyckas omedelbart efter en användardefinerad tidsgräns. Den här metoden är användbar för scenarier där tillvägagångssättet skiljer sig beroende på om enheten svarade.

  • Använd enhetstvillingar för information om enhetstillstånd, inklusive metadata och konfigurationer. IoT Hub underhåller en enhetstvilling för varje enhet som du ansluter.

Förstå meddelandekvoter och begränsningar

Den IoT Hub nivån anger gränser för molngateway per enhet. Meddelandekvoten definierar varaktigt dataflöde och varaktiga sändningsfrekvenser för nivån. IoT Hub kan hantera belastningar över dessa kvoter under korta tidsperioder för att hantera belastningstoppar eller belastningsöverskridningar på ett motståndskraftigt sätt.

En annan viktig gräns är belastningen eller begränsningen per timme eller daglig tjänst. Begränsningsgränser skyddar en IoT-hubb från för mycket belastning under en för lång tid.

Följande diagram visar relationen mellan belastnings-, kvot- och begränsningsgränser. Det vänstra diagrammet visar att IoT Hub kan hantera varaktig eller konstant hög belastning upp till nivån för kvoten för den IoT Hub nivån. Det högra diagrammet visar att IoT Hub kan hantera belastning som ändras över tid, så länge den inte når begränsningsgränsen och i genomsnitt inte ligger över kvoten för IoT Hub nivån.

Vänster diagram som visar hög belastning konstant under kvoten. Jämfört med det högra diagrammet som visar lägre belastning med tillfälliga toppar.

Optimera meddelandebearbetning

Meddelanden från en enhet eller gateway kan behöva översättas, bearbetas eller berikas med mer information före lagring. Det här steget kan vara tidskrävande, så det är viktigt att utvärdera prestandaeffekten. Vissa rekommendationer är i konflikt, till exempel att använda komprimering för att optimera dataöverföringen och undvika molnbearbetning vid dekryptering av meddelanden. Dessa rekommendationer måste balanseras och utvärderas mot andra arkitekturpelare och lösningskrav.

Så här optimerar du prestanda för databearbetning i molnet:

  • Optimera det dataformat som används för att skicka data till molnet. Jämför prestanda (och kostnad) för bandbredd jämfört med prestandaförbättringar med mindre bearbetning av molndata som behövs. Överväg att använda IoT Hub meddelandeberikning för att lägga till kontext till enhetsmeddelanden.

  • Utför tidskritisk händelsebearbetning på inmatade data när de tas emot, i stället för att lagra obearbetade data och kräva komplexa frågor för att hämta data. För tidskritisk händelsebearbetning bör du överväga effekterna av sen ankomst och fönster. Utvärdera beroende på användningsfall, till exempel kritisk larmhantering jämfört med meddelandeberikning.

  • Välj rätt IoT Hub nivå, Basic eller Standard, baserat på lösningskrav. Tänk på funktioner som Basic-nivån inte stöder.

  • Välj rätt IoT Hub nivåstorlek, 1, 2 eller 3, och antalet instanser baserat på dataflöde, kvoter och åtgärdsbegränsningar. För IoT Central väljer du rätt nivå: Standard 0, Standard 1 eller Standard 2, baserat på antalet meddelanden som skickas från enheter till molnet.

  • Överväg att använda Azure Event Grid för händelsedirigering för publicering och prenumeration. Mer information finns i React för att IoT Hub händelser genom att använda Event Grid för att utlösa åtgärder och Jämföra meddelanderoutning och Event Grid för IoT Hub.

Prioritera data

Vissa data som enheter skickar till molnet kan vara viktigare än andra data. Att klassificera och hantera data baserat på prioritet är en bra metod för prestandaeffektivitet.

En termostatsensor skickar till exempel temperatur, luftfuktighet och annan telemetri, men skickar också ett larm när temperaturen ligger utanför ett definierat intervall. Systemet klassificerar larmmeddelandet som högre prioritet och hanterar det annorlunda än temperaturtelemetrin.

Överväg följande rekommendationer för dataklassificering och hantering:

  • Använd IoT Edge prioritetsköer för att se till att viktiga data prioriteras när de skickas till IoT Hub. IoT Edge buffrar meddelanden när det inte finns någon anslutning, men när anslutningen har återställts skickar alla buffrade meddelanden i prioritetsordning först följt av nya meddelanden.

  • Använd IoT Hub meddelanderoutning för att avgränsa vägar för olika dataprioriteringar beroende på användningsfall. IoT Hub meddelanderoutning lägger till viss svarstid.

  • Spara och skicka data med låg prioritet med längre intervall eller genom att använda batch- eller filuppladdningar. Identifiering av skadlig kod på uppladdade filer ökar svarstiden.

  • Avgränsa meddelanden baserat på tidsbegränsningar. Skicka till exempel meddelanden till IoT Hub direkt när det finns en tidsbegränsning och använd filuppladdning via IoT Hub eller batchdataöverföring som Azure Data Factory om det inte finns någon tidsbegränsning. Du kan använda IoT Edge blob-modulen för filuppladdning.

Lager för enhetshantering och modellering

Olika typer av enheter kan ansluta till en IoT-lösning, och en IoT-lösning kan ansluta till många enheter och gatewayer samtidigt. Förutom att ansluta och konfigurera enheter och gatewayer måste IoT-lösningen förstå de data som enheterna och gatewayerna samlar in och matar in och måste överföra och kontextualisera dessa data.

IoT-komponenter kan använda olika protokoll, anslutningar, datainmatningsfrekvenser och kommunikationsmönster. IoT-lösningen måste kunna hantera vilka enheter och gatewayer som är anslutna och hur de konfigureras.

Så här hanterar du enheter och konfigurationer för prestandaeffektivitet:

  • Optimera storleksändringen baserat på enhetens och meddelandets inläsning.

  • Ta reda på antalet meddelanden som molngatewayen kan hantera, beroende på nivå och antal enheter.

  • Ta hänsyn till avvikelser i varaktigt dataflöde på grund av datadistribution, säsongsvariationer och burst-fel.

  • Använd flera molngatewayer när IoT-lösningen måste hantera miljontals enheter. Använd DPS för att tilldela enheter till IoT-hubbar.

Etablera enheter med DPS

Använd DPS för att konfigurera en anslutning till en IoT-hubb under etableringen, när den IoT Hub anslutningen inte längre är tillgänglig eller under enhetens omstart.

  • Använd DPS-principen för jämnt viktad distribution för att justera vikten för etablering baserat på användningsfall. Mer information finns i Så här tilldelar allokeringsprincipen enheter till IoT Hubs.

  • Överväg att etablera enheter till IoT-lösningen över en tidsperiod, distribuerad eller i mindre batchar, för att balansera DPS-belastningen och kvoten. När du registrerar i batchar ska du planera för batcharna och den övergripande migreringstidslinjen. Ta hänsyn till DPS-gränser i antal åtgärder, enhetsregistreringar och maximala anslutningar per minut, inklusive svarstid och återförsök.

  • Använd DPS för att allokera enheter till IoT Hubs i olika regioner baserat på svarstid.

  • Använd en cachelagringsstrategi för DPS-anslutningssträng för att minska DPS-återanslutningsåtgärder.

Hantera underordnade enheter

En IoT-lösning är horisontellt skalbar om den har flera gatewayer eller gränsenheter per plats eller plats och underordnade enheter som kan ansluta till någon av dessa gatewayer eller gränsenheter.

  • Använd flera gatewayer och gränsenheter i översättningsläge när antalet nedströmsenheter, deras meddelanden och meddelandestorlekar ändras med tiden och deras protokoll eller meddelande måste översättas. Gatewayer och gränsenheter i översättningsläge kan översätta protokoll eller meddelanden till och från underordnade enheter, men en mappning krävs för att hitta gatewayen som en nedströmsenhet är ansluten till. Ta hänsyn till extra kostnader för meddelandeöversättning och buffring på gateway- eller edge-enheten när du använder översättningsläge.

  • Använd flera gatewayer och gränsenheter i transparent läge för att ansluta nedströms MQTT-enheter (Message Queue Telemetry Transport) eller AMQP-enheter när deras antal kan ändras över tid per plats eller plats. Gatewayer och gränsenheter i transparent läge kan ansluta MQTT/AMQP-enheter för dubbelriktad kommunikation. Ta hänsyn till extra kostnader för meddelandebuffertning, lagring och konfiguration på gateway- eller edge-enheten när du använder transparent läge.

Transportlager

Transportlagret hanterar anslutningar mellan en enhet och IoT-lösningen, transformerar IoT-meddelanden till nätverkspaket och skickar dem via det fysiska nätverket. IoT-lösningar använder ofta AMQP- och MQTT-anslutningsprotokoll.

Optimera resursanvändning

Anslutningen mellan en enhet och molnet måste vara säker, tillförlitlig och skalbar för att hantera målantalet enheter och meddelanden.

  • Använd en öppen tillståndskänslig anslutning från en enhet till molngatewayen. IoT Hub är optimerat för att hantera miljontals öppna tillståndskänsliga anslutningar med hjälp av MQTT-, AMQP- eller WebSocket-protokoll. Håll öppna anslutningar till enheterna för att minimera omkostnaderna för säkerhetshandskakningar, autentisering och auktorisering. Den här metoden förbättrar prestandan och minskar avsevärt den bandbredd som krävs.

  • Använd ett AMQP-protokoll som stöder multiplexering av flera kanaler på en enda anslutning för att minimera antalet öppna anslutningar som molngatewayen kräver. Genom att använda multiplexering kan en transparent gateway ansluta flera lövenheter med sina egna kanaler via en enda anslutning.

  • Använd molngatewaymönstren för enhets- och modultvillingar för att asynkront utbyta tillståndsinformation mellan enheter och molnet.

  • Konfigurera DPS för att flytta enhetstillståndet när en enhet ansluter till en annan molngateway.

Optimera datakommunikation

Antalet och storleken på meddelanden från enheten till molnet påverkar prestanda och kostnad. Att utvärdera datakommunikation är nyckeln till prestandaeffektivitet i din IoT-arbetsbelastning.

  • Använd ett effektivt dataformat och kodning som inte använder omfattande bandbredd för att skicka data till molnet. För nätverk med låg bandbredd bör du överväga att använda ett komprimerat eller binärt format, men förstå kostnaden för att inte komprimera eller konvertera data i molnet.

  • Överväg att lagra data med stora volymer lokalt och ladda upp dem varje timme eller varje dag.

  • Gruppera många små meddelanden från enhet till moln i färre större meddelanden för att minska det totala antalet. Skicka dock inte bara stora meddelanden, utan balansera mellan genomsnittlig meddelandestorlek och dataflöde.

Lagringslager

De olika typerna av data som samlas in och refereras i en IoT-lösning kräver ofta lagringstyper som är specialiserade och optimerade för olika scenarier på enheter, gatewayer och moln. Data som måste vara tillgängliga i flera geografiska regioner globalt eller lokalt, och som i vissa fall replikeras för att optimera svarstiden, ökar IoT-lagringens komplexitet.

  • Använd en tidsseriedatabas för att lagra tidsseriedata som har tidsstämplar och värden. Utöka tidsseriedatatelemetri med kolumner för filtrering, till exempel CustomerID, RoomID eller andra användningsfallsspecifika kolumner.

  • Använd enhets- och gatewaylagring för cachelagring av data eller för att behålla data när de är frånkopplade. Ta hänsyn till det lagringsutrymme som krävs. Behåll inte alla data, men använd nedsampling, lagra endast aggregeringar eller lagra data under begränsade tidsperioder.

  • Överväg att separera datainmatning och händelsebearbetningslagring från rapporterings- och integrationslagringsbehov.

  • Använd den datalagringstyp som passar behovet av nödvändigt dataflöde, storlek, kvarhållningsperiod, datavolym, CRUD-krav och regional replikering. Några exempel är Azure Data Lake Storage, Azure Data Explorer, Azure SQL och Azure Cosmos DB.

Lager för händelsebearbetning och analys

Du kan bearbeta data som enheter genererar innan de skickas till eller i IoT-lösningen. Databearbetning kan omfatta översättning, kontextualisering, filtrering och routning, eller mer avancerade analyser som trendanalys eller avvikelseidentifiering.

Optimera edge- och molnbearbetning

Kör arbetsbelastningar i realtid och nära realtid, eller liten, optimerad bearbetning med kort svarstid med tidsbegränsningar, på enheter eller vid gränsen med hjälp av lokal beräkning. Kör större arbetsbelastningar eller andra arbetsbelastningar som har lagt till eller externa data eller beräkningsberoenden i molnet.

Kör till exempel en maskininlärningsalgoritm vid gränsen för att räkna personer i en videoström och skicka en händelse som innehåller antalet till molnet. Använd molnet för att jämföra trender mellan olika fabriker.

Kör analysarbetsbelastningar vid gränsen med hjälp av Stream Analytics Edge-modulen. Du kan till exempel köra avvikelseidentifiering vid gränsen och märka de händelser som skickas till molnet med den identifierade avvikelsen. När du kör analys vid gränsen tar du hänsyn till extra svarstid, sen ankomst och fönsterpåverkan.

Tänk på omkostnaderna för en gränsarbetsbelastning med många anslutna underordnade enheter. Gränsnoden måste vidarebefordra eller bearbeta alla meddelanden och hantera cachelagring av alla data om det finns tillfälliga molnanslutningar. Verifiera prestandapåverkan på din lösning genom att testa med det planerade maximala antalet nedströmsenheter och meddelanden per gränsnod. Var medveten om prestandapåverkan som meddelandeöversättning eller berikning kan ha på gränsen, IoT Hub eller molnhändelsebearbetning.

Kategorisera enskilda arbetsbelastningar

Separera arbetsbelastningar efter tidsbegränsning och nödvändiga svarstider och svarstider, till exempel svar inom sekunder jämfört med batch per timme. Hybridmaskinvarasystem på ett chip (SoCs) kan stödja arbetsbelastningar på enhetsnivå.

Vid gränsen använder du prioritetsköer för att separera olika dataströmmar med olika prioriteringar och TTL. Larm bör till exempel alltid skickas först men har en lägre TTL än telemetri.

I molnet kan du använda konsumentgrupper på Azure Event Hubs för att separera olika dataströmmar och hantera och skala larm på ett annat sätt än telemetri. Du kan också använda IoT Hub vägar för att separera olika dataströmmar, med filtrering och separata slutpunkter. IoT Hub meddelanderoutning lägger till viss svarstid. Använd Event Hubs, Azure Event Grid eller Azure Service Bus för att distribuera arbetsbelastningar samtidigt som du skyddar mot motbelastning i molnet.

Alltför komplexa IoT Hub routningsregler kan påverka dataflödet, särskilt routningsregler med JSON-filter för meddelandetext, där varje meddelande måste deserialiseras och genomsökas.

Hantera molndata med stora volymer

Så här optimerar du prestandaeffektiviteten för molndata med stora volymer:

  • Använd den färdiga tjänstintegrering mellan IoT Hub och datamål som Azure Data Lake Storage och Azure Data Explorer som redan är optimerade för dataflöde med höga prestanda.

  • Använd Event Hubs SDK för att utveckla anpassad inmatning från en IoT-hubb med den inkluderade händelseprocessorn. Händelseprocessorn kan balansera om enheter och värdar.

  • Använd rätt antal IoT Hub partitioner och konsumentgrupper för antalet samtidiga dataläsare och nödvändigt dataflöde.

  • Separera den lagring som behövs för datainmatning och händelsebearbetning från den lagring som behövs för rapportering och integrering.

  • Använd den datalagring som passar behoven baserat på nödvändigt dataflöde, storlek, kvarhållningsperiod, datavolym, CRUD-krav och regional replikering. Exempel är Azure Data Lake Storage, Azure Data Explorer, Azure SQL eller Azure Cosmos DB. Mer information finns i Välj ett Azure-datalager för ditt program.

Integreringslager

Integreringsskiktet ansluter en IoT-lösning till andra tjänster och affärsprogram.

  • Separera IoT-lösningens inmatningspipeline från integreringsbearbetning. Kontrollera att komplexa frågor eller inläsningar från integrationslagret inte påverkar datainmatningsprestanda.

  • Använd väldefinierade och versionsbaserade API:er för åtkomst till IoT-data och -kommandon.

  • Undvik verktyg för slutanvändare för att skapa användardefinierade frågor mot IoT-datalagring. Överväg att använda separata datalager för integrering och rapportering.

DevOps-lager

Använd följande DevOps-mekanismer för att maximera prestandaeffektiviteten:

  • Ett anslutet register för lokal cachelagring och distribution av containeravbildningar.

  • IoT Hub att uppdatera distributioner till flera enheter samtidigt, inklusive enheter och gatewayer.

  • Enhetstvillingar och modultvillingar för att uppdatera enhetskonfigurationer på ett skalbart och effektivt sätt.

  • Prestandatestning, inklusive stress- och belastningstester för att replikera produktionsmiljön, till exempel plats och heterogena enheter.

Övervakning

Använd Azure Monitor för att samla in IoT Hub mått med aviseringar för kritiska mått. Konfigurera Azure Monitor-aviseringar baserat på aktuella skalningsgränser, till exempel enhet till molnmeddelanden som skickas per sekund. Ställ in aviseringen på en procentandel av gränsen, till exempel 75 %, för förhandsmeddelande om kommande skalbarhetsgränser. Konfigurera även Azure Monitor-aviseringar för loggar och mått, till exempel antal begränsningsfel.

Ställ in Azure Service Health-tjänstaviseringar för att utlösa meddelanden när IoT Hub statusändringar.

Nästa steg