Beste Caching-verktøy for åpen kildekode for Linux i 2023


Pålitelige distribuerte datasystemer og applikasjoner har blitt hjørnesteinen i fremtredende virksomheter, spesielt innen automatisering og administrasjon av virksomhetskritiske forretningsprosesser og levering av tjenester til kunder.

Som utviklere og systemadministratorer av disse systemene og applikasjonene forventes det at du leverer alle typer informasjonsteknologi (IT) løsninger som vil sikre at du har de mest effektive systemene tilgjengelig.

Dette inkluderer oppgaver som å designe, teste og implementere strategier for system/applikasjonsytelse, pålitelighet, tilgjengelighet og skalerbarhet, for å gi sluttbrukere et tilfredsstillende servicenivå.

Caching er en av de mange, veldig grunnleggende, men effektive applikasjonsleveringsteknikkene du kan stole på. Før vi går videre, la oss kort se på hva caching er, hvor og/eller hvordan det kan brukes, og fordelene.

Hva er bufring eller innholdsbufring?

Caching (eller Content Caching) er en mye brukt teknikk for å lagre kopier av data på et midlertidig lagringssted (også kjent som en cache) slik at dataene enkelt og raskt kan nås når de hentes fra originallageret.

Dataene som er lagret i en hurtigbuffer kan inkludere filer eller fragmenter av filer (som HTML-filer, skript, bilder, dokumenter, etc.), databaseoperasjoner eller -poster, API-anrop, DNS-poster osv. avhengig av typen og formålet med caching.

En cache kan være i form av maskinvare eller programvare. Programvarebasert hurtigbuffer (som er fokus i denne artikkelen) kan implementeres på forskjellige lag av en applikasjonsstabel.

Caching kan brukes på klientsiden (eller på applikasjonspresentasjonslaget), for eksempel nettleserbufring eller appbufring (eller frakoblet modus). De fleste om ikke alle moderne nettlesere leveres med en implementering av en HTTP-cache.

Du har kanskje hørt om det populære uttrykket «tøm bufferen» når du åpner en nettapplikasjon for å la deg se de siste dataene eller innholdet på et nettsted eller en applikasjon, i stedet for at nettleseren bruker en gammel kopi av innholdet som er lagret lokalt.

Et annet eksempel på caching på klientsiden er DNS-caching som skjer på operativsystemnivå (OS). Det er en midlertidig lagring av informasjon om tidligere DNS-oppslag av operativsystemet eller nettleseren.

Caching kan også implementeres på nettverksnivå, enten i et LAN eller WAN via proxyer. Et vanlig eksempel på denne typen hurtigbufring er i CDN (Content Delivery Networks), som er globalt distribuerte nettverk av nettproxy-servere.

For det tredje kan du også implementere caching på opprinnelses- eller backend-serveren(e). Det finnes forskjellige former for caching på servernivå, de inkluderer:

  • webserverbufring (for bufring av bilder, dokumenter, skript og så videre).
  • programbufring eller memorisering (brukes til å lese filer fra disk, data fra andre tjenester eller prosesser, eller be om data fra et API osv.).
  • databasebufring (for å gi tilgang i minnet til ofte brukte data som forespurte databaserader, søkeresultater og andre operasjoner).

Merk at hurtigbufferdata kan lagres i et hvilket som helst lagringssystem, inkludert en database, fil, systemminne og så videre, men bør være et raskere medium enn primærkilden. I denne forbindelse er caching i minnet den mest effektive og mest brukte formen for caching.

Hvorfor bruke caching?

Caching gir en rekke fordeler, inkludert følgende:

  • På databasenivå forbedrer den leseytelsen til mikrosekunder for hurtigbufrede data. Du kan også bruke en tilbakeskrivningsbuffer for å forbedre skriveytelsen, der data skrives i minnet og senere skrives til disk eller hovedlagring med spesifiserte intervaller. Men dataintegritetsaspektet ved det kan ha potensielt katastrofale implikasjoner. For eksempel når systemet krasjer rett før data blir lagret på hovedlageret.
  • På applikasjonsnivå kan en cache lagre ofte leste data i selve applikasjonsprosessen, og dermed redusere dataoppslagstiden fra sekunder ned til mikrosekunder, spesielt over nettverket.
  • Tatt i betraktning den generelle applikasjons- og serverytelsen, hjelper bufring til å redusere serverbelastningen, ventetiden og nettverksbåndbredden når bufrede data blir servert til klienter, og forbedrer dermed responstid og leveringshastigheter til klienter.
  • Caching gir også mulighet for innholdstilgjengelighet, spesielt via CDN-er, og mange andre fordeler.

