10 Top Open Source Caching-værktøjer til Linux i 2020


Pålidelige distribuerede computersystemer og applikationer er blevet hjørnestenen i fremtrædende virksomheder, især inden for automatisering og styring af missionskritiske forretningsprocesser og levering af tjenester til kunder. Som udviklere og systemadministratorer af disse systemer og applikationer forventes det, at du leverer alle slags IT-løsninger (IT), der vil sikre, at du har de mest effektive systemer til rådighed.

Dette inkluderer opgaver såsom at designe, teste og implementere strategier for system-/applikationsydelse, pålidelighed, tilgængelighed og skalerbarhed for at give slutbrugerne et tilfredsstillende serviceniveau. Caching er en af de mange, meget grundlæggende men effektive applikationsleveringsteknikker, du kan stole på. Før vi går videre, skal vi kort se på, hvad cache er, hvor og/eller hvordan det kan anvendes, og dets fordele?

Cache (eller indholds-cache) er en udbredt anvendelse af lagring af kopier af data på et midlertidigt lagersted (også kendt som en cache), så dataene let og hurtigt kan tilgås, end når de hentes fra det originale lager. Dataene, der er gemt i en cache, kan omfatte filer eller fragmenter af filer (såsom HTML-filer, scripts, billeder, dokumenter osv.), Databasehandlinger eller poster, API-opkald, DNS-poster osv. Afhængigt af typen og formålet med caching.

En cache kan være i form af hardware eller software. Softwarebaseret cache (som er fokus for denne artikel) kan implementeres i forskellige lag i en applikationsstak.

Cache kan anvendes på klientsiden (eller på applikationspræsentationslaget), for eksempel browser-cache eller app-cache (eller offline-tilstand). De fleste, hvis ikke alle moderne browsere leveres med en implementering af en HTTP-cache. Du har muligvis hørt om den populære sætning "ryd din cache", når du åbner en webapplikation, så du kan se de nyeste data eller indhold på et websted eller en applikation i stedet for browseren ved hjælp af en gammel kopi af det indhold, der er gemt lokalt.

Et andet eksempel på caching på klientsiden er DNS-caching, som sker på operativsystemniveau (OS). Det er en midlertidig lagring af oplysninger om tidligere DNS-opslag af OS eller webbrowser.

Caching kan også implementeres på netværksniveau, enten i et LAN eller WAN via proxies. Et almindeligt eksempel på denne type cache er i CDN'er (Content Delivery Networks), som er et globalt distribueret netværk af web-proxyservere.

For det tredje kan du også implementere cache ved oprindelse eller backend-server (e). Der er forskellige former for caching på serverniveau, de inkluderer:

  • webserver-cache (til cache af billeder, dokumenter, scripts osv.).
  • caching eller lagring af applikationer (bruges til læsning af filer fra disk, data fra andre tjenester eller processer eller anmodning om data fra en API osv.).
  • cache i databasen (for at give adgang til hukommelse til hyppigt anvendte data såsom anmodede databaserækker, forespørgselsresultater og andre handlinger).

Bemærk, at cachedata kan gemmes i ethvert lagersystem inklusive en database, fil, systemhukommelse osv., Men de skal være et hurtigere medium end den primære kilde. I denne henseende er cache i hukommelsen den mest effektive og almindeligt anvendte form for cache.

Caching tilbyder adskillige fordele, herunder følgende:

  • På databaseniveau forbedrer det læseevnen til mikrosekunder for cachelagrede data. Du kan også bruge tilbagekoblingscache til at forbedre skriveydelsen, hvor data skrives i hukommelsen og senere skrives til disk eller hovedlager med bestemte intervaller. Men dataintegritetsaspektet af det kan have potentielt katastrofale konsekvenser. For eksempel når systemet går ned lige før data er forpligtet til hovedlageret.
  • På applikationsniveau kan en cache gemme hyppigt læst data i selve applikationsprocessen, hvilket reducerer dataopslagstid fra sekunder ned til mikrosekunder, især over netværket.
  • I betragtning af den samlede applikations- og serverydelse hjælper caching med at reducere din serverbelastning, latenstid og netværksbåndbredde, når cachelagrede data serveres til klienter, hvilket forbedrer responstid og leveringshastigheder til klienter.
  • Caching muliggør også tilgængelighed af indhold, især via CDN'er og mange andre fordele.

