10 parimat Linuxi avatud lähtekoodiga vahemälu tööriista 2020. aastal


Usaldusväärsed hajutatud arvutisüsteemid ja rakendused on muutunud silmapaistvate ettevõtete nurgakiviks, eriti missioonikriitiliste äriprotsesside automatiseerimisel ja haldamisel ning klientidele teenuste osutamisel. Nende süsteemide ja rakenduste arendajate ja süsteemiadministraatoritena peaksite pakkuma kõikvõimalikke infotehnoloogilisi (IT) lahendusi, mis tagavad teie käsutuses olevate kõige tõhusamate süsteemide olemasolu.

See hõlmab selliseid ülesandeid nagu süsteemide/rakenduste jõudluse, töökindluse, kättesaadavuse ja mastaapsuse strateegiate väljatöötamine, testimine ja rakendamine, et pakkuda lõppkasutajatele rahuldavat teenustaset. Vahemälu salvestamine on üks paljudest väga elementaarsetest, kuid tõhusatest rakenduste edastamise tehnikatest, millele saate tugineda. Enne kui läheme kaugemale, vaatame lühidalt, mis on vahemällu salvestamine, kus ja/või kuidas seda saab rakendada ning millised on selle eelised?

Vahemällu salvestamine (või sisu vahemällu salvestamine) on laialt levinud tehnika andmete koopiate säilitamiseks ajutises salvestuskohas (tuntud ka kui vahemälu), et andmetele oleks hõlpsasti ja kiiremini juurde pääseda, kui siis, kui need algsest mälumahust kätte saadakse. Vahemällu salvestatud andmed võivad sisaldada faile või failifragmente (nagu HTML-failid, skriptid, pildid, dokumendid jne), andmebaasi toiminguid või kirjeid, API-kõnesid, DNS-kirjeid jne, olenevalt vahemälu tüübist ja eesmärgist.

Vahemälu võib olla riistvara või tarkvara. Tarkvarapõhist vahemälu (millele see artikkel keskendub) võib rakendada rakenduse virna erinevates kihtides.

Vahemällu salvestamist saab rakendada kliendipoolel (või rakenduse esitluskihil), näiteks brauseri vahemällu või rakenduse vahemällu (või võrguühenduseta režiimi). Enamik, kui mitte kõiki tänapäevaseid brausereid, tarnitakse HTTP-vahemäluga. Võimalik, et olete veebirakenduse avamisel kuulnud populaarsest fraasist „vahemälu tühjendamine”, et saaksite brauseri asemel vaadata kohalikult salvestatud sisu vana koopiat, et vaadata veebisaidil või rakenduses uusimaid andmeid või sisu.

Teine näide kliendipoolsest vahemälust on DNS-i vahemälu, mis toimub operatsioonisüsteemi (OS) tasandil. See on OS-i või veebibrauseri varasemate DNS-otsingute kohta teabe ajutine salvestamine.

Vahemällu salvestamist saab rakendada ka võrgu tasandil, kas LAN-is või WAN-is volikirja kaudu. Seda tüüpi vahemällu salvestamise levinud näide on CDN-id (Content Delivery Networks), mis on veebipuhverserverite globaalselt hajutatud võrk.

Kolmandaks võite vahemällu juurutada ka alg- või taustserveris (-serverites). Serveritasemel vahemällu on erinevaid vorme. Need sisaldavad järgmist:

  • veebiserveri vahemällu salvestamine (piltide, dokumentide, skriptide ja nii edasi vahemällu salvestamiseks).
  • rakenduste vahemällu salvestamine või salvestamine (kasutatakse kettalt failide, muude teenuste või protsesside andmete lugemiseks või API-lt andmete taotlemiseks jne).
  • andmebaasi vahemälu (mälusisene juurdepääsu võimaldamine sageli kasutatavatele andmetele, nagu taotletud andmebaasiread, päringutulemused ja muud toimingud).

Pange tähele, et vahemälu andmeid saab salvestada mis tahes salvestussüsteemi, sealhulgas andmebaasi, faili, süsteemimällu ja nii edasi, kuid need peaksid olema kiiremad kui esmane allikas. Sellega seoses on vahemälu salvestamine kõige tõhusam ja sagedamini kasutatav vahemälu.

