Delen via


Multitenancy en Azure-app-configuratie

Met Azure App Configuration kunt u configuratie-instellingen voor uw toepassing opslaan. Met behulp van App Configuration kunt u het patroon Extern Configuratiearchief eenvoudiger implementeren. In dit artikel worden enkele van de functies van App Configuration beschreven die handig zijn wanneer u met systemen met meerdere tenants werkt. De opgegeven koppelingen leiden u naar richtlijnen en voorbeelden voor het gebruik van App Configuration in een multitenant-oplossing.

Isolatiemodellen

Een opslag verwijst naar één exemplaar van de App Configuration-service.

In een multitenant-oplossing is het gebruikelijk om twee typen instellingen te hebben:

  • Gedeelde instellingen: van toepassing op meerdere tenants, zoals globale instellingen of instellingen die van toepassing zijn op alle tenants binnen een implementatiestempel. Het is vaak raadzaam om globale instellingen op te slaan in een gedeeld App Configuration-archief. Door deze methode te volgen, minimaliseert u het aantal plaatsen dat u moet bijwerken wanneer de waarde van een instelling wordt gewijzigd. Deze aanpak minimaliseert ook het risico dat instellingen vervolgens niet meer worden gesynchroniseerd.

  • Tenantspecifieke instellingen: geef de databasenaam of interne id's van elke tenant op. U kunt deze instellingen gebruiken om verschillende logboekniveaus voor elke tenant op te geven. U kunt bijvoorbeeld een probleem vaststellen dat is gerapporteerd door een specifieke tenant en u moet alleen diagnostische logboeken van die tenant verzamelen. U kunt kiezen of u de tenantspecifieke instellingen voor meerdere tenants wilt combineren in één winkel of een winkel voor elke tenant wilt implementeren. Baseer uw beslissing op uw vereisten. Als uw oplossing gebruikmaakt van één gedeelde toepassingslaag voor meerdere tenants, is er waarschijnlijk een minimaal voordeel bij het gebruik van tenantspecifieke winkels. Maar als u tenantspecifieke toepassingsexemplaren implementeert, kunt u ervoor kiezen om dezelfde benadering te spiegelen door tenantspecifieke configuratiearchieven te implementeren.

De volgende tabel bevat een overzicht van de verschillen tussen de belangrijkste tenancy-isolatiemodellen voor App Configuration.

Overweging Gedeelde opslag Opslaan per tenant
Gegevensisolatie Laag. Gebruik sleutelvoorvoegsels of labels om de gegevens van elke tenant te identificeren. Hoog
Prestatie-isolatie Laag Hoog
Implementatiecomplexiteit Laag Gemiddeld hoog
Operationele complexiteit Laag Gemiddeld hoog
Resourcekosten Laag Gemiddeld hoog
Voorbeeldscenario Grote multitenant-oplossing met een gedeelde toepassingslaag Tenants van de Premium-laag met volledig geïsoleerde implementaties

Gedeelde winkels

U kunt een gedeeld App Configuration-archief implementeren voor uw hele oplossing of één voor elke zegel. Vervolgens kunt u dezelfde store gebruiken voor de instellingen van uw tenants. Gebruik sleutelvoorvoegsels of labels om deze te onderscheiden.

Als u een grote hoeveelheid gegevens per tenant wilt opslaan of naar een groot aantal tenants moet schalen, loopt u mogelijk het risico dat u de resourcelimieten voor één archief overschrijdt. In dit scenario kunt u overwegen of u uw tenants kunt delen in een set gedeelde winkels om de implementatie- en beheerkosten te minimaliseren.

Als u deze aanpak volgt, moet u ervoor zorgen dat u de resourcequota en limieten begrijpt die van toepassing zijn. Houd met name rekening met de totale opslaglimiet voor de servicelaag die u gebruikt en zorg ervoor dat u de maximumaanvragen per uur niet overschrijdt.

Opslaan per tenant

U kunt er in plaats daarvan voor kiezen om een App Configuration-winkel te implementeren voor elke tenant. De App Configuration Standard-laag helpt u bij het implementeren van een onbeperkt aantal winkels in uw abonnement. Maar deze benadering is vaak complexer om te beheren, omdat u vervolgens meer resources moet implementeren en configureren.

Overweeg tenantspecifieke winkels als u een van de volgende situaties hebt:

  • U moet door de klant beheerde sleutels (CMK) gebruiken, waarbij de sleutels voor elke tenant gescheiden zijn.
  • Uw tenants vereisen dat hun configuratiegegevens worden geïsoleerd van de gegevens van andere tenants. Toegangsrechten voor App Configuration worden beheerd op het niveau van de opslagplaats, dus door aparte opslagplaatsen te implementeren kunt u aparte toegangsrechten configureren.