I denne artikel vil vi gennemgå nogle af de øverste værktøjer til open source (applikations-/databasecaching og caching-proxyservere) til implementering af server-caching i Linux.

1. Redis

Redis (REmote DIctionary Server in full) er et gratis og open source, hurtigt, højtydende og fleksibelt distribueret hukommelsessystem, der kan bruges fra de fleste, hvis ikke alle programmeringssprog.

Det er en datastrukturbutik i hukommelsen, der fungerer som en cachemotor, vedvarende in-memory-database og meddelelsesmægler. Selvom den er udviklet og testet på Linux (den anbefalede platform til implementering) og OS X, fungerer Redis også i andre POSIX-systemer såsom * BSD uden nogen eksterne afhængigheder.

Redis understøtter adskillige datastrukturer såsom strenge, hashes, lister, sæt, sorterede sæt, bitmaps, streams og meget mere. Dette gør det muligt for programmører at bruge en bestemt datastruktur til at løse et specifikt problem. Det understøtter automatiske operationer på sin datastruktur, såsom at føje til en streng, skubbe elementer til en liste, øge værdien af en hash, computersætkryds og mere.

Dens nøglefunktioner inkluderer Redis-master-slave-replikering (som standard er asynkron), høj tilgængelighed og automatisk failover, der tilbydes ved hjælp af Redis Sentinel, Redis-klynge (du kan skalere vandret ved at tilføje flere klyngenoder) og datadeling (fordeling af data mellem flere Redis-forekomster ). Det understøtter også transaktioner, Lua-scripting, en række persistensindstillinger og kryptering af klient-serverkommunikation.

At være en hukommelse, men vedvarende on-disk database, tilbyder Redis den bedste ydeevne, når det fungerer bedst med et hukommelsesdatasæt. Du kan dog bruge den med en on-disk database som MySQL, PostgreSQL og mange flere. For eksempel kan du tage meget skrive-tunge små data i Redis og efterlade andre klumper af dataene i en on-disk database.

Redis understøtter sikkerhed på mange måder: en ved hjælp af en "beskyttet tilstand" -funktion til at sikre Redis-forekomster fra adgang fra eksterne netværk. Det understøtter også klient-server-godkendelse (hvor en adgangskode er konfigureret på serveren og leveret i klienten) og TLS på alle kommunikationskanaler såsom klientforbindelser, replikationslink og Redis Cluster-busprotokollen og mere.

Redis har meget mange brugssager, der inkluderer databasecaching, helsides caching, brugersession datahåndtering, API-responslagring, Publish/Subscribe messaging-system, meddelelseskø med mere. Disse kan bruges i spil, sociale netværksapplikationer, RSS-feeds, realtidsdataanalyse, brugeranbefalinger og så videre.

2. Memcached

Memcached er et gratis og open-source, simpelt, men alligevel kraftigt, distribueret cache-system til hukommelsesobjekter. Det er en nøgleværdilager i hukommelsen til små klumper af data, f.eks. Resultater af databaseopkald, API-opkald eller gengivelse af sider. Det kører på Unix-lignende operativsystemer inklusive Linux og OS X og også på Microsoft Windows.

At være et udviklerværktøj, er det beregnet til brug til at øge hastighederne på dynamiske webapplikationer ved at cache indhold (som standard en mindst nyligt anvendt (LRU) cache) og dermed reducere databasebelastningen på disken - det fungerer som en kortsigtet hukommelse til applikationer. Det tilbyder en API til de mest populære programmeringssprog.

Memcached understøtter strenge som den eneste datatype. Det har en klientserverarkitektur, hvor halvdelen af logikken sker på klientsiden og den anden halvdel på serversiden. Det er vigtigt, at klienter forstår, hvordan de vælger, hvilken server de skal skrive til eller læse fra, for en vare. En klient ved også meget godt, hvad de skal gøre, hvis den ikke kan oprette forbindelse til en server.

Selvom det er et distribueret caching-system, der således understøtter klyngedannelse, er Memcached-serverne afbrudt fra hinanden (dvs. de er uvidende om hinanden). Dette betyder, at der ikke er nogen replikeringsunderstøttelse som i Redis. De forstår også, hvordan man gemmer og henter varer, administrerer hvornår man skal kaste ud eller genbruger hukommelse. Du kan øge den tilgængelige hukommelse ved at tilføje flere servere.

Det understøtter godkendelse og kryptering via TLS fra Memcached 1.5.13, men denne funktion er stadig i den eksperimentelle fase.