Vahemällu salvestamine pakub mitmeid eeliseid, sealhulgas järgmist:

  • Andmebaasi tasandil parandab see vahemällu salvestatud andmete mikrosekundite jõudlust. Kirjutamise jõudluse parandamiseks võite kasutada ka tagasikirjumise vahemälu, kus andmed kirjutatakse mällu ja hiljem kettale või põhimällu määratud intervallidega. Kuid selle andmete terviklikkuse aspektil võib olla potentsiaalselt katastroofilisi tagajärgi. Näiteks kui süsteem jookseb kokku enne, kui andmed on pühendatud põhimällu.
  • Rakenduse tasemel saab vahemälu salvestada rakenduse protsessis sageli loetud andmeid, vähendades seeläbi andmete otsimisaega sekunditest kuni mikrosekunditeni, eriti võrgu kaudu.
  • Arvestades rakenduse ja serveri üldist jõudlust, aitab vahemällu salvestamine vähendada teie serveri koormust, latentsust ja võrgu ribalaiust, kuna vahemällu salvestatud andmeid serveeritakse klientidele, parandades seeläbi klientidele reageerimise aega ja edastamise kiirust.
  • Vahemällu salvestamine võimaldab ka sisu kättesaadavust, eriti CDN-ide kaudu, ja paljusid muid eeliseid.

Selles artiklis vaatame üle mõned avatud lähtekoodiga (rakenduse/andmebaasi vahemällu salvestamise ja puhverserverite vahemällu salvestamise) tööriistad serveripoolse vahemälu juurutamiseks Linuxis.

1. Redis

Redis (REmote DIctionary Server in full) on tasuta ja avatud lähtekoodiga, kiire, suure jõudlusega ja paindlik mälusisene arvutisüsteem, mida saab kasutada enamikust, kui mitte kõigist programmeerimiskeeltest.

See on mälusisene andmestruktuuride pood, mis töötab vahemälumootori, mälus püsiva kettal oleva andmebaasi ja sõnumivahendajana. Ehkki see on välja töötatud ja testitud Linuxis (juurutamiseks soovitatav platvorm) ja OS X-is, töötab Redis ka välistes sõltuvustes ka teistes POSIX-süsteemides, näiteks * BSD.

Redis toetab arvukaid andmestruktuure, nagu stringid, räsid, loendid, komplektid, sorteeritud komplektid, bitikaardid, voogud ja palju muud. See võimaldab programmeerijatel konkreetse probleemi lahendamiseks kasutada konkreetset andmestruktuuri. See toetab oma andmestruktuuri automaatseid toiminguid, näiteks stringi lisamine, elementide loendisse viimine, räsi väärtuse suurendamine, komplekti ristmiku arvutamine ja palju muud.

Selle põhiomaduste hulka kuuluvad Lua skriptimine, mitmesugused püsivusvõimalused ja kliendi-serveri suhtluse krüptimine.

Redis on mälusisene, kuid püsiv kettal olev andmebaas, pakkudes parimat jõudlust siis, kui see töötab kõige paremini mälus oleva andmekogumiga. Siiski saate seda kasutada kettal asuva andmebaasiga nagu MySQL, PostgreSQL ja palju muud. Näiteks võite Redisesse võtta väga kirjutamismahukaid väikeseid andmeid ja jätta muud andmepalad kettale andmebaasi.

Redis toetab turvalisust mitmel viisil: ühe abil kaitstud režiimi funktsiooni, et kaitsta Redise eksemplare välistest võrkudest juurde pääsemisel. Samuti toetab see kliendi-serveri autentimist (kus parool on konfigureeritud serveris ja antud kliendis) ja TLS-i kõigil sidekanalitel, näiteks kliendiühendustel, replikatsioonilinkidel ja Redise klastri siini protokollil ja muul viisil.

Redisel on väga palju kasutusjuhtumeid, mis hõlmavad andmebaasi vahemällu salvestamist, kogu lehe vahemällu salvestamist, kasutaja seansi andmete haldamist, API vastuste salvestamist, kirjastamise/avaldamise sõnumsüsteemi, sõnumijärjekorda ja palju muud. Neid saab rakendada mängudes, suhtlusvõrgustike rakendustes, RSS-voogudes, reaalajas andmete analüüsis, kasutajate soovitustes ja nii edasi.