I denne artikkelen vil vi gjennomgå noen av de beste verktøyene for åpen kildekode (applikasjons-/databasebufring og bufferproxyservere) for implementering av serversiden caching i Linux.

1. Redis

Redis (Remote Dictionary Server i sin helhet) er et gratis og åpen kildekode, raskt, høyytelses og fleksibelt distribuert datasystem i minnet som kan brukes fra de fleste om ikke alle programmeringsspråk.

Det er et datastrukturlager i minnet som fungerer som en hurtigbuffermotor, en permanent minnedatabase på disken og meldingsmegler. Selv om den er utviklet og testet på Linux (den anbefalte plattformen for distribusjon) og OS X, fungerer Redis også i andre POSIX-systemer som *BSD, uten noen eksterne avhengigheter.

Redis støtter en rekke datastrukturer som strenger, hashes, lister, sett, sorterte sett, punktgrafikk, strømmer og mer. Dette gjør det mulig for programmerere å bruke en bestemt datastruktur for å løse et spesifikt problem. Den støtter automatiske operasjoner på datastrukturen, for eksempel å legge til en streng, skyve elementer til en liste, øke verdien til en hash, beregne settkryss og mer.

Nøkkelfunksjonene inkluderer Redis master-slave-replikering (som er asynkron som standard), høy tilgjengelighet og automatisk failover som tilbys ved bruk av Redis Sentinel, Redis cluster (du kan skalere horisontalt ved å legge til flere klyngenoder), og datapartisjonering (distribuerer data mellom flere Redis) tilfeller). Den har også støtte for transaksjoner, Lua-skripting, en rekke utholdenhetsalternativer og kryptering av klient-server-kommunikasjon.

Redis er en database i minnet, men vedvarende på disken, og tilbyr den beste ytelsen når den fungerer best med et datasett i minnet. Du kan imidlertid bruke den med en database på disken som MySQL, PostgreSQL og mange flere. For eksempel kan du ta svært skrivetunge små data i Redis og la andre biter av dataene ligge i en database på disken.

Redis støtter sikkerhet på mange måter: en ved å bruke en «beskyttet modus»-funksjon for å sikre Redis-forekomster fra å få tilgang fra eksterne nettverk. Den støtter også klient-server-autentisering (der et passord er konfigurert i serveren og gitt i klienten) og TLS på alle kommunikasjonskanaler som klienttilkoblinger, replikeringskoblinger, Redis Cluster-bussprotokollen og mer.

Redis har veldig mange brukstilfeller som inkluderer databasebufring, helsidebufring, administrasjon av brukerøktdata, lagring av API-svar, publisering/abonner meldingssystem, meldingskø og mer. Disse kan brukes i spill, sosiale nettverksapplikasjoner, RSS-feeder, sanntidsdataanalyse, brukeranbefalinger og så videre.

2. Memcachert

Memcached er et gratis og åpen kildekode, enkelt, men kraftig, distribuert minneobjektbufringssystem. Det er et nøkkelverdilager i minnet for små databiter som resultater av databaseanrop, API-kall eller sidegjengivelse. Den kjører på Unix-lignende operativsystemer inkludert Linux og OS X og også på Microsoft Windows.

Siden det er et utviklerverktøy, er det ment for bruk for å øke hastigheten til dynamiske nettapplikasjoner ved å bufre innhold (som standard en Last Recently Used (LRU) cache) og dermed redusere databasebelastning på disk – den fungerer som et korttidsminne for applikasjoner. Den tilbyr et API for de mest populære programmeringsspråkene.

Memcached støtter strenger som eneste datatype. Den har en klient-server-arkitektur, der halvparten av logikken skjer på klientsiden og den andre halvparten på serversiden. Viktigere, klienter forstår hvordan de skal velge hvilken server de skal skrive til eller lese fra, for en vare. Dessuten vet en klient veldig godt hva den skal gjøre i tilfelle den ikke kan koble til en server.

Selv om det er et distribuert caching-system, og dermed støtter clustering, er Memcached-serverne koblet fra hverandre (dvs. de er uvitende om hverandre). Dette betyr at det ikke er replikeringsstøtte som i Redis. De forstår også hvordan de skal lagre og hente gjenstander, og administrere når de skal kastes ut eller gjenbruke minne. Du kan øke tilgjengelig minne ved å legge til flere servere.

Den støtter autentisering og kryptering via TLS fra og med Memcached 1.5.13, men denne funksjonen er fortsatt i eksperimentell fase.

3. Apache Ignite

