Meningen av hurtigbufring
Hurtigbufring beholder gjenbrukbare kopier av ofte brukte data i minnet, slik at programmer unngår gjentatte databasekall og returnerer resultater raskere.
Hurtigbufring beholder gjenbrukbare kopier av ofte brukte data i minnet, slik at programmer unngår gjentatte databasekall og returnerer resultater raskere.
Hurtigbufring er praksisen med å lagre nøkkelverdidata i midlertidig minne (for eksempel en ikke-relasjonell strukturert spørringsspråkdatabase (NoSQL-datatbase), slik at programmer kan hente dem raskere enn de kunne fra vanlig lagring. I skylagringsarkitekturer – der forespørsler ofte krysser nettverk og berører delte tjenester – kan hurtigbufring bidra til å holde svartiden lav og redusere gjentatt arbeid.
De fleste systemer har en varig «kilde til sannhet» (en database) for fullstendige datasett, og beholder deretter en hurtigbuffer for midlertidige delsett som leses ofte. Når en forespørsel kommer inn, kontrollerer appen hurtigbufferen først; hvis dataene er der, returneres de raskt uten å spørre serverdelen på nytt. Utviklere bufrer også behandlede data og bruker dem på nytt for å betjene forespørsler raskere enn standardspørringer til relasjonsdatabaser, SQL-databaser eller PostgreSQL-databaser med åpen kildekode.
Gode kandidater inkluderer data lest gjentatte ganger og data som endres sjelden (for eksempel produkt- og prisinformasjon eller delte statiske ressurser som er kostbare å konstruere).
Hvis en operasjon transformerer data eller utfører en komplisert beregning, kan hurtigbufring av resultatet unngå å kompilere dem på nytt for etterfølgende forespørsler.
Utviklere bruker buffere på flere nivåer («bufferlag») til å lagre forskjellige typer data i separate buffere etter behov. Hvis du legger til ett eller flere hurtigbufferlag, kan det forbedre gjennomstrømming og ventetid i et datalag.
Minneinterne butikker brukes ofte til å inneholde store mengder øktdata, for eksempel brukerinndata, handlekurvoppføringer eller tilpassingsinnstillinger i korte perioder. For tilstandsfulle apper lagrer team også øktstatus i hurtigbufferen, slik at appen kan være tilstandsløs.
Hurtigbufring kan forbedre ytelsen på noen konkrete måter:
I mange skyutforminger ligger en hurtigbuffer ved siden av et primært datalager (for eksempel en database). Det primære lageret inneholder det fullstendige, varige datasettet på skyserveren, mens hurtigbufferen beholder et mindre, midlertidig delsett som er raskere å lese.
Et vanlig oppsett er et frittstående hurtigbufferlag eller en hurtigbuffer som befinner seg innenfor app- eller databasenivået – valgt basert på hvor du trenger raske lesinger.
Noen systemer bruker hurtigbufring på flere nivåer («hurtigbufferlag») slik at ulike typer data befinner seg i forskjellige hurtigbuffere basert på behov. Hvis du legger til ett eller flere hurtigbufferlag, kan det forbedre gjennomstrømmingen og ventetiden for datalaget og redusere totalkostnadene ved å redusere belastningen på serverdelen.
Team bufrer vanligvis data som deles inn i noen få kategorier:
Det finnes flere standardmåter apper leser fra og skriver til en hurtigbuffer på. Her er de vanligste mønstrene og hva de betyr i praksis.
Bruk av hurtigbufferlag kan forbedre gjennomstrømming og ventetid ved å betjene vanlige forespørsler fra hurtigbufferen i stedet for gjentatte ganger å spørre baklageret. Dette kan redusere behovet for å skalere databaseinfrastrukturen fordi færre forespørsler når databasen i utgangspunktet.
For apper med topper i bruk kan hurtigbuffere i minnet bidra til å redusere ventetiden ved å holde ofte forespurte data nær der de brukes.
Bruk disse som utgangspunkt når du velger en arbeidsflyt:
Hurtigbufring forbedrer programytelsen fordi lesing fra en minnehurtigbuffer er raskere enn lesing fra et diskdrevet datalager. Når flere forespørsler behandles fra hurtigbufferen, sender systemer færre spørringer til serverdeldatabaser, noe som kan redusere behovet for å skalere databaseinfrastruktur og redusere relaterte kostnader.
Hurtigbufring bidrar til å redusere gjentatt arbeid. Data som leses gjentatte ganger – eller som er kostbare å konstruere – kan lagres én gang og brukes på nytt. Hvis en operasjon utfører en komplisert beregning eller transformerer data, reduserer hurtigbufring av resultatet gjentatt beregning for etterfølgende forespørsler.
Mange områder bufrer sideutdata (for eksempel HTML- og klientskript), slik at serveren kan returnere de bufrede utdataene i stedet for å kjøre sidekoden på nytt hver gang. Hurtigbufring støtter også web-multimediescenarioer via webbuffere og nettverkshurtigbufring, for eksempel innholdsleveringsnettverk (CDN-er).
Apper lagrer ofte midlertidige delsett med data i en hurtigbuffer for rask henting, mens den primære databasen beholder det fullstendige varige datasettet. Hurtigbufring av behandlede data og gjenbruk kan betjene forespørsler raskere enn standard databasespørringer.
Team legger ofte til ett eller flere hurtigbufferlag for å forbedre gjennomstrømming og ventetid, og betjene vanlige spørringer fra hurtigbufferen og redusere databasebelastningen. Hurtigbuffere i minnet kan hjelpe når brukstopper og krav til gjennomstrømming øker, noe som reduserer ventetiden i disse periodene.
Hurtigbufring brukes ofte til å lagre store mengder kortvarige øktdata (for eksempel brukerinndata eller tilpassingsinnstillinger) i et lager i minnet. Noen team lagrer også øktstatus i hurtigbufferen, slik at tilstandsfulle apper kan holde appnivået tilstandsløst. For driftssystemer er data som endres sjelden – for eksempel produkt- og prisinformasjon – et vanlig hurtigbufringsmål.
En nettleserhurtigbuffer lagrer kopier av statiske ressurser på en brukers enhet, slik at gjentatte besøk kan bruke disse filene på nytt i stedet for å laste dem ned på nytt.
Hurtigbufring på serversiden skjer i prosessene som kjører forretningstjenester eksternt, i stedet for på sluttbrukerens enhet. Hurtigbuffere på serversiden er ofte enten private (lokale til én appforekomst) eller delt (brukes av mange appforekomster).
En CDN bufrer innhold på kantservere nærmere sluttbrukerne, slik at forespørsler ikke alltid reiser tilbake til opprinnelsen. I motsetning til en nettleserhurtigbuffer (én bruker), deles en CDN-hurtigbuffer – én brukers forespørsel kan fylle ut innhold som en annen bruker senere mottar.
Hurtigbufring er ikke bare et skydatabehandlingsmønster – maskinvare- og minnelag bruker det også.
CPU-hurtigbuffer er et lite, raskt minneområde nær (eller på) prosessoren som lagrer kopier av ofte brukte data og instruksjoner for å redusere tiden som brukes på å vente på hovedminnet.
Minnebufferen (i minnet) er den enkleste programvarebuffertypen: Et minneinternt lager oppbevares i adresseområdet for én enkelt prosess og åpnes direkte av denne prosessen.
En distribuert hurtigbuffer strekker seg over flere servere, slik at hurtigbufferen kan vokse og få transaksjonskapasitet utover én maskin. Mange delte hurtigbuffertjenester bruker en klynge med servere og distribuerer bufrede data på tvers av klyngen. skalering av hurtigbufferen kan være så enkelt som å legge til flere servere. Noen distribuerte utforminger legger også laghurtigbufre, slik at en feil på ett lag trekker fra en oppstrømsleverandør og lagrer deretter resultatet lokalt for neste forespørsel.
Hurtigbufring holder ofte brukte data nærmere der de brukes, noe som kan forbedre responstiden og hjelpe et system med å håndtere mer samtidige forespørsler. Det kan også redusere konflikt i det opprinnelige datalageret, for eksempel når en database har begrensede tilkoblinger.
I distribuerte programmer skjer hurtigbufring ofte på mer enn ett sted – klientsiden (for eksempel en nettleser) og serversiden (i et program eller en delt hurtigbuffertjeneste).
Start i det små og fokuser på dataene som gir deg den klareste returen:
En hurtigbuffer inneholder vanligvis kopier av data fra et primærlager, slik at ferskhet krever oppmerksomhet:
Hurtigbufring er en kjernebyggekloss for moderne systemer, fordi den passer til mange arkitekturer – fra enkelttjenester til distribuerte apper og kantlevering. For en administrert skyleverandør i minnehurtigbufferen kan du utforske Azure.