3. Apache Ignite

Apache Ignite, også et gratis og open-source, vandret skalerbart distribueret nøgleværdilager i hukommelse, cache og multimodeldatabasesystem, der giver kraftige API'er til behandling af computere på distribuerede data. Det er også et datagitter i hukommelsen, der kan bruges enten i hukommelsen eller med Ignite native persistens. Den kører på UNIX-lignende systemer som Linux og også Windows.

Den har en lagring med flere lag, komplet SQL-support og ACID (Atomicitet, Konsistens, Isolering, Holdbarhed) -transaktioner (understøttes kun på nøgleværdi API-niveau) på tværs af flere klyngenoder, samlokaliseret behandling og maskinindlæring. Det understøtter automatisk integration med tredjepartsdatabaser, herunder RDBMS (såsom MySQL, PostgreSQL, Oracle Database osv.) Eller NoSQL-butikker.

Det er vigtigt at bemærke, at selvom Ignite fungerer som et SQL-datalager, er det ikke fuldt ud en SQL-database. Det håndterer tydeligt begrænsninger og indekser sammenlignet med traditionelle databaser; det understøtter primære og sekundære indekser, men kun de primære indekser bruges til at håndhæve unikhed. Desuden har den ingen støtte til udenlandske nøglebegrænsninger.

Ignite understøtter også sikkerhed ved at tillade dig at aktivere godkendelse på serveren og levere brugeroplysninger til klienter. Der er også understøttelse af SSL-sokkelkommunikation for at give en sikker forbindelse mellem alle Ignite-noder.

Ignite har mange anvendelsessager, der inkluderer cache-system, acceleration af systembelastning, databehandling i realtid og analyse. Det kan også bruges som en grafcentreret platform.

4. Couchbase-server

Couchbase Server er også en open source, distribueret NoSQL-dokumentorienteret engagement-database, der gemmer data som elementer i et nøgleværdiformat. Det fungerer på Linux og andre operativsystemer som Windows og Mac OS X. Det bruger et funktionsrige, dokumentorienteret forespørgselssprog kaldet N1QL, der giver kraftige forespørgsels- og indekseringstjenester til understøttelse af under millisekund operationer på data.

Dens bemærkelsesværdige funktioner er en hurtig nøgleværdibutik med administreret cache, specialbyggede indeksere, en kraftfuld forespørgselsmotor, udskalningsarkitektur (flerdimensionel skalering), big data og SQL-integration, sikkerhed i fuld stak og høj tilgængelighed .

Couchbase Server leveres med indbygget klyngesupport til flere instanser, hvor et klyngemanagerværktøj koordinerer alle knudepunktaktiviteter og giver simpelthen en klyngeomfattende grænseflade til klienter. Det er vigtigt, at du kan tilføje, fjerne eller udskifte noder efter behov uden nedetid. Det understøtter også datareplikering på tværs af noder i en klynge, selektiv datareplikering på tværs af datacentre.

Det implementerer sikkerhed gennem TLS ved hjælp af dedikerede Couchbase Server-porte, forskellige godkendelsesmekanismer (ved hjælp af enten legitimationsoplysninger eller certifikater), rollebaseret adgangskontrol (for at kontrollere hver godkendt bruger for systemdefinerede roller, de er tildelt), revision, logfiler og sessioner .

Dets anvendelsessituationer inkluderer en samlet programmeringsgrænseflade, søgning i fuld tekst, parallel forespørgsel, dokumenthåndtering og indeksering og meget mere.Det er specielt designet til at give datastyring med lav latenstid til interaktive web-, mobil- og IoT-applikationer i stor skala.

5. Hazelcast IMDG

Hazelcast IMDG (In-Memory Data Grid) er en open source, let, hurtig og udvidelig in-memory datagitter middleware, der giver elastisk skalerbar distribueret In-Memory computing. Hazelcast IMDG kører også på Linux, Windows og Mac OS X og enhver anden platform med Java installeret. Det understøtter en bred vifte af fleksible og sprogindfødte datastrukturer såsom Map, Set, List, MultiMap, RingBuffer og HyperLogLog.

Hazelcast er peer-to-peer og understøtter enkel skalerbarhed, opsætning af klynger (med muligheder for at samle statistik, overvåge via JMX-protokol og administrere klyngen med nyttige hjælpeprogrammer), distribuerede datastrukturer og begivenheder, datadeling og transaktioner. Det er også overflødigt, da det holder sikkerhedskopien af hver dataindtastning på flere medlemmer. For at skalere din klynge skal du blot starte en anden forekomst, data og sikkerhedskopier balanceres automatisk og jævnt.