Apache Ignite, er også et gratis og åpen kildekode, horisontalt skalerbart distribuert nøkkelverdilager i minnet, hurtigbuffer og multi-modell databasesystem som gir kraftige prosesserings-APIer for databehandling av distribuerte data. Det er også et datanett i minnet som kan brukes enten i minnet eller med Ignite native persistence. Den kjører på UNIX-lignende systemer som Linux og også Windows.

Den har flerlagslagring, komplett SQL-støtte og ACID (Atomicity, Consistency, Isolation, Durability) transaksjoner (støttet kun på nøkkelverdi API-nivå) på tvers av flere klyngenoder, samlokalisert behandling, og maskinlæring. Den støtter automatisk integrasjon med alle tredjepartsdatabaser, inkludert alle RDBMS (som MySQL, PostgreSQL, Oracle Database, og så videre) eller NoSQL-butikker.

Det er viktig å merke seg at selv om Ignite fungerer som et SQL-datalager, er det ikke fullstendig en SQL-database. Den håndterer begrensninger og indekser tydelig sammenlignet med tradisjonelle databaser; den støtter primære og sekundære indekser, men bare de primære indeksene brukes til å håndheve unikhet. Dessuten har den ingen støtte for utenlandske nøkkelbegrensninger.

Ignite støtter også sikkerhet ved å tillate deg å aktivere autentisering på serveren og gi brukerlegitimasjon til klienter. Det er også støtte for SSL-kontaktkommunikasjon for å gi en sikker forbindelse mellom alle Ignite-noder.

Ignite har mange bruksområder som inkluderer hurtigbuffersystemer, akselerasjon av systembelastning, sanntidsdatabehandling og analyser. Den kan også brukes som en grafsentrisk plattform.

4. Couchbase Server

Couchbase Server er også en åpen kildekode, distribuert, NoSQL dokumentorientert engasjementsdatabase som lagrer data som elementer i et nøkkelverdiformat. Det fungerer på Linux og andre operativsystemer som Windows og Mac OS X. Det bruker et funksjonsrikt, dokumentorientert spørrespråk kalt N1QL som gir kraftige spørre- og indekseringstjenester for å støtte operasjoner på data under millisekunder.

Dens bemerkelsesverdige funksjoner er et raskt nøkkelverdilager med administrert cache, spesialbygde indeksere, en kraftig søkemotor, utskaleringsarkitektur (flerdimensjonal skalering), big data og SQL-integrasjon, fullstack-sikkerhet og høy tilgjengelighet.

Couchbase Server kommer med innebygd klyngestøtte for flere forekomster, der et klyngebehandlingsverktøy koordinerer alle nodeaktiviteter og gir kun et klyngeomfattende grensesnitt til klienter. Viktigere er at du kan legge til, fjerne eller erstatte noder etter behov, uten nedetid. Den støtter også datareplikering på tvers av noder i en klynge, og selektiv datareplikering på tvers av datasentre.

Den implementerer sikkerhet gjennom TLS ved å bruke dedikerte Couchbase Server-porter, forskjellige autentiseringsmekanismer (ved å bruke enten legitimasjon eller sertifikater), rollebasert tilgangskontroll (for å sjekke hver autentisert bruker for systemdefinerte roller de er tildelt), revisjon, logger og økter .

Dens brukstilfeller inkluderer et enhetlig programmeringsgrensesnitt, fulltekstsøk, parallell spørringsbehandling, dokumentadministrasjon, indeksering og mye mer. Den er spesielt utviklet for å gi dataadministrasjon med lav latens for storskala interaktive web-, mobil- og IoT-applikasjoner.

5. Hazelcast IMDG

Hazelcast IMDG (In-Memory Data Grid) er en åpen kildekode, lett, rask og utvidbar mellomvare for datanett i minnet, som gir elastisk skalerbar distribuert In-Memory-databehandling. Hazelcast IMDG kjører også på Linux, Windows, Mac OS X og enhver annen plattform med Java installert. Den støtter et bredt utvalg av fleksible og språklignende datastrukturer som Map, Set, List, MultiMap, RingBuffer og HyperLogLog.

Hazelcast er peer-to-peer og støtter enkel skalerbarhet, klyngeoppsett (med alternativer for å samle statistikk, overvåke via JMX-protokoll og administrere klyngen med nyttige verktøy), distribuerte datastrukturer og hendelser, dataporsjonering og transaksjoner. Det er også overflødig da det holder sikkerhetskopien av hver dataoppføring på flere medlemmer. For å skalere klyngen din, start ganske enkelt en annen forekomst, data og sikkerhetskopier blir automatisk og jevnt balansert.

