Zoeken op website

Beste open source cachingtools voor Linux in 2023


Betrouwbare gedistribueerde computersystemen en -applicaties zijn de hoeksteen geworden van vooraanstaande bedrijven, vooral bij het automatiseren en beheren van bedrijfskritische bedrijfsprocessen en het leveren van diensten aan klanten.

Als ontwikkelaars en systeembeheerders van deze systemen en applicaties wordt van u verwacht dat u allerlei informatietechnologie (IT)-oplossingen levert die ervoor zorgen dat u over de meest efficiënte systemen beschikt.

Dit omvat taken zoals het ontwerpen, testen en implementeren van strategieën voor systeem-/applicatieprestaties, betrouwbaarheid, beschikbaarheid en schaalbaarheid, om eindgebruikers een bevredigend serviceniveau te bieden.

Caching is een van de vele, zeer eenvoudige maar effectieve technieken voor het leveren van applicaties waarop u kunt vertrouwen. Voordat we verder gaan, laten we eerst kort kijken naar wat caching is, waar en/of hoe het kan worden toegepast, en de voordelen ervan.

Wat is caching of inhoudcaching?

Caching (of Contentcaching) is een veelgebruikte techniek voor het opslaan van kopieën van gegevens op een tijdelijke opslaglocatie (ook wel een cache genoemd) zodat de gegevens gemakkelijk en snel toegankelijk zijn wanneer deze uit de oorspronkelijke opslag worden opgehaald.

De gegevens die in een cache zijn opgeslagen, kunnen bestanden of fragmenten van bestanden omvatten (zoals HTML-bestanden, scripts, afbeeldingen, documenten, enz.), databasebewerkingen of -records, API-oproepen, DNS-records, enz., afhankelijk van het type en het doel van caching.

Een cache kan de vorm hebben van hardware of software. Op software gebaseerde cache (waar de focus van dit artikel op ligt) kan worden geïmplementeerd in verschillende lagen van een applicatiestapel.

Caching kan worden toegepast aan de clientzijde (of op de presentatielaag van de applicatie), bijvoorbeeld browsercaching of app-caching (of offline modus). De meeste, zo niet alle, moderne browsers worden geleverd met een implementatie van een HTTP-cache.

U heeft misschien wel eens gehoord van de populaire uitdrukking “uw cachegeheugen wissen” wanneer u een webapplicatie opent, zodat u de nieuwste gegevens of inhoud op een website of applicatie kunt zien, in plaats van dat de browser een oud exemplaar van de inhoud die lokaal is opgeslagen.

Een ander voorbeeld van caching aan de clientzijde is DNS-caching, wat gebeurt op het niveau van het besturingssysteem (OS). Het is een tijdelijke opslag van informatie over eerdere DNS-zoekopdrachten door het besturingssysteem of de webbrowser.

Caching kan ook op netwerkniveau worden geïmplementeerd, in een LAN of WAN via proxy's. Een veelvoorkomend voorbeeld van dit type caching is te vinden in CDN's (Content Delivery Networks), dit zijn wereldwijd gedistribueerde netwerken van webproxyservers.

Ten derde kun je ook caching implementeren op de origin- of backend-server(s). Er zijn verschillende vormen van caching op serverniveau, waaronder:

  • webservercaching (voor het cachen van afbeeldingen, documenten, scripts, enzovoort).
  • applicatiecaching of memorisatie (gebruikt bij het lezen van bestanden van schijf, gegevens van andere services of processen, of het opvragen van gegevens bij een API, enz.).
  • databasecaching (om in het geheugen toegang te bieden tot veelgebruikte gegevens, zoals opgevraagde databaserijen, queryresultaten en andere bewerkingen).

Houd er rekening mee dat cachegegevens kunnen worden opgeslagen in elk opslagsysteem, inclusief een database, bestand, systeemgeheugen, enzovoort, maar dat dit een sneller medium moet zijn dan de primaire bron. In dit opzicht is in-memory caching de meest effectieve en meest gebruikte vorm van caching.

Waarom caching gebruiken?

