Så här använder du allokeringsprinciper för att etablera enheter mellan IoT-hubbar
Azure IoT Hub Device Provisioning Service (DPS) stöder flera inbyggda allokeringsprinciper som avgör hur enheter tilldelas över en eller flera IoT-hubbar. DPS innehåller även stöd för anpassade allokeringsprinciper som gör att du kan skapa och använda dina egna allokeringsprinciper när ditt IoT-scenario kräver funktioner som inte tillhandahålls av de inbyggda principerna.
Den här artikeln hjälper dig att förstå hur du använder och hanterar DPS-allokeringsprinciper.
Förstå allokeringsprinciper
Allokeringsprinciper avgör hur DPS tilldelar enheter till en IoT-hubb. Varje DPS-instans har en standardallokeringsprincip, men den här principen kan åsidosättas av en allokeringsprincip som angetts för en registrering. Endast IoT-hubbar som har länkats till DPS-instansen kan delta i allokeringen. Om en länkad IoT-hubb ska delta i allokeringen beror på inställningarna för den registrering som en enhet etablerar genom.
DPS stöder fyra allokeringsprinciper:
Jämnt viktad distribution: enheter etableras till en IoT-hubb med hjälp av en viktad hash. Länkade IoT-hubbar har som standard samma inställning för allokeringsvikt, så det är lika troligt att enheter etableras till dem. Allokeringsvikten för en IoT-hubb kan justeras för att öka eller minska dess sannolikhet att tilldelas. Jämnt viktad distribution är standardallokeringsprincipen för en DPS-instans. Om du etablerar enheter till endast en IoT-hubb rekommenderar vi att du använder den här principen.
Lägsta svarstid: enheter etableras till IoT-hubben med den lägsta svarstiden till enheten. Om flera IoT-hubbar skulle ge den lägsta svarstiden hashar DPS enheter över dessa hubbar baserat på deras konfigurerade allokeringsvikt.
Statisk konfiguration: Enheter etableras till en enda IoT-hubb, som måste anges i registreringen.
Anpassad (Använd Azure-funktion): En anpassad allokeringsprincip ger dig mer kontroll över hur enheter tilldelas till en IoT-hubb. Detta uppnås genom att använda en anpassad webhook som finns i Azure Functions för att tilldela enheter till en IoT-hubb. DPS anropar din webhook och tillhandahåller all relevant information om enheten och registreringen. Webhooken returnerar IoT-hubben och den första enhetstvillingen (valfritt) som används för att etablera enheten. Anpassade nyttolaster kan också skickas till och från enheten. Mer information finns i Förstå anpassade allokeringsprinciper. Det går inte att ange som standardprincip för DPS-instansen.
Kommentar
I föregående lista visas namnen på allokeringsprinciperna som de visas i Azure-portalen. När du anger allokeringsprincipen med DPS REST API, Azure CLI och DPS-tjänst-SDK:er kallas de för följande: hash, geolatens, statisk och anpassad.
Det finns två inställningar på en länkad IoT-hubb som styr hur den deltar i allokeringen:
Allokeringsvikt: Anger den vikt som IoT-hubben ska ha när den deltar i allokeringsprinciper som omfattar flera IoT-hubbar. Det kan vara ett värde mellan ett och 1 000. Standardvärdet är en (eller null).
Med principen för jämnt viktad distributionsallokering har IoT-hubbar med högre allokeringsviktvärden större sannolikhet att väljas jämfört med dem med lägre viktvärden.
Med allokeringsprincipen Lägsta svarstid påverkar allokeringsviktvärdet sannolikheten för att en IoT-hubb väljs när mer än en IoT-hubb uppfyller kravet på lägsta svarstid.
Med en anpassad allokeringsprincip beror om och hur allokeringsviktvärdet används på webhookens logik.
Tillämpa allokeringsprincip: anger om IoT-hubben deltar i allokeringsprincipen. Standardvärdet är Ja (sant). Om värdet är Nej (falskt) tilldelas inte enheterna till IoT-hubben. IoT-hubben kan fortfarande väljas för en registrering, men den deltar inte i allokeringen. Du kan använda den här inställningen för att tillfälligt eller permanent ta bort en IoT-hubb från att delta i allokeringen. om den till exempel närmar sig det tillåtna antalet enheter.
Mer information om hur du länkar och hanterar IoT-hubbar i din DPS-instans finns i Länka och hantera IoT-hubbar.
När en enhet etablerar via DPS tilldelar tjänsten den till en IoT-hubb enligt följande riktlinjer:
Om registreringen anger en allokeringsprincip använder du den principen. Annars använder du standardallokeringsprincipen för DPS-instansen.
Om registreringen anger en eller flera IoT-hubbar tillämpar du allokeringsprincipen för dessa IoT-hubbar. Annars tillämpar du allokeringsprincipen för alla IoT-hubbar som är länkade till DPS-instansen. Observera att om allokeringsprincipen är statisk konfiguration måste registreringen ange en IoT-hubb.
Viktigt!
När du ändrar en allokeringsprincip eller de IoT-hubbar som den gäller för påverkar ändringarna endast efterföljande enhetsregistreringar. Enheter som redan har etablerats till en IoT-hubb påverkas inte. Om du vill att ändringarna ska tillämpas retroaktivt på dessa enheter måste du återskapa dem. Mer information finns i Så här etablerar du enheter igen.
Ange standardallokeringsprincipen för DPS-instansen
Standardallokeringsprincipen för DPS-instansen används när en allokeringsprincip inte anges för en registrering. Endast jämnt viktad distribution, lägsta svarstid och statisk konfiguration stöds för standardallokeringsprincipen. Anpassad allokering stöds inte. När en DPS-instans skapas ställs standardprincipen automatiskt in på Jämnt viktad distribution.
Kommentar
Om du anger Statisk konfiguration som standardallokeringsprincip för en DPS-instans måste en länkad IoT-hubb anges i registreringar som förlitar sig på standardprincipen.
Använd Azure-portalen för att ange standardallokeringsprincipen
Så här anger du standardallokeringsprincipen för DPS-instansen i Azure-portalen:
På den vänstra menyn i DPS-instansen väljer du Hantera allokeringsprincip.
Välj knappen för den allokeringsprincip som du vill ange: Lägsta svarstid, Jämnt viktad distribution eller Statisk konfiguration. (Anpassad allokering stöds inte för standardallokeringsprincipen.)
Välj Spara.
Använd Azure CLI för att ange standardallokeringsprincipen
Använd azure CLI-kommandot az iot dps update för att ange standardallokeringsprincipen för DPS-instansen. Du använder --set properties.allocationPolicy
för att ange principen. Följande kommando anger till exempel allokeringsprincipen till Jämnt viktad distribution (standard):
az iot dps update --name MyExampleDps --set properties.allocationPolicy=hashed
DPS har också stöd för att ange standardallokeringsprincipen med hjälp av REST-API:et För att skapa eller uppdatera DPS-resursen , Resource Manager-mallar och DPS Management SDK:er.
Ange allokeringsprincip och IoT-hubbar för registreringar
Enskilda registreringar och registreringsgrupper kan ange en allokeringsprincip och de länkade IoT-hubbar som den ska gälla för. Om ingen allokeringsprincip anges av registreringen används standardallokeringsprincipen för DPS-instansen.
I båda fallen gäller följande villkor:
För principer för jämnt viktad distribution, Lägsta svarstid och Anpassad allokering kan registreringen ange vilka länkade IoT-hubbar som ska användas. Om inga IoT-hubbar har valts i registreringen används alla länkade IoT-hubbar i DPS-instansen.
För statisk konfiguration måste registreringen ange en enda IoT-hubb från listan över länkade IoT-hubbar.
För både enskilda registreringar och registreringsgrupper kan du ange en allokeringsprincip och de länkade IoT-hubbar som ska tillämpas när du skapar eller uppdaterar en registrering.
Använd Azure-portalen för att hantera princip för registreringsallokering och IoT-hubbar
Så här anger du allokeringsprincip och väljer IoT-hubbar för en registrering i Azure-portalen:
På den vänstra menyn i DPS-instansen väljer du Hantera registreringar.
På sidan Hantera registreringar :
Om du vill skapa en ny registrering väljer du antingen fliken Registreringsgrupper eller Enskilda registreringar och väljer sedan Lägg till registreringsgrupp eller Lägg till enskild registrering.
Om du vill uppdatera en befintlig registrering väljer du den i listan under antingen fliken Registreringsgrupper eller Enskilda registreringar .
På sidan Lägg till registrering (vid skapande) eller sidan Registreringsinformation (vid uppdatering) väljer du fliken IoT-hubbar . På den här fliken kan du välja den allokeringsprincip som du vill tillämpa på registreringen och välja de IoT-hubbar som ska användas:
Välj de IoT-hubbar som enheter kan tilldelas till i listrutan. Om du väljer allokeringsprincipen för statisk konfiguration begränsas du till att välja en enda länkad IoT-hubb. För alla andra allokeringsprinciper väljs alla länkade IoT-hubbar som standard, men du kan ändra det här valet med hjälp av listrutan. Om du vill att registreringen automatiskt ska använda länkade IoT-hubbar när de läggs till (eller tas bort från) DPS-instansen avmarkerar du alla IoT-hubbar.
Du kan också välja knappen Länka en ny IoT-hubb för att länka en ny IoT-hubb till DPS-instansen och göra den tillgänglig i listan över IoT-hubbar som kan väljas. Mer information om hur du länkar en IoT-hubb finns i Lägga till en länkad IoT Hub.
Välj den allokeringsprincip som du vill tillämpa på registreringen. Standardallokeringsprincipen för DPS-instansen är markerad som standard. För anpassad allokering måste du också ange en webhook för anpassad allokeringsprincip i Azure Functions. Mer information finns i självstudien Använda anpassade allokeringsprinciper .
Ange eventuella andra egenskaper som behövs för registreringen och spara sedan inställningarna.
Använda Azure CLI för att hantera princip för registreringsallokering och IoT-hubbar
Använd az iot dps enrollment create, az iot dps enrollment update, az iot dps enrollment-group create, az iot dps enrollment-group update Azure CLI-kommandon för att skapa eller uppdatera enskilda registreringar eller registreringsgrupper.
Följande kommando skapar till exempel en symmetrisk nyckelregistreringsgrupp som standard använder standardallokeringsprincipen som angetts för DPS-instansen och alla IoT-hubbar som är länkade till DPS-instansen:
az iot dps enrollment-group create --dps-name MyExampleDps --enrollment-id MyEnrollmentGroup
Följande kommando uppdaterar samma registreringsgrupp för att använda allokeringsprincipen lägsta svarstid med IoT-hubbar med namnet MyExampleHub och MyExampleHub-2:
az iot dps enrollment-group update --dps-name MyExampleDps --enrollment-id MyEnrollmentGroup --allocation-policy geolatency --iot-hubs "MyExampleHub.azure-devices.net MyExampleHub-2.azure-devices.net"
DPS stöder även inställning av allokeringsprincip och valda IoT-hubbar för registreringen med hjälp av REST-API:er för skapa eller uppdatera enskild registrering och REST-API:er för skapa eller uppdatera registrering samt DPS-tjänst-SDK:er.
Allokeringsbeteende
Observera följande när du använder allokeringsprinciper med IoT Hub:
Med Azure CLI, REST-API:et och DPS-tjänstens SDK:er kan du skapa registreringar utan allokeringsprincip. I det här fallet använder DPS standardprincipen för DPS-instansen när en enhet etablerar via registreringen. Om du ändrar standardprincipinställningen för DPS-instansen ändras hur enheter etableras via registreringen.
Med Azure-portalen fylls allokeringsprincipinställningen för registreringen i förväg med standardallokeringsprincipen. Du kan behålla den här inställningen eller ändra den till en annan princip, men när du sparar registreringen anges allokeringsprincipen för registreringen. Efterföljande ändringar av tjänstens standardallokeringsprincip ändrar inte hur enheter etableras via registreringen.
För principer för lika viktad distribution, lägsta svarstid och anpassad allokering kan du konfigurera registreringen så att den använder alla IoT-hubbar som är länkade till DPS-instansen:
Med Azure CLI och DPS-tjänstens SDK:er skapar du registreringen utan att ange några IoT-hubbar.
Med Azure-portalen fylls registreringen i förväg med alla IoT-hubbar som är länkade till DPS-instansen som valts. avmarkera alla IoT-hubbar innan du sparar registreringen.
Om inga IoT-hubbar väljs i registreringen, kommer när en ny IoT-hubb är länkad till DPS-instansen att delta i allokeringen. och vice versa för en IoT-hubb som tas bort från DPS-instansen.
Om IoT-hubbar anges för en registrering måste IoT Hubs-inställningen för registreringen uppdateras manuellt eller programmatiskt för att en nyligen länkad IoT-hubb ska läggas till eller en borttagen IoT-hubb tas bort från allokeringen.
Ändring av allokeringsprincipen eller IoT-hubbar som används för en registrering påverkar endast efterföljande registreringar via den registreringen. Om du vill att ändringarna ska påverka tidigare registreringar måste du återskapa alla tidigare registrerade enheter.
Begränsningar
Det finns vissa begränsningar när du arbetar med allokeringsprinciper och privata slutpunkter. Mer information finns i Begränsningar för privata slutpunkter.
Nästa steg
Mer information om hur du länkar och hanterar länkade IoT-hubbar finns i Hantera länkade IoT-hubbar.
Mer information om anpassade allokeringsprinciper finns i Förstå anpassade allokeringsprinciper.
Ett exempel från slutpunkt till slutpunkt med den lägsta svarstidsallokeringsprincipen finns i självstudien Etablera för geolatens .
Ett exempel från slutpunkt till slutpunkt som använder en anpassad allokeringsprincip finns i självstudien Använd anpassade allokeringsprinciper .