Den gir en samling nyttige API-er for å få tilgang til CPU-ene i klyngen din for maksimal behandlingshastighet. Den tilbyr også distribuerte implementeringer av et stort antall utviklervennlige grensesnitt fra Java som Map, Queue, ExecutorService, Lock og JCache.

Sikkerhetsfunksjonene inkluderer klyngemedlemmer og klientautentisering og tilgangskontrollsjekker på klientoperasjoner via de JAAS-baserte sikkerhetsfunksjonene. Den tillater også å avskjære socket-tilkoblinger og fjernoperasjoner utført av klientene, socket-nivå kommunikasjonskryptering mellom klyngemedlemmene, og aktivere SSL/TLS-socket-kommunikasjon. Men ifølge den offisielle dokumentasjonen tilbys de fleste av disse sikkerhetsfunksjonene i Enterprise-versjonen.

Den mest populære brukssaken er distribuert caching i minnet og datalagring. Men det kan også distribueres for nettøktklynger, NoSQL-erstatning, parallell behandling, enkel meldingsutveksling og mye mer.

6. Mcrouter

Mcrouter er en gratis og åpen kildekode Memcached-protokollruter for skalering av Memcached-distribusjoner, utviklet og vedlikeholdt av Facebook. Den har Memcached ASCII-protokoll, fleksibel ruting, multi-cluster-støtte, multi-level cacher, tilkoblingspooling, flere hashing-skjemaer, prefiksruting, replikerte bassenger, produksjonstrafikkskyggelegging, online rekonfigurering og destinasjonshelseovervåking/automatisk failover.

I tillegg støtter den oppvarming av kald hurtigbuffer, rik statistikk og feilsøkingskommandoer, pålitelig slettestrømkvalitet, store verdier og kringkastingsoperasjoner, og leveres med IPv6- og SSL-støtte.

Den brukes på Facebook og Instagram som en kjernekomponent i cache-infrastrukturen, for å håndtere nesten 5 milliarder forespørsler per sekund på topp.

7. Lakk Cache

Varnish Cache er en åpen kildekode fleksibel, moderne og flerbruks nettapplikasjonsakselerator som sitter mellom nettklienter og en opprinnelsesserver. Den kjører på alle moderne Linux-, FreeBSD- og Solaris-plattformer (kun x86). Det er en utmerket hurtigbuffermotor og innholdsakselerator som du kan distribuere foran en webserver som NGINX, Apache og mange andre, for å lytte på standard HTTP-porten for å motta og videresende klientforespørsler til webserveren og levere nettet serversvar til klienten.

Mens den fungerer som en mellommann mellom klienter og opprinnelsesservere, tilbyr Varnish Cache flere fordeler, elementet er bufring av nettinnhold i minnet for å lindre belastningen på nettserveren og forbedre leveringshastigheter til klienter.

Etter å ha mottatt en HTTP-forespørsel fra en klient, videresender den den til backend-webserveren. Når nettserveren svarer, cacher Varnish innholdet i minnet og leverer svaret til klienten. Når klienten ber om det samme innholdet, vil Varnish servere det fra det hurtigbufferforsterkende applikasjonssvaret. Hvis den ikke kan levere innhold fra hurtigbufferen, videresendes forespørselen til backend og svaret bufres og leveres til klienten.

Varnish-funksjoner VCL (Varnish Configuration Language – et fleksibelt domenespesifikt språk) som brukes til å konfigurere hvordan forespørsler håndteres og mer, Varnish Moduler (VMODS) som er utvidelser for Varnish Cache.

Sikkerhetsmessig støtter Varnish Cache logging, be om inspeksjon, struping, autentisering og autorisasjon via VMODS, men den mangler innebygd støtte for SSL/TLS. Du kan aktivere HTTPS for Varnish Cache ved å bruke en SSL/TLS-proxy som Hitch eller NGINX.

Du kan også bruke Varnish Cache som en nettapplikasjonsbrannmur, DDoS-angrepsbeskyttelse, hotlinking-beskytter, lastbalanser, integreringspunkt, single sign-on gateway, autentiserings- og autorisasjonspolicymekanisme, hurtigløsning for ustabile backends og HTTP-forespørselsruter.

8. Squid Caching Proxy

En annen gratis og åpen kildekode, fremragende og mye brukt proxy- og hurtigbufferløsning for Linux er Squid. Det er en funksjonsrik webproxy-bufferserverprogramvare som tilbyr proxy- og hurtigbuffertjenester for populære nettverksprotokoller, inkludert HTTP, HTTPS og FTP. Den kjører også på andre UNIX-plattformer og Windows.