Det giver en samling nyttige API'er for at få adgang til CPU'erne i din klynge for maksimal behandlingshastighed. Det tilbyder også distribuerede implementeringer af et stort antal udviklervenlige grænseflader fra Java som Map, Queue, ExecutorService, Lock og JCache.

Sikkerhedsfunktionerne inkluderer klyngemedlemmer og klientgodkendelse og adgangskontrol af klientoperationer via de JAAS-baserede sikkerhedsfunktioner. Det giver også mulighed for at opfange sokkelforbindelser og fjernbetjeninger udført af klienterne, kommunikationskryptering på sokkelniveau mellem klyngemedlemmerne og muliggøre SSL/TLS-sokkelkommunikation. Men ifølge den officielle dokumentation tilbydes de fleste af disse sikkerhedsfunktioner i Enterprise-versionen.

Det mest populære use case distribueres i hukommelse cache og datalager. Men det kan også bruges til websessionsklynger, NoSQL-udskiftning, parallel behandling, nem messaging og meget mere.

6. Mcrouter

Mcrouter er en gratis og open source Memcached-protokolrouter til skalering af Memcached-implementeringer, udviklet og vedligeholdt af Facebook. Den har Memcached ASCII-protokol, fleksibel routing, multi-cluster-support, cache på flere niveauer, pooling af forbindelser, flere hashing-ordninger, prefix-routing, replikerede pools, produktionstrafikskygge, online omkonfiguration og destinationssundhedsovervågning/automatisk failover.

Derudover understøtter den opvarmning til kold cache, rig statistik og fejlretningskommandoer, pålidelig sletning af stream-kvalitet af tjenester, store værdier, udsendelsesoperationer og leveres med IPv6- og SSL-support.

Det bruges på Facebook og Instagram som en kernekomponent i cacheinfrastrukturen til at håndtere næsten 5 milliarder anmodninger pr. Sekund i top.

7. Varnish Cache

Varnish Cache er en open source fleksibel, moderne og multifunktionel webapplikationsaccelerator, der sidder mellem webklienter og en originalserver. Den kører på alle moderne Linux-, FreeBSD- og Solaris-platforme (kun x86). Det er en fremragende cachemotor og indholdsaccelerator, som du kan implementere foran en webserver som NGINX, Apache og mange andre, for at lytte til standard HTTP-porten for at modtage og videresende klientanmodninger til webserveren og levere internettet servere svar til klienten.

Mens Varnish Cache fungerer som en mellemmand mellem klienter og originalserverne, tilbyder det flere fordele, idet elementet er at cache webindhold i hukommelsen for at mindske din webserverbelastning og forbedre leveringshastigheder til klienter.

Efter at have modtaget en HTTP-anmodning fra en klient, videresender den den til backend-webserveren. Når webserveren reagerer, cachelager Varnish indholdet i hukommelsen og leverer svaret til klienten. Når klienten beder om det samme indhold, serverer Varnish det fra cache-boosting af applikationsrespons. Hvis det ikke kan levere indhold fra cachen, videresendes anmodningen til backend, og svaret cachelagres og leveres til klienten.

Varnish-funktioner VCL (Varnish Configuration Language - et fleksibelt domænespecifikt sprog), der bruges til at konfigurere, hvordan anmodninger håndteres og mere, Varnish Modules (VMODS), som er udvidelser til Varnish Cache.

Sikkerhedsmæssigt understøtter Varnish Cache logning, anmodning om inspektion og begrænsning, godkendelse og godkendelse via VMODS, men det mangler indbygget support til SSL/TLS. Du kan aktivere HTTPS til Varnish Cache ved hjælp af en SSL/TLS-proxy som Hitch eller NGINX.

Du kan også bruge Varnish Cache som en firewall til webapplikationer, DDoS-angrebsforsvarer, hotlink-beskytter, belastningsafbalancering, integrationspunkt, single sign-on-gateway, godkendelses- og autorisationspolitikmekanisme, hurtig løsning til ustabil backends og HTTP-anmodningsrouter.

8. Blæksprutte-caching-proxy

En anden er en gratis og open source, fremragende og udbredt proxy- og cacheløsning til Linux er Squid. Det er en funktionsrig webproxy-cache-serversoftware, der leverer proxy- og cache-tjenester til populære netværksprotokoller, herunder HTTP, HTTPS og FTP. Det kører også på andre UNIX-platforme og Windows.

