Cachelagringens betydelse
Cachelagring sparar återanvändbara kopior av data som används ofta i minnet så att program undviker upprepade databasanrop och returnerar resultat snabbare.
Cachelagring sparar återanvändbara kopior av data som används ofta i minnet så att program undviker upprepade databasanrop och returnerar resultat snabbare.
Cachelagring är praxis att lagra nyckel-värde-data i tillfälligt minne (till exempel en icke-relationell strukturerad frågedatabas NoSQL-databas) så att appar kan hämta den snabbare än de skulle kunna från konventionell lagring. I molnlagringsarkitekturer där begäranden ofta går över nätverk och använder delade tjänster kan cachelagring bidra till kortare svarstider och minska upprepade arbetsmoment.
De flesta system behåller en hållbar sanningskälla (en databas) för kompletta datamängder och behåller sedan en cache för tillfälliga delmängder som läses ofta. När en begäran kommer in kontrollerar applikationen först cachen. Om data finns där returneras den snabbt utan att serverdelen behöver frågas igen. Utvecklare cachelagrar också bearbetad data och återanvänder den för att hantera begäranden snabbare än vanliga frågor mot relationsdatabaser, SQL-databaser eller öppen källkod- PostgreSQL-databaser.
Bra kandidater är data som läses upprepade gånger och data som ändras sällan (till exempel produkt- och prisinformation eller delade statiska resurser som är kostsamma att skapa).
Om en åtgärd transformerar data eller utför en komplicerad beräkning kan du cachelagra resultatet för att slippa räkna om det vid senare begäranden.
Utvecklare använder cacheminnen på flera nivåer (“cachelager”) för att lagra olika typer av data i separata cacheminnen baserat på efterfrågan. Om du lägger till ett eller flera cachelager kan du förbättra genomströmning och svarstid i ett datalager.
Minnesbaserade lagringstjänster används ofta för att hålla stora mängder sessionsdata, till exempel användarinmatning, varukorgsobjekt eller inställningar för anpassning, under korta perioder. För tillståndsberoende appar lagrar team också sessionsstatus i cachen så att appen kan vara tillståndslös.
Cachelagring kan förbättra prestandan på några konkreta sätt:
I många molndesign finns en cache bredvid ett primärt datalager (till exempel en databas). Den primära lagringen innehåller den fullständiga, hållbara datamängden på molnservern, medan cachen behåller en mindre, tillfällig delmängd som går snabbare att läsa.
En vanlig konfiguration är ett fristående cachelager eller ett cacheminne som finns inom den app- eller databasnivå—som valts baserat på var du behöver snabba läsningar.
Vissa system använder cachelagring i flera nivåer (“cache-lager”) så att olika typer av data finns i olika cacheminnen baserat på efterfrågan. Om du lägger till ett eller flera cachelager kan du förbättra dataflödet och svarstiden för datalagret och minska den totala kostnaden genom att minska belastningen på serverdelen.
Teams cachelagrar vanligtvis data som hamnar i några bucketar:
Det finns flera vanliga sätt för applikationerna att läsa från och skriva till en cache. Här är de vanligaste mönstren och vad de innebär i praktiken.
Genom att använda cachelager kan du förbättra dataflödet och svarstiden genom att hantera vanliga begäranden från cachen i stället för att köra upprepade frågor mot serverdelsarkivet. Detta kan minska behovet av att skala databasinfrastrukturen eftersom färre begäranden når databasen från början.
För applikationer med toppar i användningen kan minnesinterna cacheminnen hjälpa till att minska svarstiden genom att hålla ofta begärda data nära den plats där de används.
Använd dessa som utgångspunkt när du väljer ett arbetsflöde:
Cachelagring förbättrar programmets prestanda eftersom läsning från ett minnesinternt cacheminne går snabbare än att läsa från ett diskdrivet datalager. När fler begäranden hanteras från cacheminnet skickar system färre frågor till serverdelsdatabaser, vilket kan minska behovet av att skala databasinfrastrukturen och sänka relaterade kostnader.
Cachelagring hjälper till att klippa ut upprepat arbete. Data som läses upprepade gånger eller som är kostsamma att skapa kan lagras en gång och återanvändas. Om en åtgärd utför en komplicerad beräkning eller transformerar data minskar cachelagring av resultatet upprepade beräkningar för efterföljande begäranden.
Många platser cachelagrar sidutdata (till exempel HTML och klientskript) så att servern kan returnera cachelagrade utdata i stället för att köra sidkoden igen varje gång. Cachelagring stöder även webbmediescenarier via webbcacheminnen och nätverkscachelagring, till exempel nätverk för innehållsleverans (content delivery network).
Appar lagrar ofta tillfälliga delmängder av data i ett cacheminne för snabb hämtning, medan den primära databasen behåller den fullständiga varaktiga datauppsättningen. Cachelagring av bearbetade data och återanvändning kan hantera begäranden snabbare än standarddatabasfrågor.
Teams lägger ofta till ett eller flera cachelager för att förbättra dataflödet och svarstiden, hantera vanliga frågor från cacheminnet och minska databasbelastningen. Minnesinterna cacheminnen kan hjälpa dig när användningstoppar och dataflödesefterfrågan ökar, vilket minskar svarstiden under dessa perioder.
Cachelagring används ofta för att lagra stora mängder kortlivade sessionsdata (t.ex. användarindata eller anpassningsinställningar) i ett minnesinternt arkiv. Vissa team lagrar även sessionstillstånd i cachen så att tillståndskänsliga appar kan hålla appnivån tillståndslös. För driftsystem är data som ändras sällan, till exempel produkt- och prisinformation, ett vanligt cachelagringsmål.
En webbläsarcache lagrar kopior av statiska resurser på en användares enhet så att upprepade besök kan återanvända dessa filer i stället för att ladda ned dem igen.
Serverbaserad cachelagring sker i processerna som kör affärstjänster på distans, i stället för på slutanvändarens enhet. Serverbaserade cachar är ofta antingen privata (lokala för en app-instans) eller delade (används av många app-instansar).
Ett CDN cachelagrar innehåll på gränsservrar närmare slutanvändarna, så begäranden skickas inte alltid tillbaka till ursprunget. Till skillnad från en webbläsarcache (en användare) delas en CDN-cache – en användares begäran kan fylla på innehåll som en annan användare senare tar emot.
Cachelagring är inte bara ett molnberäkningsmönster – hårdvaru- och minneslager använder det också.
CPU-cache är ett litet, snabbt minnesområde nära (eller på) processorn som lagrar kopior av data som används ofta och instruktioner för att minska den tid som ägnas åt att vänta på huvudminnet.
Minnescache (minnesintern) är den enklaste typen av programvarucache: Ett minnesinternt arkiv som lagras i adressutrymmet för en enda process och som används direkt av den processen.
En distribuerad cache sträcker sig över flera servrar så att cachen kan växa och den transaktionella kapaciteten öka bortom en enskild dator. Många delade cache-tjänster använder ett kluster av servrar och sprider cachelagrad data över klustret; att skala cachen kan vara så enkelt som att lägga till fler servrar. Vissa distribuerade lösningar använder också lagerindelade cacher, så att en miss i ett lager hämtar från en uppströmsleverantör och sedan lagrar resultatet lokalt inför nästa begäran.
Cachelagring håller data som används ofta närmare där den används, vilket kan förbättra svarstiderna och hjälpa ett system att hantera fler samtidiga begäranden. Det kan också minska konkurrensen om resurser i det ursprungliga datalagret, till exempel när en databas har ett begränsat antal anslutningar.
I distribuerade program sker cachelagring ofta på mer än en plats – på klientsidan (till exempel i en webbläsare) och på serversidan (i ett program eller en delad cache-tjänst).
Börja i liten skala och fokusera på den data som ger tydligast nytta:
En cache innehåller vanligtvis kopior av data från ett primärt lager, så aktualitet måste åtgärdas:
Cachelagring är en grundläggande byggsten i moderna system eftersom den passar många arkitekturer, från enskilda tjänster till distribuerade appar och gränsleverans. För en hanterad cache i minnet från molnleverantör kan du utforska Azure.