Dela via


Konfiguration av flera klientorganisationer och Azure-appar

Azure App Configuration hjälper dig att lagra konfigurationsinställningar för ditt program. Med App Configuration kan du enklare implementera mönstret Extern konfigurationslagringsmönster. I den här artikeln beskrivs några av funktionerna i App Configuration som är användbara när du arbetar med system med flera klientorganisationer. De angivna länkarna tar dig till vägledning och exempel för hur du använder App Configuration i en lösning med flera klientorganisationer.

Isoleringsmodeller

En lagringsplats refererar till en enda instans av App Configuration Service.

I en lösning med flera klientorganisationer är det vanligt att ha två typer av inställningar:

  • Delade inställningar: Gäller för flera klienter, till exempel globala inställningar eller inställningar som gäller för alla klienter inom en distributionsstämpel. Det är ofta bäst att lagra globala inställningar i ett delat appkonfigurationsarkiv. Genom att följa den här metoden minimerar du antalet platser som du behöver uppdatera när värdet för en inställning ändras. Den här metoden minimerar också risken för att inställningarna sedan blir osynkroniserade.

  • Klientspecifika inställningar: Ange varje klients databasnamn eller interna identifierare. Du kan använda de här inställningarna för att ange olika loggnivåer för varje klientorganisation. Du kan till exempel diagnostisera ett problem som rapporterats av en specifik klientorganisation och du behöver endast samla in diagnostikloggar från den klientorganisationen. Du kan välja om du vill kombinera de klientspecifika inställningarna för flera klienter till en enda butik eller ha en separat butik för varje klient. Basera ditt beslut på dina krav. Om din lösning använder en enda delad programnivå för flera klienter är det troligt att det finns minimala fördelar med att använda klientspecifika butiker. Men om du distribuerar klientspecifika programinstanser kan du välja att spegla samma metod genom att distribuera klientspecifika konfigurationslager.

I följande tabell sammanfattas skillnaderna mellan de viktigaste modellerna för innehavarisolering för App Configuration.

Att tänka på Delad butik Lagra per klientorganisation
Dataisolering Låg. Använd nyckelprefix eller etiketter för att identifiera varje klientorganisations data. Högt
Prestandaisolering Låg Högt
Distributionskomplexitet Låg Medelhög
Driftkomplexitet Låg Medelhög
Resurskostnad Låg Medelhög
Exempelscenario Stor lösning för flera klientorganisationer med en delad programnivå Premium-nivåklientorganisationer med helt isolerade distributioner

Delade butiker

Du kan distribuera ett delat appkonfigurationsarkiv för hela lösningen eller ett för varje stämpel. Sedan kan du använda samma lagringsutrymme för alla klientorganisationers inställningar. Använd nyckelprefix eller etiketter för att särskilja dem.

Om du behöver lagra en stor mängd data per klientorganisation eller skala till ett stort antal klienter kan du riskera att överskrida resursgränserna för ett enda lager. I det här scenariot bör du överväga om du kan dela dina klienter i en uppsättning delade butiker för att minimera distributions- och hanteringskostnaderna.

Om du följer den här metoden ser du till att du förstår de resurskvoter och begränsningar som gäller. Tänk särskilt på den totala lagringsgränsen för den tjänstnivå som du använder och se till att du inte överskrider det maximala antalet begäranden per timme.

Lagra per klientorganisation

Du kan istället välja att implementera en lagringsplats för appkonfiguration för varje hyresgäst. App Configuration Standard-nivån hjälper dig att distribuera ett obegränsat antal butiker i din prenumeration. Men den här metoden är ofta mer komplex att hantera eftersom du sedan måste distribuera och konfigurera fler resurser.

Överväg klientspecifika butiker om du har någon av följande situationer:

  • Du måste använda kundhanterade nycklar (CMK), där nycklarna är separata för varje hyresgäst.
  • Dina klienter kräver att deras konfigurationsdata isoleras från andra klientorganisationers data. Åtkomstbehörigheten för App Configuration styrs på butiksnivå, så genom att distribuera separata butiker kan du konfigurera separata åtkomstbehörigheter.