Caching biedt tal van voordelen, waaronder de volgende:

  • Op databaseniveau verbetert het de leesprestaties tot microseconden voor gegevens in de cache. U kunt ook een terugschrijfcache gebruiken om de schrijfprestaties te verbeteren, waarbij gegevens met gespecificeerde intervallen in het geheugen worden geschreven en later naar schijf of hoofdopslag worden geschreven. Maar het data-integriteitsaspect ervan kan mogelijk rampzalige gevolgen hebben. Bijvoorbeeld wanneer het systeem crasht net voordat gegevens in de hoofdopslag worden vastgelegd.
  • Op applicatieniveau kan een cache vaak gelezen gegevens opslaan binnen het applicatieproces zelf, waardoor de opzoektijd van gegevens wordt verkort van seconden tot microseconden, vooral via het netwerk.
  • Als we de algehele applicatie- en serverprestaties in ogenschouw nemen, helpt caching de serverbelasting, latentie en netwerkbandbreedte te verminderen terwijl in de cache opgeslagen gegevens aan clients worden aangeboden, waardoor de responstijd en leveringssnelheden aan clients worden verbeterd.
  • Caching maakt ook de beschikbaarheid van inhoud mogelijk, vooral via CDN's, en vele andere voordelen.

In dit artikel bespreken we enkele van de beste open source-tools (caching van applicaties/databases en caching van proxyservers) voor het implementeren van server-side caching in Linux.

1. Opnieuw

Redis (voluit REmote DIctionary Server) is een gratis en open-source, snel, krachtig en flexibel gedistribueerd in-memory computersysteem dat vanuit de meeste, zo niet alle programmeertalen kan worden gebruikt.

Het is een gegevensstructuuropslag in het geheugen die werkt als een caching-engine, een persistente database op schijf in het geheugen en een berichtenmakelaar. Hoewel het is ontwikkeld en getest op Linux (het aanbevolen platform voor implementatie) en OS X, werkt Redis ook in andere POSIX-systemen zoals *BSD, zonder enige externe afhankelijkheden.

Redis ondersteunt talloze gegevensstructuren zoals tekenreeksen, hashes, lijsten, sets, gesorteerde sets, bitmaps, streams en meer. Hierdoor kunnen programmeurs een specifieke datastructuur gebruiken om een specifiek probleem op te lossen. Het ondersteunt automatische bewerkingen op de datastructuur, zoals het toevoegen aan een string, het pushen van elementen naar een lijst, het verhogen van de waarde van een hash, het kruisen van rekensets en meer.

De belangrijkste functies zijn onder meer Redis master-slave-replicatie (die standaard asynchroon is), hoge beschikbaarheid en automatische failover aangeboden met behulp van Redis Sentinel, Redis-cluster (u kunt horizontaal schalen door meer clusterknooppunten toe te voegen) en gegevenspartitionering (het distribueren van gegevens over meerdere Redis-knooppunten). exemplaren). Het biedt ook ondersteuning voor transacties, Lua-scripting, een reeks persistentie-opties en encryptie van client-server-communicatie.

Omdat het een in-memory maar persistente database op schijf is, biedt Redis de beste prestaties wanneer het het beste werkt met een in-memory dataset. U kunt het echter gebruiken met een database op schijf, zoals MySQL, PostgreSQL en nog veel meer. U kunt bijvoorbeeld zeer schrijfzware kleine gegevens in Redis opnemen en andere delen van de gegevens in een database op schijf laten staan.

Redis ondersteunt beveiliging op veel manieren: één door gebruik te maken van een “beschermde modus”-functie om te voorkomen dat Redis-instanties worden benaderd vanuit externe netwerken. Het ondersteunt ook client-server-authenticatie (waarbij een wachtwoord op de server wordt geconfigureerd en in de client wordt opgegeven) en TLS op alle communicatiekanalen, zoals clientverbindingen, replicatielinks, het Redis Cluster-busprotocol en meer.

Redis heeft heel veel gebruiksscenario's, waaronder databasecaching, caching van volledige pagina's, gegevensbeheer van gebruikerssessies, opslag van API-reacties, berichtensysteem voor publiceren/abonneren, berichtenwachtrij en meer. Deze kunnen worden toegepast in games, sociale netwerktoepassingen, RSS-feeds, realtime gegevensanalyse, gebruikersaanbevelingen, enzovoort.