2. Memcached

Memcached on tasuta ja avatud lähtekoodiga, lihtne, kuid võimas hajutatud mäluobjektide vahemälusüsteem. See on mälusisene võtmeväärtuste salvestus väikestele andmetükkidele, näiteks andmebaasikõnede, API-kõnede või lehtede renderdamise tulemustele. See töötab Unixi-laadsetes operatsioonisüsteemides, sealhulgas Linux ja OS X, ning ka Microsoft Windowsis.

Arendaja tööriistana on see mõeldud kasutamiseks dünaamiliste veebirakenduste kiiruse suurendamiseks sisu vahemällu salvestamisega (vaikimisi kõige vähem kasutatud (LRU) vahemälu), vähendades seeläbi kettal asuva andmebaasi koormust - see toimib lühiajalise mäluna rakendused. See pakub API kõige populaarsematele programmeerimiskeeltele.

Memcached toetab ainsat tüüpi andmetena stringe. Sellel on kliendi-serveri arhitektuur, kus pool loogikast toimub kliendipoolel ja teine pool serveripoolel. Oluline on see, et kliendid mõistavad, kuidas valida, millisesse serverisse üksuse jaoks kirjutada või millest lugeda. Samuti teab klient väga hästi, mida teha, kui ta ei saa serveriga ühendust luua.

Ehkki see on hajutatud vahemälusüsteem, toetab seega klastreid, on Memcachedi serverid teineteisest lahti ühendatud (st nad pole üksteisest teadlikud). See tähendab, et replikatsioonitoetust nagu Redises pole. Samuti saavad nad aru, kuidas esemeid säilitada ja tuua, hallata väljatõstmise aega või mälu taaskasutada. Saate saadaolevat mälu suurendada, lisades rohkem servereid.

See toetab autentimist ja krüpteerimist TLS-i kaudu alates Memcached 1.5.13-st, kuid see funktsioon on endiselt katsefaasis.

3. Apache Ignite

Apache Ignite on ka tasuta ja avatud lähtekoodiga horisontaalselt skaleeritav hajutatud mälus olevate võtmete väärtuste salvestus, vahemälu ja mitmemudeliline andmebaasisüsteem, mis pakub võimsaid töötlus-API-sid hajutatud andmete arvutamiseks. See on ka mälusisene andmevõrk, mida saab kasutada kas mälus või koos Ignite'i loodusliku püsivusega. See töötab UNIX-tüüpi süsteemides nagu Linux ja ka Windows.

Sellel on mitmetasandiline salvestusruum, täielik SQL-i tugi ja ACID (atomaatsus, järjepidevus, eraldamine, vastupidavus) tehingud (toetatud ainult võtmeväärtusega API tasemel) mitme klastri sõlme vahel, samaaegne töötlemine ja masinõpe. See toetab automaatset integreerimist mis tahes kolmandate osapoolte andmebaasidega, sealhulgas mis tahes RDBMS-iga (näiteks MySQL, PostgreSQL, Oracle Database ja nii edasi) või NoSQL-i poodidega.

Oluline on märkida, et kuigi Ignite töötab SQL-i andmepoena, ei ole see siiski täielikult SQL-i andmebaas. See tegeleb selgelt piirangute ja indeksitega võrreldes traditsiooniliste andmebaasidega; see toetab esmaseid ja teiseseid indekseid, kuid ainulaadsuse tagamiseks kasutatakse ainult esmaseid indekseid. Pealegi ei toeta see välismaiseid võtmepiiranguid.

Ignite toetab ka turvalisust, lubades teil lubada serveris autentimise ja pakkuda klientidele mandaate. Kõigi Ignite'i sõlmede vahel turvalise ühenduse tagamiseks on olemas ka SSL-pistikupesa side tugi.

Ignite'il on palju kasutusjuhtumeid, mis hõlmavad vahemällu salvestamise süsteemi, süsteemi töökoormuse kiirendamist, reaalajas andmete töötlemist ja analüüsi. Seda saab kasutada ka graafikukeskse platvormina.

4. Couchbase'i server