Funktioner i App Configuration som stöder multitenancy

När du använder App Configuration i ett program med flera klienter finns det flera funktioner som du kan använda för att lagra och hämta klientspecifika inställningar.

Nyckelprefix

I App Configuration arbetar du med nyckel/värde-par som representerar programinställningar. Nyckeln representerar namnet på konfigurationsinställningen. Du kan använda en hierarkisk namngivningsstruktur för dina nycklar. I en lösning med flera klienter bör du överväga att använda en klientidentifierare som prefix för dina nycklar.

Anta till exempel att du måste lagra en inställning för att ange loggningsnivån för ditt program. I en lösning med en enda klientorganisation kan du ge den här inställningen LogLevelnamnet . I en lösning med flera klienter kan du välja att använda ett hierarkiskt nyckelnamn, till exempel tenant1/LogLevel för klientorganisation 1, tenant2/LogLevel för klientorganisation 2 och så vidare.

Du kan ange långa nyckelnamn och flera nivåer i en hierarki. Om du väljer att använda långa nyckelnamn kontrollerar du att du förstår storleksgränserna för nycklar och värden.

När du läser in en enskild klients konfiguration i ditt program kan du ange ett nyckelprefixfilter för att endast läsa in den klientens nycklar. Du kan också konfigurera providerbiblioteket för App Configuration för att trimma nyckelprefixet från nycklarna innan det gör dem tillgängliga för ditt program. När du trimmar nyckelprefixet ser programmet ett konsekvent nyckelnamn med klientens värden inlästa i programmet.

Etiketter

AppKonfiguration har också stöd för etiketter. Med etiketter kan du definiera separata värden som använder samma nyckel.

Etiketter hjälper till med versionshantering, arbete med flera distributionsmiljöer eller för andra ändamål i din lösning. Även om du kan använda klientidentifierare som etiketter kan du inte använda etiketter för något annat. För lösningar med flera klienter är det därför vanligtvis en bra idé att använda nyckelprefix för att hantera klientspecifika inställningar och använda etiketter för andra ändamål.

Om du bestämmer dig för att använda etiketter för varje klientorganisation kan ditt program bara läsa in inställningarna för en specifik klientorganisation med hjälp av ett etikettfilter. Den här metoden är användbar om du har separata programdistributioner för varje klientorganisation.

Cachelagring på programsidan

När du arbetar med App Configuration är det viktigt att cachelägga inställningarna i ditt program i stället för att ladda dem varje gång du använder dem. Appkonfigurationsprovidrar cachelagrar inställningar och uppdaterar dem automatiskt.

Du måste också bestämma om din applikation ska läsa in inställningarna för en enskild hyresgäst eller för alla hyresgäster.

När klientbasen växer ökar sannolikt den tid och det minne som krävs för att läsa in inställningarna för alla klienter tillsammans. I de flesta fall är det därför bra att läsa in inställningarna för varje klientorganisation separat när programmet behöver dem.

Om du läser in konfigurationsinställningarna för varje klientorganisation separat måste programmet cachelagra varje uppsättning inställningar separat från övriga. I .NET-program kan du använda en minnesintern cache för att cachelagma klientens IConfiguration objekt och sedan använda klientidentifieraren som cachenyckel. Genom att använda en minnesintern cache behöver du inte läsa in en konfiguration igen för varje begäran, men cacheminnet kan ta bort oanvända instanser om ditt program är under minnesbelastning. Du kan också konfigurera förfallotider för varje klientorganisations konfigurationsinställningar.

Deltagare

Microsoft ansvarar för den här artikeln. Följande deltagare skrev den här artikeln.

Huvudförfattare:

  • John Downs | Principal Software Engineer, Azure Patterns &Practices

Övriga medarbetare:

Om du vill se linkedin-profiler som inte är offentliga loggar du in på LinkedIn.

Nästa steg