Akkurat som Varnish Cache, mottar den forespørsler fra klienter og sender dem til spesifiserte backend-servere. Når backend-serveren svarer, lagrer den en kopi av innholdet i en hurtigbuffer og sender det til klienten. Fremtidige forespørsler om det samme innholdet vil bli servert fra hurtigbufferen, noe som resulterer i raskere innholdslevering til klienten. Så den optimerer dataflyten mellom klient og server for å forbedre ytelsen og cacher ofte brukt innhold for å redusere nettverkstrafikk og spare båndbredde.

Squid kommer med funksjoner som å distribuere belastningen over interkommuniserende hierarkier av proxy-servere, produsere data om nettbruksmønstre (f.eks. statistikk om mest besøkte nettsteder), lar deg analysere, fange opp, blokkere, erstatte eller endre meldingene som sendes som proxy.

Den støtter også sikkerhetsfunksjoner som rik tilgangskontroll, autorisasjon og autentisering, SSL/TLS-støtte og aktivitetslogging.

9. NGINX

NGINX (uttales som Engine-X) er en åpen kildekode, høy ytelse, fullfunksjons og veldig populær konsolidert løsning for å sette opp nettinfrastruktur. Det er en HTTP-server, en omvendt proxy-server, en e-postproxy-server og en generisk TCP/UDP-proxy-server.

NGINX tilbyr grunnleggende bufringsmuligheter der bufret innhold lagres i en vedvarende hurtigbuffer på disken. Den fascinerende delen med innholdsbufring i NGINX er at den kan konfigureres til å levere gammelt innhold fra hurtigbufferen når den ikke kan hente nytt innhold fra opprinnelsesserverne.

NGINX tilbyr en rekke sikkerhetsfunksjoner for å sikre websystemene dine, disse inkluderer SSL-terminering, begrense tilgang med HTTP grunnleggende autentisering, autentisering basert på resultatet av underforespørselen, JWT-autentisering, begrense tilgang til proxy-baserte HTTP-ressurser, begrense tilgang etter geografisk plassering, og mye mer.

Det er vanligvis distribuert som en omvendt proxy, lastbalanser, SSL-terminator/sikkerhetsporter, applikasjonsakselerator/innholdsbuffer og API-gateway i en applikasjonsstabel. Den brukes også til streaming av media.

10. Apache Traffic Server

Sist men ikke minst har vi Apache Traffic Server, en åpen kildekode, rask, skalerbar og utvidbar caching proxy-server med støtte for HTTP/1.1 og HTTP/2.0. Den er utformet for å forbedre nettverkseffektiviteten og ytelsen ved å bufre ofte tilgjengelig innhold på kanten av et nettverk, for bedrifter, ISPer (Internet Server Providers), ryggradsleverandører og mer.

Den støtter både forover og bakover proxying av HTTP/HTTPS-trafikk. Den kan også konfigureres til å kjøre i en av eller begge modusene samtidig. Den har vedvarende caching, plugin-APIer; støtte for ICP (Internet Cache Protocol), ESI (Edge Side Includes); Keep-ALive og mer.

Når det gjelder sikkerhet, støtter Traffic Server kontroll av klienttilgang ved å la deg konfigurere klienter som har tillatelse til å bruke proxy-bufferen, SSL-terminering for både tilkoblinger mellom klienter og seg selv, og mellom seg selv og opprinnelsesserveren. Den støtter også autentisering og grunnleggende autorisasjon via en plugin, logging (av hver forespørsel den mottar og hver feil den oppdager), og overvåking.

Trafikkserver kan brukes som en webproxy-buffer, fremadrettet proxy, omvendt proxy, transparent proxy, lastbalanser eller i et cachehierarki.

Avsluttende kommentarer

Caching er en av de mest fordelaktige og veletablerte teknologiene for levering av nettinnhold som først og fremst er utviklet for å øke hastigheten til nettsteder eller applikasjoner. Det bidrar til å redusere serverbelastningen, ventetiden og nettverksbåndbredden fordi bufrede data blir servert til klienter, og dermed forbedre appens responstid og leveringshastigheter til klienter.

I denne artikkelen gjennomgikk vi de beste cachingverktøyene med åpen kildekode som kan brukes på Linux-systemer. Hvis du kjenner andre open source-bufringsverktøy som ikke er oppført her, vennligst del dem med oss via tilbakemeldingsskjemaet nedenfor. Du kan også dele tankene dine om denne artikkelen med oss.