2. Gememoriseerd

Memcached is een gratis en open-source, eenvoudig maar krachtig, gedistribueerd cachingsysteem voor geheugenobjecten. Het is een sleutelwaardeopslag in het geheugen voor kleine hoeveelheden gegevens, zoals resultaten van databaseaanroepen, API-aanroepen of paginaweergave. Het draait op Unix-achtige besturingssystemen, waaronder Linux en OS X, en ook op Microsoft Windows.

Omdat het een ontwikkelaarstool is, is het bedoeld voor gebruik bij het verhogen van de snelheid van dynamische webapplicaties door inhoud in het cachegeheugen op te slaan (standaard een Least Recent Used (LRU) cache), waardoor de database laden op schijf – het fungeert als kortetermijngeheugen voor applicaties. Het biedt een API voor de meest populaire programmeertalen.

Memcached ondersteunt tekenreeksen als het enige gegevenstype. Het heeft een client-server-architectuur, waarbij de helft van de logica aan de clientzijde gebeurt en de andere helft aan de serverzijde. Belangrijk is dat klanten begrijpen hoe ze voor een item kunnen kiezen naar welke server ze willen schrijven of lezen. Ook weet een client heel goed wat hij moet doen als hij geen verbinding kan maken met een server.

Hoewel het een gedistribueerd cachingsysteem is en dus clustering ondersteunt, zijn de Memcached-servers van elkaar losgekoppeld (dat wil zeggen dat ze zich niet van elkaar bewust zijn). Dit betekent dat er geen replicatieondersteuning is zoals in Redis. Ze begrijpen ook hoe ze items moeten opslaan en ophalen, en hoe ze geheugen moeten verwijderen of hergebruiken. U kunt het beschikbare geheugen vergroten door meer servers toe te voegen.

Het ondersteunt authenticatie en encryptie via TLS vanaf Memcached 1.5.13, maar deze functie bevindt zich nog in de experimentele fase.

3. Apache-ontsteking

Apache Ignite is ook een gratis en open-source, horizontaal schaalbaar gedistribueerd in-memory sleutelwaardeopslag-, cache- en multi-modeldatabasesysteem dat krachtige verwerkings-API's biedt voor het berekenen van gedistribueerde gegevens. Het is ook een gegevensraster in het geheugen dat kan worden gebruikt in het geheugen of met native persistentie van Ignite. Het draait op UNIX-achtige systemen zoals Linux en ook Windows.

Het biedt opslag op meerdere niveaus, volledige SQL-ondersteuning en ACID-transacties (Atomicity, Consistentie, Isolatie, Duurzaamheid) (alleen ondersteund op sleutelwaarde-API-niveau) over meerdere clusterknooppunten, co-located verwerking, en machinaal leren. Het ondersteunt automatische integratie met databases van derden, inclusief alle RDBMS (zoals MySQL, PostgreSQL, Oracle Database, enzovoort) of NoSQL-winkels.

Het is belangrijk op te merken dat hoewel Ignite werkt als een SQL-gegevensopslag, het niet volledig een SQL-database is. Het gaat duidelijk om met beperkingen en indexen in vergelijking met traditionele databases; het ondersteunt primaire en secundaire indexen, maar alleen de primaire indexen worden gebruikt om uniciteit af te dwingen. Bovendien biedt het geen ondersteuning voor beperkingen van externe sleutels.

Ignite ondersteunt ook beveiliging doordat u authenticatie op de server kunt inschakelen en gebruikersreferenties aan clients kunt verstrekken. Er is ook ondersteuning voor SSL-socketcommunicatie om een veilige verbinding tussen alle Ignite-nodes te bieden.

Ignite heeft veel gebruiksscenario's, waaronder cachingsystemen, versnelling van de systeemwerklast, realtime gegevensverwerking en analyses. Het kan ook worden gebruikt als een grafiekgericht platform.

4. Couchbase-server