Couchbase Server on ka avatud lähtekoodiga hajutatud NoSQL-i dokumendile orienteeritud seotuse andmebaas, mis salvestab andmeid üksustena võtmeväärtuse vormingus. See töötab Linuxis ja muudes operatsioonisüsteemides, nagu Windows ja Mac OS X. See kasutab funktsiooniderikast dokumendipõhist päringukeelt N1QL, mis pakub võimsaid päringu- ja indekseerimisteenuseid, et toetada andmete millisekundilisi operatsioone.

Selle tähelepanuväärsed funktsioonid on kiire võtmeväärtuste pood koos hallatud vahemäluga, spetsiaalselt selleks loodud indekseerijad, võimas päringumootor, laiendatav arhitektuur (mitmemõõtmeline skaleerimine), suurandmete ja SQL-i integreerimine, täispinu turvalisus ja kõrge kättesaadavus .

Couchbase Server on varustatud natiivse mitme eksemplari klastritoega, kus klastrihalduri tööriist koordineerib kõiki sõlmede tegevusi ja pakub klientidele lihtsalt kogu klastrit hõlmavat liidest. Oluline on see, et saate sõlme lisada, eemaldada või asendada vastavalt vajadusele ilma seiskamisajata. Samuti toetab see andmete replikatsiooni klastri sõlmedes, valikulist andmete replikatsiooni andmekeskustes.

See rakendab turvalisust TLS-i kaudu, kasutades selleks spetsiaalseid Couchbase Serveri porte, erinevaid autentimismehhanisme (kasutades kas mandaate või sertifikaate), rollipõhist juurdepääsu juhtimist (iga autentitud kasutaja kontrollimiseks neile määratud süsteemirollide jaoks), auditeerimist, logisid ja seansse .

Selle kasutusjuhtumid hõlmavad ühtset programmeerimisliidest, täistekstiotsingut, paralleelset päringute töötlemist, dokumendihaldust ja indekseerimist ning palju muud. See on spetsiaalselt loodud pakkuma madala latentsusega andmehaldust suuremahuliste interaktiivsete veebi-, mobiil- ja IoT-rakenduste jaoks.

5. Hazelcast IMDG

Hazelcast IMDG (mälusisene andmevõrk) on avatud lähtekoodiga, kerge, kiire ja laiendatav mälusisene andmevõrgu vahevara, mis pakub elastselt skaleeritavat hajutatud mälusisest arvutit. Hazelcast IMDG töötab ka Linuxil, Windowsil ja Mac OS X-il ning mis tahes muul platvormil, kuhu on installitud Java. See toetab paljusid paindlikke ja keeltes kasutatavaid andmestruktuure nagu Map, Set, List, MultiMap, RingBuffer ja HyperLogLog.

Hazelcast on peer-to-peer ja toetab lihtsat mastaapsust, klastri seadistamist (võimalustega statistikat koguda, JMX-protokolli kaudu jälgida ja klastrit kasulike utiliitidega hallata), hajutatud andmestruktuure ja sündmusi, andmete jaotamist ja tehinguid. Samuti on see üleliigne, kuna see hoiab iga andmekirje varukoopia mitme liikme peal. Klastri laiendamiseks käivitage lihtsalt teine eksemplar, andmed ja varukoopiad on automaatselt ja ühtlaselt tasakaalus.

See pakub kogumi kasulikke API-sid, et pääseda klastri protsessoritele maksimaalse töötlemiskiiruse saavutamiseks. Samuti pakub see Java-st paljude arendajale sobivate liideste hajutatud rakendusi nagu Map, Queue, ExecutorService, Lock ja JCache.

Selle turvafunktsioonid hõlmavad klastri liikmeid ning kliendi autentimist ja klienditoimingute juurdepääsu kontrollimist JAAS-põhiste turvaelementide kaudu. See võimaldab ka pealtkuulata pistikupesa ühendusi ja klientide teostatavaid kaugoperatsioone, klastriliikmete vahelist pistikupesataseme kommunikatsiooni krüptimist ja lubada SSL/TLS-sokliga suhtlust. Kuid ametliku dokumentatsiooni kohaselt pakutakse enamikku neist turvaelementidest ettevõtte versioonis.

Kõige populaarsem kasutusjuht on jaotatud mälus vahemällu ja andmesalvestus. Kuid seda saab kasutada ka veebiseansside klastrite jaoks, NoSQL-i asendamiseks, paralleelseks töötlemiseks, hõlpsaks sõnumsideks ja paljuks muuks.

