Cachelagring i en molnbaserad app
Dricks
Det här innehållet är ett utdrag från eBook, Architecting Cloud Native .NET Applications for Azure, tillgängligt på .NET Docs eller som en kostnadsfri nedladdningsbar PDF som kan läsas offline.
Fördelarna med cachelagring är väl förstådda. Tekniken fungerar genom att tillfälligt kopiera data som används ofta från ett serverdelsdatalager till snabb lagring som ligger närmare programmet. Cachelagring implementeras ofta där...
- Data förblir relativt statiska.
- Dataåtkomsten är långsam, särskilt jämfört med cachens hastighet.
- Data är föremål för hög konkurrensnivå.
Varför?
Som beskrivs i microsofts vägledning för cachelagring kan cachelagring öka prestanda, skalbarhet och tillgänglighet för enskilda mikrotjänster och systemet som helhet. Det minskar svarstiden och konkurrensen vid hantering av stora volymer samtidiga begäranden till ett datalager. I takt med att datavolymen och antalet användare ökar, desto större blir fördelarna med cachelagring.
Cachelagring är mest effektivt när en klient upprepade gånger läser data som är oföränderliga eller som ändras sällan. Exempel är referensinformation som produkt- och prisinformation eller delade statiska resurser som är kostsamma att konstruera.
Mikrotjänster bör vara tillståndslösa, men en distribuerad cache kan ha stöd för samtidig åtkomst till sessionstillståndsdata när det är absolut nödvändigt.
Överväg också cachelagring för att undvika repetitiva beräkningar. Om en åtgärd transformerar data eller utför en komplicerad beräkning cachelagrar du resultatet för efterföljande begäranden.
Arkitektur för cachelagring
Molnbaserade program implementerar vanligtvis en distribuerad cachelagringsarkitektur. Cachen hanteras som en molnbaserad säkerhetskopieringstjänst, separat från mikrotjänsterna. Bild 5–15 visar arkitekturen.
Bild 5–15: Cachelagring i en molnbaserad app
Observera i föregående bild hur cacheminnet är oberoende av och delas av mikrotjänsterna. I det här scenariot anropas cachen av API Gateway. Som beskrivs i kapitel 4 fungerar gatewayen som en klientdel för alla inkommande begäranden. Den distribuerade cachen ökar systemets svarstider genom att returnera cachelagrade data när det är möjligt. Genom att separera cacheminnet från tjänsterna kan cacheminnet dessutom skalas upp eller ut oberoende av varandra för att möta ökade trafikkrav.
Föregående bild visar ett vanligt cachelagringsmönster som kallas cache-aside-mönstret. För en inkommande begäran frågar du först cacheminnet (steg 1) för ett svar. Om det hittas returneras data omedelbart. Om data inte finns i cacheminnet (kallas cachemiss) hämtas de från en lokal databas i en underordnad tjänst (steg 2). Den skrivs sedan till cachen för framtida begäranden (steg 3) och returneras till anroparen. Var noga med att regelbundet avlägsna cachelagrade data så att systemet förblir snabbt och konsekvent.
När en delad cache växer kan det visa sig vara fördelaktigt att partitioneras över flera noder. Om du gör det kan du minimera konkurrensen och förbättra skalbarheten. Många Cachelagring tjänster stöder möjligheten att dynamiskt lägga till och ta bort noder och balansera om data mellan partitioner. Den här metoden omfattar vanligtvis klustring. Klustring exponerar en samling federerade noder som en sömlös, enkel cache. Internt sprids dock data över noderna efter en fördefinierad distributionsstrategi som balanserar belastningen jämnt.
Azure Cache for Redis
Azure Cache for Redis är en säker tjänst för datacachelagring och meddelandeköer som hanteras fullständigt av Microsoft. Det används som ett PaaS-erbjudande (Platform as a Service) och ger hög dataflödes- och lågsvarstidsåtkomst till data. Tjänsten är tillgänglig för alla program inom eller utanför Azure.
Azure Cache for Redis-tjänsten hanterar åtkomsten till Redis-servrar med öppen källkod som finns i Azure-datacenter. Tjänsten fungerar som en fasad som ger hantering, åtkomstkontroll och säkerhet. Tjänsten har inbyggt stöd för en omfattande uppsättning datastrukturer, inklusive strängar, hashvärden, listor och uppsättningar. Om ditt program redan använder Redis fungerar det som det är med Azure Cache for Redis.
Azure Cache for Redis är mer än en enkel cacheserver. Det kan stödja ett antal scenarier för att förbättra en arkitektur för mikrotjänster:
- Ett minnesinternt datalager
- En distribuerad icke-relationell databas
- En meddelandekö
- En konfigurations- eller identifieringsserver
För avancerade scenarier kan en kopia av cachelagrade data sparas på disken. Om en oåterkallelig händelse inaktiverar både den primära cachen och replikcachen rekonstrueras cacheminnet från den senaste ögonblicksbilden.
Azure Redis Cache är tillgängligt i ett antal fördefinierade konfigurationer och prisnivåer. Premium-nivån har många funktioner på företagsnivå, till exempel klustring, datapersistence, geo-replikering och isolering av virtuella nätverk.