Couchbase Server is ook een open-source, gedistribueerde, NoSQL-documentgeoriënteerde betrokkenheidsdatabase die gegevens opslaat als items in een sleutelwaarde-indeling. Het werkt op Linux en andere besturingssystemen zoals Windows en Mac OS X. Het maakt gebruik van een functierijke, documentgeoriënteerde querytaal genaamd N1QL, die krachtige query- en indexeringsservices biedt ter ondersteuning van bewerkingen op gegevens in minder dan een milliseconde.

De opvallende kenmerken zijn een snelle sleutel-waarde-opslag met beheerde cache, speciaal gebouwde indexers, een krachtige query-engine, scale-out architectuur (multidimensionaal schalen), big data- en SQL-integratie, full-stack beveiliging en hoge beschikbaarheid.

Couchbase Server wordt geleverd met native clusterondersteuning voor meerdere instanties, waarbij een clustermanagertool alle knooppuntactiviteiten coördineert en eenvoudigweg een clusterbrede interface voor clients biedt. Belangrijk is dat u naar wens knooppunten kunt toevoegen, verwijderen of vervangen, zonder downtime. Het ondersteunt ook gegevensreplicatie tussen knooppunten van een cluster, en selectieve gegevensreplicatie tussen datacenters.

Het implementeert beveiliging via TLS met behulp van speciale Couchbase Server-poorten, verschillende authenticatiemechanismen (met behulp van inloggegevens of certificaten), op rollen gebaseerde toegangscontrole (om elke geauthenticeerde gebruiker te controleren op door het systeem gedefinieerde rollen die aan hem zijn toegewezen), auditing, logs en sessies .

De gebruiksscenario's omvatten een uniforme programmeerinterface, zoeken in volledige tekst, parallelle queryverwerking, documentbeheer, indexering en nog veel meer. Het is specifiek ontworpen om gegevensbeheer met lage latentie te bieden voor grootschalige interactieve web-, mobiele en IoT-toepassingen.

5. Hazelcast IMDG

Hazelcast IMDG (In-Memory Data Grid) is een open-source, lichtgewicht, snelle en uitbreidbare in-memory data grid middleware, die elastisch schaalbare gedistribueerde In-Memory computing biedt. Hazelcast IMDG draait ook op Linux, Windows, Mac OS X en elk ander platform waarop Java is geïnstalleerd. Het ondersteunt een breed scala aan flexibele en taaleigen datastructuren zoals Map, Set, List, MultiMap, RingBuffer en HyperLogLog.