Ligesom Varnish Cache modtager den anmodninger fra klienter og sender dem til specificerede backend-servere. Når backend-serveren reagerer, gemmer den en kopi af indholdet i en cache og sender den til klienten. Fremtidige anmodninger om det samme indhold vil blive vist fra cachen, hvilket resulterer i hurtigere levering af indhold til klienten. Så det optimerer datastrømmen mellem klient og server for at forbedre ydeevnen og caches ofte brugt indhold for at reducere netværkstrafik og spare båndbredde.

Blæksprutte leveres med funktioner som at distribuere belastningen over interkommunikationshierarkier af proxyservere, producere data vedrørende webbrugsmønstre (f.eks. Statistikker om mest besøgte websteder), giver dig mulighed for at analysere, fange, blokere, udskifte eller ændre de meddelelser, der sendes.

Det understøtter også sikkerhedsfunktioner såsom rig adgangskontrol, autorisation og godkendelse, SSL/TLS-support og aktivitetslogning.

9. NGINX

NGINX (udtalt som Engine-X) er en open source, højtydende, fuldt udstyret og meget populær konsolideret løsning til opsætning af webinfrastruktur. Det er en HTTP-server, reverse proxyserver, en mail-proxyserver og en generisk TCP/UDP-proxyserver.

NGINX tilbyder grundlæggende cachefunktioner, hvor cachelagret indhold er gemt i en vedvarende cache på disken. Den fascinerende del af caching af indhold i NGINX er, at den kan konfigureres til at levere uaktuelt indhold fra cachen, når den ikke kan hente nyt indhold fra originalserverne.

NGINX tilbyder en lang række sikkerhedsfunktioner til at sikre dine websystemer, disse inkluderer SSL-afslutning, begrænsning af adgang med HTTP-grundlæggende godkendelse, godkendelse baseret på underanmodningsresultatet, JWT-godkendelse, begrænsning af adgang til proxierede HTTP-ressourcer, begrænsning af adgang efter geografisk placering, og meget mere.

Det distribueres almindeligvis som en reverse proxy, load balancer, SSL-terminator/sikkerhedsgateway, applikationsaccelerator/indholdscache og API-gateway i en applikationsstak. Det bruges også til streaming af medier.

10. Apache Traffic Server

Sidst men ikke mindst har vi Apache Traffic Server, en open-source, hurtig, skalerbar og udvidelig caching-proxyserver med understøttelse af HTTP/1.1 og HTTP/2.0. Det er designet til at forbedre netværkseffektivitet og ydeevne ved at cache indhold, der ofte er adgang til, ved kanten af et netværk til virksomheder, internetudbydere (internetudbydere), backbone-udbydere og mere.

Det understøtter både fremad og reverserer proxying af HTTP/HTTPS-trafik. Det kan også være konfigureret til at køre i en eller begge tilstande samtidigt. Den har vedvarende caching, plugin API'er; support til ICP (Internet Cache Protocol), ESI (Edge Side Includes); Keep-ALive og meget mere.

Med hensyn til sikkerhed understøtter Traffic Server styring af klientadgang ved at give dig mulighed for at konfigurere klienter, der har tilladelse til at bruge proxy-cachen, SSL-afslutning for både forbindelser mellem klienter og sig selv og mellem sig selv og originalserveren. Det understøtter også godkendelse og grundlæggende autorisation via et plugin, logning (af hver anmodning, den modtager og hver fejl, den opdager) og overvågning.

Traffic Server kan bruges som en web-proxy-cache, fremad-proxy, omvendt proxy, gennemsigtig proxy, load balancer eller i et cachehierarki.

Caching er en af de mest gavnlige og længe etablerede teknologier til levering af webindhold, der primært er designet til at øge hastigheden på websteder eller applikationer. Det hjælper med at reducere din serverbelastning, latenstid og netværksbåndbredde, fordi cachelagrede data serveres til klienter, hvilket forbedrer applikationens responstid og leveringshastigheder til klienter.

I denne artikel gennemgik vi de bedste open source-cacheværktøjer, der skal bruges på Linux-systemer. Hvis du kender andre open source-cacheværktøjer, der ikke er angivet her, bedes du dele med os via feedbackformularen nedenfor. Du kan også dele dine tanker om denne artikel med os.