6. Mcrouter

Mcrouter on tasuta ja avatud lähtekoodiga Memcached-protokolli ruuter Memcached-juurutuste skaleerimiseks, mille on välja töötanud ja hooldanud Facebook. Sellel on Memcached ASCII protokoll, paindlik marsruutimine, mitme klastri tugi, mitmetasandilised vahemälud, ühenduse koondamine, mitu räsimisskeemi, eesliite marsruutimine, paljundatud basseinid, tootmisliikluse varjutamine, veebi ümberseadistamine ja sihtkoha tervise jälgimine/automaatne tõrkeotsing.

Lisaks toetab see külma vahemälu soojendamist, rikkalikku statistikat ja silumiskäske, usaldusväärset teenuse kvaliteedi kustutamist, suuri väärtusi, levitoiminguid ning IPv6 ja SSL tuge.

Seda kasutatakse Facebookis ja Instagramis vahemälu infrastruktuuri põhikomponendina, et tipphetkel käsitleda peaaegu 5 miljardit taotlust sekundis.

7. Lakkide vahemälu

Apache ja paljud teised, et kuulata HTTP vaikepordis veebiserverisse klientide päringute vastuvõtmiseks ja edastamiseks ning veebiserveri vastuse edastamiseks kliendile.

Käitudes keskmehena klientide ja päritoluserverite vahel, pakub Varnish Cache mitmeid eeliseid: element on veebimälu vahemällu salvestamine mälus, et leevendada teie veebiserveri koormust ja parandada klientidele edastamise kiirust.

Pärast kliendilt HTTP-päringu saamist edastab ta selle taustaprogrammi veebiserverile. Kui veebiserver vastab, salvestab Varnish mälus oleva sisu vahemällu ja edastab vastuse kliendile. Kui klient taotleb sama sisu, teenib lakk seda vahemälu suurendava rakenduse vastusest. Kui see ei suuda vahemälust sisu esitada, edastatakse taotlus taustaprogrammile ning vastus salvestatakse vahemällu ja edastatakse kliendile.

Lakkimisfunktsioonid VCL (laki konfiguratsioonikeel - paindlik domeenispetsiifiline keel), mida kasutatakse taotluste ja muu käitlemise seadistamiseks, lakimoodulid (VMODS), mis on lakivahemälu laiendused.

Turvalisuse mõttes toetab lakkide vahemälu logimist, taotluste ülevaatamist ja piiramist, autentimist ja autoriseerimist VMODS-i kaudu, kuid sellel puudub SSL/TLS-i loomulik tugi. HTTPS-i saate lubada lakivahemiku jaoks SSL/TLS-puhverserveri abil, näiteks Hitch või NGINX.

Laki vahemälu saate kasutada ka veebirakenduse tulemüürina, DDoS-i rünnaku kaitsjana, kiirlingi kaitsja, koormuse tasakaalustaja, integratsioonipunkti, ühekordse sisselogimise lüüsi, autentimis- ja autoriseerimispõhimõtete mehhanismi, ebastabiilsete taustaprogrammide kiirparanduse ja HTTP-päringu marsruuterina.

8. Kalmaari vahemälu puhverserver

Teine tasuta ja avatud lähtekoodiga, silmapaistev ja laialt kasutatav puhverserveri ja vahemällu salvestatud lahendus Linuxile on Squid. See on funktsiooniderikas veebipuhverserveri vahemäluserveri tarkvara, mis pakub puhverserveri- ja vahemäluteenuseid populaarsetele võrguprotokollidele, sealhulgas HTTP, HTTPS ja FTP. See töötab ka teistel UNIX-i platvormidel ja Windowsis.

Nii nagu Varnish Cache, võtab see klientidelt päringuid ja edastab need määratud taustserveritele. Kui taustserver vastab, salvestab ta sisu koopia vahemällu ja edastab selle kliendile. Tulevased sama sisu taotlused esitatakse vahemälust, mille tulemuseks on sisu kiirem edastamine kliendile. Seega optimeerib see kliendi ja serveri vahelist andmevoogu, et parandada jõudlust, ja salvestab vahemällu sageli kasutatava sisu, et vähendada võrguliiklust ja säästa ribalaiust.