Functies van App Configuration die ondersteuning bieden voor multitenancy

Wanneer u App Configuration gebruikt in een toepassing met meerdere tenants, zijn er verschillende functies die u kunt gebruiken om tenantspecifieke instellingen op te slaan en op te halen.

Sleutelvoorvoegsels

In App Configuration werkt u met sleutel-waardeparen die toepassingsinstellingen vertegenwoordigen. De sleutel vertegenwoordigt de naam van de configuratie-instelling. U kunt een hiërarchische naamgevingsstructuur gebruiken voor uw sleutels. In een multitenant-oplossing kunt u een tenant-id gebruiken als voorvoegsel voor uw sleutels.

Stel dat u een instelling moet opslaan om het logboekregistratieniveau voor uw toepassing aan te geven. In een oplossing met één tenant kunt u deze instelling LogLeveleen naam opgeven. In een multitenant-oplossing kunt u ervoor kiezen om een hiërarchische sleutelnaam te gebruiken, zoals tenant1/LogLevel voor tenant 1, tenant2/LogLevel voor tenant 2, enzovoort.

U kunt lange sleutelnamen en meerdere niveaus in een hiërarchie opgeven. Als u lange sleutelnamen wilt gebruiken, moet u ervoor zorgen dat u de groottelimieten voor sleutels en waarden begrijpt.

Wanneer u de configuratie van één tenant in uw toepassing laadt, kunt u een sleutelvoorvoegselfilter opgeven om alleen de sleutels van die tenant te laden. U kunt ook de providerbibliotheek voor App Configuration configureren om het sleutelvoorvoegsel van de sleutels te knippen voordat deze beschikbaar worden gemaakt voor uw toepassing. Wanneer u het sleutelvoorvoegsel bijwerkt, ziet uw toepassing een consistente sleutelnaam, waarbij de waarden van die tenant in de toepassing worden geladen.

Etiketten

App Configuration ondersteunt ook labels. Met labels kunt u afzonderlijke waarden definiëren die dezelfde sleutel gebruiken.

Labels helpen bij versiebeheer, werken met meerdere implementatieomgevingen of voor andere doeleinden in uw oplossing. Hoewel u tenant-id's als labels kunt gebruiken, kunt u geen labels voor iets anders gebruiken. Voor multitenant-oplossingen is het daarom meestal een goede gewoonte om belangrijke voorvoegsels te gebruiken voor het beheren van tenantspecifieke instellingen en labels te gebruiken voor andere doeleinden.

Als u besluit labels voor elke tenant te gebruiken, kan uw toepassing alleen de instellingen voor een specifieke tenant laden met behulp van een labelfilter. Deze aanpak is handig als u afzonderlijke toepassingsimplementaties voor elke tenant hebt.

Caching aan de toepassingszijde

Wanneer u met App Configuration werkt, is het belangrijk om de instellingen in uw toepassing in de cache op te slaan in plaats van ze telkens te laden wanneer u ze gebruikt. De Cache-instellingen van de App Configuration-providerbibliotheken worden automatisch vernieuwd.

U moet ook beslissen of uw toepassing de instellingen voor één tenant of voor alle tenants laadt.

Naarmate uw tenantbasis groeit, neemt de hoeveelheid tijd en het geheugen dat nodig is voor het laden van instellingen voor alle tenants samen waarschijnlijk toe. In de meeste gevallen is het dus een goede gewoonte om de instellingen voor elke tenant afzonderlijk te laden wanneer uw toepassing deze nodig heeft.

Als u de configuratie-instellingen van elke tenant afzonderlijk laadt, moet uw toepassing elke set instellingen afzonderlijk van andere instellingen in de cache opslaan. In . NET-toepassingen kunt u een cache in het geheugen gebruiken om het object van IConfiguration de tenant in de cache op te cachen en vervolgens de tenant-id als cachesleutel te gebruiken. Door een cache in het geheugen te gebruiken, hoeft u voor elke aanvraag geen configuratie opnieuw te laden, maar de cache kan ongebruikte exemplaren verwijderen als uw toepassing onder geheugendruk staat. U kunt ook verlooptijden configureren voor de configuratie-instellingen van elke tenant.

Medewerkers

Microsoft onderhoudt dit artikel. De volgende inzenders hebben dit artikel geschreven.

Hoofdauteur:

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

Andere Inzenders:

Als u niet-openbare LinkedIn-profielen wilt zien, meldt u zich aan bij LinkedIn.

Volgende stap