Hazelcast is peer-to-peer en ondersteunt eenvoudige schaalbaarheid, clusterconfiguratie (met opties om statistieken te verzamelen, te monitoren via het JMX-protocol en het cluster te beheren met handige hulpprogramma's), gedistribueerde datastructuren en gebeurtenissen, dataportionering en transacties. Het is ook overbodig omdat het de back-up van elke gegevensinvoer op meerdere leden bewaart. Om uw cluster te schalen, start u eenvoudigweg een ander exemplaar. Gegevens en back-ups worden automatisch en gelijkmatig uitgebalanceerd.

Het biedt een verzameling nuttige API's om toegang te krijgen tot de CPU's in uw cluster voor maximale verwerkingssnelheid. Het biedt ook gedistribueerde implementaties van een groot aantal ontwikkelaarsvriendelijke interfaces van Java, zoals Map, Queue, ExecutorService, Lock en JCache.

De beveiligingsfuncties omvatten clusterleden en clientauthenticatie en toegangscontrolecontroles op clientbewerkingen via de op JAAS gebaseerde beveiligingsfuncties. Het maakt ook het onderscheppen van socketverbindingen en externe bewerkingen uitgevoerd door de clients mogelijk, communicatie-encryptie op socketniveau tussen de clusterleden en het mogelijk maken van SSL/TLS-socketcommunicatie. Maar volgens de officiële documentatie worden de meeste van deze beveiligingsfuncties aangeboden in de Enterprise-versie.

Het meest populaire gebruiksscenario is gedistribueerde caching en gegevensopslag in het geheugen. Maar het kan ook worden ingezet voor websessieclustering, NoSQL-vervanging, parallelle verwerking, eenvoudige berichtenuitwisseling en nog veel meer.

6. Mcrouter

Mcrouter is een gratis en open-source Memcached-protocolrouter voor het schalen van Memcached-implementaties, ontwikkeld en onderhouden door Facebook. Het beschikt over het Memcached ASCII-protocol, flexibele routing, ondersteuning voor meerdere clusters, caches op meerdere niveaus, pooling van verbindingen, meerdere hashing-schema's, prefix-routering, gerepliceerde pools, schaduwen van productieverkeer, online herconfiguratie en monitoring van de bestemmingsstatus/automatische failover.

Bovendien ondersteunt het koude cache-opwarming, uitgebreide statistieken en debug-opdrachten, betrouwbare servicekwaliteit voor het verwijderen van streams, grote waarden en uitzendingsbewerkingen, en wordt het geleverd met IPv6- en SSL-ondersteuning.

Het wordt op Facebook en Instagram gebruikt als kerncomponent van de cache-infrastructuur, om op piekmomenten bijna 5 miljard verzoeken per seconde te verwerken.

7. Verniscache

Varnish Cache is een open-source flexibele, moderne en multifunctionele webapplicatieversneller die zich tussen webclients en een origin-server bevindt. Het draait op alle moderne Linux-, FreeBSD- en Solaris-platforms (alleen x86). Het is een uitstekende caching-engine en inhoudversneller die u kunt inzetten voor een webserver zoals NGINX, Apache en vele anderen, om te luisteren op de standaard HTTP-poort om clientverzoeken te ontvangen en door te sturen naar de webserver en het web te leveren serverreactie op de client.

Varnish Cache fungeert als tussenpersoon tussen clients en de oorspronkelijke servers en biedt verschillende voordelen. Het element is het cachen van webinhoud in het geheugen om de belasting van uw webserver te verlichten en de leveringssnelheden aan clients te verbeteren.

Nadat een HTTP-verzoek van een client is ontvangen, wordt dit doorgestuurd naar de backend-webserver. Zodra de webserver reageert, slaat Varnish de inhoud op in het geheugen en levert het antwoord aan de client. Wanneer de klant om dezelfde inhoud vraagt, zal Varnish deze aanbieden vanuit het cache-boostende applicatieantwoord. Als er geen inhoud uit de cache kan worden aangeboden, wordt het verzoek doorgestuurd naar de backend en wordt het antwoord in de cache opgeslagen en afgeleverd bij de client.

Varnish beschikt over VCL (Varnish Configuration Language – een flexibele domeinspecifieke taal) die wordt gebruikt om te configureren hoe verzoeken worden afgehandeld en meer, Varnish Modules (VMODS) die extensies zijn voor Varnish Cache.

Op veiligheidsvlak ondersteunt Varnish Cache loggen, inspectieverzoeken, beperking, authenticatie en autorisatie via VMODS, maar het mist native ondersteuning voor SSL/TLS. U kunt HTTPS voor Varnish Cache inschakelen met behulp van een SSL/TLS-proxy zoals Hitch of NGINX.

U kunt Varnish Cache ook gebruiken als firewall voor webapplicaties, DDoS-aanvalsverdediger, hotlinking-beschermer, load balancer, integratiepunt, single sign-on gateway, authenticatie- en autorisatiebeleidsmechanisme, snelle oplossing voor onstabiele backends en HTTP-verzoekrouter.

8. Proxy voor inktviscaching

Een andere gratis en open-source, uitstekende en veelgebruikte proxy- en caching-oplossing voor Linux is Squid. Het is een veelzijdige webproxy-cacheserversoftware die proxy- en cacheservices biedt voor populaire netwerkprotocollen, waaronder HTTP, HTTPS en FTP. Het draait ook op andere UNIX-platforms en Windows.

Net als Varnish Cache ontvangt het verzoeken van clients en geeft deze door aan gespecificeerde backend-servers. Wanneer de backend-server reageert, slaat deze een kopie van de inhoud op in een cache en geeft deze door aan de client. Toekomstige verzoeken voor dezelfde inhoud worden vanuit de cache afgehandeld, wat resulteert in een snellere levering van inhoud aan de klant. Het optimaliseert dus de gegevensstroom tussen client en server om de prestaties te verbeteren en slaat veelgebruikte inhoud op in de cache om het netwerkverkeer te verminderen en bandbreedte te besparen.

Squid wordt geleverd met functies zoals het verdelen van de belasting over onderling communicerende hiërarchieën van proxyservers, het produceren van gegevens over webgebruikspatronen (bijvoorbeeld statistieken over de meest bezochte sites), waardoor u de berichten die worden geproxyd, kunt analyseren, vastleggen, blokkeren, vervangen of wijzigen.

Het ondersteunt ook beveiligingsfuncties zoals uitgebreide toegangscontrole, autorisatie en authenticatie, SSL/TLS-ondersteuning en activiteitenregistratie.

9. NGINX

NGINX (uitgesproken als Engine-X) is een open-source, krachtige, complete en zeer populaire geconsolideerde oplossing voor het opzetten van een webinfrastructuur. Het is een HTTP-server, een reverse proxy-server, een mail-proxyserver en een generieke TCP/UDP-proxyserver.

NGINX biedt basiscachingmogelijkheden waarbij inhoud in de cache wordt opgeslagen in een permanente cache op schijf. Het fascinerende aan inhoudcaching in NGINX is dat het kan worden geconfigureerd om verouderde inhoud uit de cache te halen wanneer het geen nieuwe inhoud van de oorspronkelijke servers kan ophalen.

NGINX biedt een groot aantal beveiligingsfuncties om uw websystemen te beveiligen, waaronder SSL-beëindiging, beperking van de toegang met HTTP-basisauthenticatie, authenticatie op basis van het subverzoekresultaat, JWT-authenticatie, beperking van de toegang tot proxyed HTTP-bronnen, beperking van de toegang op geografische locatie, en nog veel meer.

Het wordt doorgaans ingezet als een reverse proxy, load balancer, SSL-terminator/beveiligingsgateway, applicatieversneller/content cache en API-gateway in een applicatiestack. Het wordt ook gebruikt voor het streamen van media.

10. Apache-verkeersserver

Last but not least hebben we Apache Traffic Server, een open-source, snelle, schaalbare en uitbreidbare caching-proxyserver met ondersteuning voor HTTP/1.1 en HTTP/2.0. Het is ontworpen om de netwerkefficiëntie en -prestaties te verbeteren door veelgebruikte inhoud in de cache op te slaan aan de rand van een netwerk, voor bedrijven, ISP's (Internet Server Providers), backbone-providers en meer.

Het ondersteunt zowel forward als reverse proxying van HTTP/HTTPS-verkeer. Het kan ook worden geconfigureerd om tegelijkertijd in een of beide modi te werken. Het beschikt over permanente caching en plug-in-API's; ondersteuning voor ICP (Internet Cache Protocol), ESI (Edge Side Inclusief); Blijf ALive, en meer.

Op het gebied van beveiliging ondersteunt Traffic Server het controleren van clienttoegang door u in staat te stellen clients te configureren die de proxycache mogen gebruiken, SSL-beëindiging voor zowel verbindingen tussen clients en zichzelf, als tussen zichzelf en de oorspronkelijke server. Het ondersteunt ook authenticatie en basisautorisatie via een plug-in, logboekregistratie (van elk verzoek dat het ontvangt en elke fout die het detecteert) en monitoring.

Traffic Server kan worden gebruikt als webproxycache, forward proxy, reverse proxy, transparante proxy, load balancer of in een cachehiërarchie.

Slotopmerkingen

Caching is een van de meest nuttige en al lang bestaande technologieën voor het leveren van webinhoud, die voornamelijk is ontworpen om de snelheid van websites of applicaties te verhogen. Het helpt de serverbelasting, latentie en netwerkbandbreedte te verminderen, omdat gegevens in de cache aan clients worden aangeboden, waardoor de responstijd van applicaties en de leveringssnelheid aan clients worden verbeterd.

In dit artikel hebben we de beste open-source cachingtools besproken die op Linux-systemen kunnen worden gebruikt. Als u andere open-source cachingtools kent die hier niet worden vermeld, kunt u deze met ons delen via het onderstaande feedbackformulier. U kunt ook uw mening over dit artikel met ons delen.