Squidil on sellised funktsioonid nagu koormuse jaotamine puhverserverite omavahelise suhtlemise hierarhiate vahel, veebikasutusmustreid käsitlevate andmete loomine (nt statistika kõige külastatavamate saitide kohta), mis võimaldab teil analüüsida, hõivata, blokeerida, asendada või muuta lähedalasuvaid sõnumeid.

Samuti toetab see turvaelemente, nagu rikkalik juurdepääsu kontroll, autoriseerimine ja autentimine, SSL/TLS tugi ja tegevuste logimine.

9. NGINX

veebi infrastruktuuri seadistamine. See on HTTP-server, vastupidine puhverserver, posti puhverserver ja üldine TCP/UDP-puhverserver.

NGINX pakub põhilisi vahemällu salvestamise võimalusi, kus vahemällu salvestatud sisu salvestatakse kettale püsivasse vahemällu. NGINXi sisuvahemälu põnev osa on see, et seda saab konfigureerida edastama aegunud sisu vahemälust, kui see ei saa algserveritest värsket sisu tuua.

NGINX pakub paljusid turvaelemente HTTP-põhilisele autentimisele, alampäringu tulemusel põhinevale autentimisele, JWT-autentimisele, juurdepääsupiirangutele proksitud HTTP-ressurssidele, juurdepääsu piiramisele geograafilise asukoha järgi ja palju muud.

See on tavaliselt juurutatud vastupidise puhverserverina, koormuse tasakaalustajana, SSL-i terminaatori/turvaväravana, rakenduste kiirendi/sisuvahemäluna ja API-lüüsina rakenduste virnas. Seda kasutatakse ka meediumide voogesituseks.

10. Apache liiklusserver

Viimaseks, kuid mitte vähem tähtsaks, meil on Apache Traffic Server, avatud lähtekoodiga, kiire, skaleeritav ja laiendatav vahemälu puhverserver, mis toetab HTTP/1.1 ja HTTP/2.0. See on mõeldud võrgu tõhususe ja jõudluse parandamiseks, kasutades sageli juurdepääsetavat sisu võrgu servas vahemällu, ettevõtetele, Interneti-teenuse pakkujatele (Interneti-serverite pakkujad), selgroogide pakkujatele ja muule.

See toetab nii HTTP/HTTPS-liikluse edasisuunamist kui ka ümberpööramist. Samuti võib see olla konfigureeritud töötama mõlemas või mõlemas režiimis üheaegselt. See sisaldab püsivat vahemälu, pistikprogrammi API-sid; tugi ICP-le (Interneti vahemäluprotokoll), ESI-le (servapool sisaldab); Keep-ALive ja palju muud.

Turvalisuse mõttes toetab Traffic Server kliendi juurdepääsu kontrollimist, võimaldades teil konfigureerida kliente, kellel on lubatud kasutada puhverserveri vahemälu, SSL-i lõpetamist nii klientide enda kui ka enda ja päritoluserveri vaheliste ühenduste jaoks. Samuti toetab see autentimist ja põhilist autoriseerimist pistikprogrammi, logimise (iga vastuvõetud päringu ja iga tuvastatud vea) ning jälgimise kaudu.

Liiklusserverit saab kasutada veebipuhvri vahemäluna, edasisuunatava puhverserveri, vastupidise puhverserveri, läbipaistva puhverserveri, koormuse tasakaalustajana või vahemäluhierarhias.

Vahemälu salvestamine on üks kõige kasulikumaid ja pikaajalisemaid veebisisu edastamise tehnoloogiaid, mis on mõeldud peamiselt veebisaitide või rakenduste kiiruse suurendamiseks. See aitab vähendada teie serveri koormust, latentsust ja võrgu ribalaiust, kuna vahemällu salvestatud andmeid serveeritakse klientidele, parandades seeläbi rakenduse reageerimisaega ja klientidele edastamise kiirust.

Selles artiklis vaatasime üle Linuxi süsteemides kasutatavad peamised avatud lähtekoodiga vahemällu salvestamise tööriistad. Kui teate muid avatud lähtekoodiga vahemällu salvestamise tööriistu, mida siin pole loetletud, siis jagage meiega allpool oleva tagasisidevormi kaudu. Võite ka oma mõtteid selle artikli kohta meiega jagada.