10 najboljših odprtokodnih orodij za predpomnjenje za Linux v letu 2020


Zanesljivi porazdeljeni računalniški sistemi in aplikacije so postali temelj vidnih podjetij, zlasti pri avtomatizaciji in upravljanju kritičnih poslovnih procesov in zagotavljanju storitev strankam. Kot razvijalci in skrbniki sistema za te sisteme in aplikacije pričakujete, da boste ponujali vse vrste rešitev informacijske tehnologije (IT), ki bodo zagotovile, da imate na voljo najučinkovitejše sisteme.

Sem spadajo naloge, kot so načrtovanje, testiranje in izvajanje strategij za delovanje sistema/aplikacij, zanesljivost, razpoložljivost in razširljivost, da se končnim uporabnikom zagotovi zadovoljiva raven storitve. Predpomnjenje je ena izmed mnogih, zelo osnovnih, a učinkovitih tehnik dostave aplikacij, na katere se lahko zanesete. Preden nadaljujemo, na kratko poglejmo, kaj je predpomnjenje, kje in/ali kako ga je mogoče uporabiti ter njegove prednosti?

Predpomnjenje (ali vsebinsko predpomnjenje) je pogosto uporabljena tehnika shranjevanja kopij podatkov na začasnem mestu shranjevanja (znano tudi kot predpomnilnik), tako da je do njih mogoče enostavno in hitro dostopati, kot če jih dobimo iz prvotnega pomnilnika. Podatki, shranjeni v predpomnilniku, lahko vključujejo datoteke ali fragmente datotek (na primer datoteke HTML, skripte, slike, dokumenti itd.), Operacije ali zapisi v zbirki podatkov, klici API, zapisi DNS itd., Odvisno od vrste in namena predpomnjenja.

Predpomnilnik je lahko v obliki strojne ali programske opreme. Predpomnilnik, ki temelji na programski opremi (na kar se osredotoča ta članek), se lahko izvaja na različnih plasteh sklada aplikacij.

Predpomnjenje se lahko uporabi na strani odjemalca (ali na predstavitveni plasti aplikacije), na primer predpomnjenje brskalnika ali predpomnjenje aplikacij (ali način brez povezave). Večina, če ne vsi sodobni brskalniki, so opremljeni z implementacijo predpomnilnika HTTP. Morda ste že ob dostopu do spletne aplikacije slišali za priljubljeno besedno zvezo\"počisti predpomnilnik", ki vam omogoča, da si ogledate najnovejše podatke ali vsebino na spletnem mestu ali v aplikaciji, namesto da brskalnik uporablja staro kopijo lokalno shranjene vsebine.

Drug primer predpomnjenja na strani odjemalca je predpomnjenje DNS, ki se zgodi na ravni operacijskega sistema (OS). Gre za začasno hrambo informacij o prejšnjih iskanjih DNS s strani OS ali spletnega brskalnika.

Predpomnjenje se lahko izvede tudi na omrežni ravni, bodisi v LAN-u ali WAN-u prek strežnikov proxy. Pogost primer te vrste predpomnjenja je v CDN-jih (Content Delivery Networks), ki so globalno distribuirano omrežje spletnih strežnikov proxy.

Tretjič, predpomnjenje lahko izvedete tudi na izvornem ali zalednem strežniku (strežnikih). Obstajajo različne oblike predpomnjenja na ravni strežnika, ki vključujejo:

  • predpomnjenje spletnega strežnika (za predpomnjenje slik, dokumentov, skriptov itd.).
  • predpomnjenje ali pomnjenje aplikacij (uporablja se pri branju datotek z diska, podatkov iz drugih storitev ali procesov ali zahtevanju podatkov iz API-ja itd.).
  • predpomnjenje zbirke podatkov (za zagotovitev dostopa do pogosto uporabljenih podatkov v pomnilniku, kot so zahtevane vrstice baze podatkov, rezultati poizvedb in druge operacije).

Podatke v predpomnilniku lahko shranite v kateri koli sistem za shranjevanje, vključno z bazo podatkov, datoteko, sistemskim pomnilnikom itd., Vendar morajo biti hitrejši medij kot primarni vir. V zvezi s tem je predpomnjenje v pomnilniku najučinkovitejša in najpogosteje uporabljena oblika predpomnjenja.

Predpomnjenje ponuja številne prednosti, med drugim naslednje:

  • Na ravni baze podatkov izboljša predvajanje v mikrosekundah za predpomnjene podatke. Za izboljšanje zmogljivosti pisanja lahko uporabite tudi predpomnilnik za povratno kopiranje, kjer se podatki zapisujejo v pomnilnik in kasneje v določene intervale. Toda vidik celovitosti podatkov ima lahko potencialno katastrofalne posledice. Na primer, ko sistem zruši tik preden so podatki predani glavnemu pomnilniku.
  • Na ravni aplikacije lahko predpomnilnik shrani pogosto prebrane podatke v samem aplikacijskem procesu, s čimer se čas iskanja podatkov zmanjša s sekund na mikrosekunde, zlasti v omrežju.
  • Glede na splošno zmogljivost aplikacij in strežnikov predpomnjenje pomaga zmanjšati obremenitev strežnika, zakasnitev in pasovno širino omrežja, saj se predpomnjeni podatki strežejo strankam, s čimer se izboljša odzivni čas in hitrost dostave strankam.
  • Predpomnjenje omogoča tudi dostopnost vsebine, zlasti prek CDN-jev, in številne druge prednosti.

V tem članku bomo pregledali nekaj najboljših odprtokodnih orodij (predpomnjenje aplikacij/baz podatkov in predpomnjenje strežnikov proxy) za izvajanje predpomnjenja na strani strežnika v Linuxu.

1. Redis

Redis (REmote DIctionary Server v celoti) je brezplačen in odprtokoden, hiter, visoko zmogljiv in prilagodljiv porazdeljen računalniški sistem v pomnilniku, ki ga lahko uporabljate iz večine, če ne iz vseh programskih jezikov.

To je shramba podatkovne strukture v pomnilniku, ki deluje kot predpomnilnik, trajna baza podatkov na disku in posrednik sporočil. Čeprav je Redis razvit in preizkušen na Linuxu (priporočena platforma za uvajanje) in OS X, Redis deluje tudi v drugih sistemih POSIX, kot je * BSD, brez kakršnih koli zunanjih odvisnosti.

Redis podpira številne podatkovne strukture, kot so nizi, razpršilci, seznami, nizi, razvrščeni nizi, bitne slike, tokovi in drugo. To programerjem omogoča uporabo posebne podatkovne strukture za reševanje določenega problema. Podpira samodejne operacije v svoji podatkovni strukturi, kot je dodajanje niza, potiskanje elementov na seznam, povečevanje vrednosti zgoščene vrednosti, presečišče nabora računalnikov in še več.

Njegove ključne značilnosti vključujejo skript Lua, vrsto možnosti obstojnosti in šifriranje komunikacije odjemalec-strežnik.

Ker je Redis baza podatkov v pomnilniku, vendar obstojna na disku, ponuja najboljše rezultate, kadar najbolje deluje z naborom podatkov v pomnilniku. Lahko pa ga uporabite z zbirko podatkov na disku, kot so MySQL, PostgreSQL in še veliko več. Na primer, v Redis lahko vzamete zelo težke majhne podatke, druge dele podatkov pa pustite v zbirki podatkov na disku.

Redis podpira varnost na več načinov: enega s funkcijo\"zaščiteni način" za zaščito primerkov Redisa pred dostopom iz zunanjih omrežij. ) in TLS na vseh komunikacijskih kanalih, kot so odjemalske povezave, replikacijske povezave in protokol vodila Redis Cluster ter druge.

Redis ima zelo veliko primerov uporabe, ki vključujejo predpomnjenje baz podatkov, predpomnjenje celotne strani, upravljanje podatkov uporabniške seje, shranjevanje odzivov API, sistem za pošiljanje sporočil Publish/Subscribe, čakalna vrsta sporočil in še več. Te lahko uporabimo v igrah, aplikacijah za družabna omrežja, virih RSS, sprotni analizi podatkov, priporočilih uporabnikov itd.

2. Memcached

Memcached je brezplačen in odprtokoden, preprost, a zmogljiv sistem za predpomnjenje porazdeljenih pomnilniških predmetov. Je shramba ključ-vrednost v pomnilniku za majhne koščke podatkov, kot so rezultati klicev baze podatkov, klici API ali upodabljanje strani. Deluje v operacijskih sistemih, podobnih Unixu, vključno z Linuxom in OS X, pa tudi v sistemu Microsoft Windows.

Kot orodje za razvijalce je namenjeno za povečanje hitrosti dinamičnih spletnih aplikacij s predpomnjenjem vsebine (privzeto predpomnilnik najmanj nedavno uporabljene (LRU)), s čimer se zmanjša obremenitev baze podatkov na disku - deluje kot kratkoročni pomnilnik za aplikacij. Ponuja API za najbolj priljubljene programske jezike.

Memcached podpira nize kot edino vrsto podatkov. Ima arhitekturo odjemalec-strežnik, kjer se polovica logike zgodi na strani odjemalca, druga polovica pa na strani strežnika. Pomembno je, da stranke razumejo, kako izbrati, na kateri strežnik naj pišejo ali preberejo element. Prav tako stranka zelo dobro ve, kaj storiti, če se ne more povezati s strežnikom.

Čeprav gre za sistem porazdeljenega predpomnjenja, ki tako podpira združevanje v gruče, so strežniki Memcached ločeni med seboj (tj. Ne poznajo drug drugega). To pomeni, da ni podpore za podvajanje kot v Redisu. Razumejo tudi, kako shranjujejo in prinašajo predmete, upravljajo, kdaj izseliti ali ponovno uporabiti pomnilnik. Razpoložljivi pomnilnik lahko povečate z dodajanjem več strežnikov.

Podpira preverjanje pristnosti in šifriranje prek TLS od Memcached 1.5.13, vendar je ta funkcija še vedno v poskusni fazi.

3. Apache Ignite

Apache Ignite, tudi brezplačen in odprtokoden, vodoravno razširljiv sistem porazdeljene shrambe ključ-vrednost v predpomnilniku, predpomnilnik in večmodalni sistem zbirke podatkov, ki ponuja zmogljive API-je za obdelavo za računanje porazdeljenih podatkov. Prav tako gre za podatkovno mrežo v pomnilniku, ki jo lahko uporabljate v pomnilniku ali z izvorno obstojnostjo Ignite. Deluje v sistemih, podobnih Unixu, kot sta Linux in Windows.

Odlikuje ga večtirni pomnilnik, popolna podpora za SQL in transakcije ACID (atomskost, doslednost, izolacija, trajnost) (podprte samo na ravni API ključ-vrednost) v več vozliščih grozdov, obdelava na enem mestu in strojno učenje. Podpira samodejno integracijo s katero koli bazo podatkov tretjih oseb, vključno z RDBMS (kot so MySQL, PostgreSQL, Oracle Database itd.) Ali NoSQL.

Pomembno je omeniti, da čeprav Ignite deluje kot shramba podatkov SQL, vendar ni v celoti baza podatkov SQL. Jasno obravnava omejitve in indekse v primerjavi s tradicionalnimi bazami podatkov; podpira primarni in sekundarni indeks, vendar se za uveljavljanje edinstvenosti uporabljajo samo primarni indeksi. Poleg tega nima podpore omejitvam tujega ključa.

Ignite podpira tudi varnost, tako da omogočite preverjanje pristnosti v strežniku in uporabniške poverilnice za odjemalce. Na voljo je tudi podpora za vtičnico SSL, ki zagotavlja varno povezavo med vsemi vozlišči Ignite.

Ignite ima več primerov uporabe, ki vključujejo sistem predpomnjenja, pospeševanje delovne obremenitve sistema, obdelavo podatkov v realnem času in analitiko. Uporablja se lahko tudi kot grafično usmerjena platforma.

4. Couchbase strežnik

Couchbase Server je tudi odprtokodna, distribuirana zbirka podatkov, usmerjena v dokumente NoSQL, ki podatke shranjuje kot elemente v obliki ključ-vrednost. Deluje na Linuxu in drugih operacijskih sistemih, kot sta Windows in Mac OS X. Uporablja funkcijsko bogat, v dokumente usmerjen poizvedbeni jezik, imenovan N1QL, ki ponuja zmogljive storitve poizvedovanja in indeksiranja, ki podpirajo operacije v milisekundah podatkov.

Njegove pomembne značilnosti so hitra shramba ključ-vrednost z upravljanim predpomnilnikom, namensko izdelani indeksatorji, zmogljiv poizvedbeni mehanizem, razširjena arhitektura (večdimenzionalno skaliranje), integracija velikih podatkov in SQL, varnost celotnega sklada in visoka razpoložljivost .

Couchbase Server ima vgrajeno podporo za grozde z več primerki, kjer orodje upravitelja grozdov usklajuje vse dejavnosti vozlišč in odjemalcem omogoča preprosto vmesnik po celotni gruči. Pomembno je, da lahko vozlišča po potrebi dodajate, odstranjujete ali nadomeščate, brez izpada. Podpira tudi kopiranje podatkov v vozliščih grozda, selektivno kopiranje podatkov v podatkovnih centrih.

Izvaja varnost prek TLS z uporabo namenskih vrat Couchbase Server, različnih avtentikacijskih mehanizmov (z uporabo poverilnic ali potrdil), nadzora dostopa na podlagi vlog (za preverjanje vsakega overjenega uporabnika za sistemsko določene vloge, ki so mu dodeljene), revidiranje, dnevniki in seje .

Primeri uporabe vključujejo poenoten programski vmesnik, iskanje celotnega besedila, vzporedno obdelavo poizvedb, upravljanje dokumentov in indeksiranje in še veliko več. Zasnovan je posebej za zagotavljanje upravljanja podatkov z nizko zakasnitvijo za obsežne interaktivne spletne, mobilne in IoT aplikacije.

5. Hazelcast IMDG

Hazelcast IMDG (In-Memory Data Grid) je odprtokodna, lahka, hitra in razširljiva vmesniška programska oprema za podatkovno mrežo v pomnilniku, ki omogoča elastično razširljivo porazdeljeno računalništvo v pomnilniku. Hazelcast IMDG deluje tudi v sistemih Linux, Windows in Mac OS X ter na kateri koli drugi platformi z nameščeno Javo. Podpira široko paleto prilagodljivih in jezikovnih struktur podatkov, kot so Map, Set, List, MultiMap, RingBuffer in HyperLogLog.

Hazelcast je enakovreden in podpira preprosto razširljivost, nastavitev grozda (z možnostmi zbiranja statističnih podatkov, spremljanja prek protokola JMX in upravljanja grozda s koristnimi pripomočki), porazdeljenih podatkovnih struktur in dogodkov, razdeljevanja podatkov in transakcij. Prav tako je odveč, saj hrani varnostno kopijo vsakega vnosa podatkov na več članih. Če želite prilagoditi svojo gručo, preprosto zaženite drug primerek, podatki in varnostne kopije so samodejno in enakomerno uravnoteženi.

Ponuja zbirko uporabnih API-jev za dostop do CPU-jev v vaši gruči za največjo hitrost obdelave. Ponuja tudi porazdeljene izvedbe velikega števila razvijalcem prijaznih vmesnikov iz Jave, kot so Map, Queue, ExecutorService, Lock in JCache.

Med varnostne funkcije spadajo člani gruče in preverjanje pristnosti odjemalca ter nadzor dostopa do odjemalskih operacij prek varnostnih funkcij, ki temeljijo na JAAS. Omogoča tudi prestrezanje povezav vtičnic in oddaljene operacije, ki jih izvajajo odjemalci, šifriranje komunikacije na ravni vtičnice med člani gruče in omogočanje SSL/TLS vtičnice. Toda v skladu z uradno dokumentacijo je večina teh varnostnih funkcij na voljo v različici Enterprise.

Najbolj priljubljen primer uporabe je razdeljeno predpomnjenje v pomnilniku in shranjevanje podatkov. Lahko pa ga uporabimo tudi za združevanje v spletne seje, zamenjavo NoSQL, vzporedno obdelavo, enostavno sporočanje in še veliko več.

6. Mcrouter

Mcrouter je brezplačen in odprtokodni usmerjevalnik protokolov Memcached za skaliranje uvajanja Memcached, ki ga je razvil in vzdrževal Facebook. Vsebuje protokol Memcached ASCII, prilagodljivo usmerjanje, podporo več gruč, predpomnilnike na več ravneh, združevanje povezav, več shem razprševanja, usmerjanje predpone, replicirane bazene, senčenje proizvodnega prometa, spletno rekonfiguracijo in spremljanje stanja cilja/samodejno preusmeritev.

Poleg tega podpira hladno ogrevanje predpomnilnika, bogato statistiko in ukaze za odpravljanje napak, zanesljivo kakovost brisanja tokov storitev, velike vrednosti, oddajanje in ima podporo za IPv6 in SSL.

Uporablja se na Facebooku in Instagramu kot osrednji sestavni del predpomnilniške infrastrukture, da lahko obvlada skoraj 5 milijard zahtev na sekundo.

7. Predpomnilnik laka

Apache in številni drugi, da na privzetih vratih HTTP poslušajo, da prejemajo in posredujejo zahteve odjemalca spletnemu strežniku ter stranki posredujejo odziv spletnih strežnikov.

Varnish Cache deluje kot posrednik med odjemalci in izvornimi strežniki, vendar ponuja številne prednosti, pri čemer je osnovno predpomnjenje spletne vsebine v pomnilniku, da olajša obremenitev vašega spletnega strežnika in izboljša hitrost dostave strankam.

Po prejemu zahteve HTTP od odjemalca jo posreduje zalednemu spletnemu strežniku. Ko se spletni strežnik odzove, Varnish shrani vsebino v pomnilnik in stranki dostavi odgovor. Ko odjemalec zahteva isto vsebino, jo bo Varnish ponudil iz odgovora aplikacije za povečanje predpomnilnika. Če vsebine iz predpomnilnika ne more prikazati, se zahteva posreduje zaledju, odgovor pa se predpomni in dostavi odjemalcu.

Varnish vsebuje VCL (Varnish Configuration Language - prilagodljiv jezik, specifičen za domeno), ki se uporablja za konfiguriranje načina obdelave zahtev in še več, Varnish Modules (VMODS), ki so razširitve za Varish Cache.

Varnostno predpomnilnik Varnish Cache podpira beleženje, pregled zahtev in dušenje, avtentikacijo in avtorizacijo prek VMODS, vendar nima izvorne podpore za SSL/TLS. HTTPS lahko za predpomnilnik lakov omogočite s pomočjo proxyja SSL/TLS, kot sta Hitch ali NGINX.

Varni predpomnilnik lahko uporabite tudi kot požarni zid spletne aplikacije, zaščitnik pred napadi DDoS, zaščito pred vročimi povezavami, izravnalnik obremenitve, integracijsko točko, prehod za eno prijavo, mehanizem pravilnika za preverjanje pristnosti in avtorizacije, hiter popravek za nestabilne bakende in usmerjevalnik zahtev HTTP.

8. Proxy za lovljenje lignjev

Druga brezplačna in odprtokodna, izjemna in široko uporabljena proxy in predpomnilna rešitev za Linux je Squid. Gre za programsko opremo za predpomnilnik spletnega strežnika proxy, ki ponuja storitve proxy in predpomnilnika za priljubljene omrežne protokole, vključno s HTTP, HTTPS in FTP. Deluje tudi na drugih platformah UNIX in Windows.

Tako kot Varnish Cache sprejema zahteve odjemalcev in jih posreduje določenim stranskim strežnikom. Ko se začasni strežnik odzove, shrani kopijo vsebine v predpomnilnik in jo posreduje odjemalcu. Prihodnje zahteve za isto vsebino bodo postrežene iz predpomnilnika, kar bo omogočilo hitrejšo dostavo vsebine odjemalcu. Tako optimizira pretok podatkov med odjemalcem in strežnikom, da izboljša zmogljivost in predpomni pogosto uporabljeno vsebino, da zmanjša omrežni promet in prihrani pasovno širino.

Squid ima funkcije, kot je porazdelitev obremenitve po medsebojno povezanih hierarhijah proxy strežnikov, ki proizvaja podatke o vzorcih uporabe spleta (npr. Statistika o najbolj obiskanih spletnih mestih), omogoča analizo, zajem, blokiranje, zamenjavo ali spreminjanje sporočil, ki jih posredujete.

Podpira tudi varnostne funkcije, kot so bogat nadzor dostopa, avtorizacija in overjanje, podpora SSL/TLS in beleženje dejavnosti.

9. NGINX

vzpostavitev spletne infrastrukture. To je strežnik HTTP, povratni strežnik proxy, poštni strežnik proxy in splošni strežnik TCP/UDP.

NGINX ponuja osnovne zmožnosti predpomnjenja, kjer se predpomnjena vsebina shrani v trajni predpomnilnik na disku. Fascinanten del predpomnjenja vsebine v NGINX je, da ga je mogoče konfigurirati za dostavo zastarele vsebine iz svojega predpomnilnika, ko ne more pridobiti sveže vsebine z izvornih strežnikov.

NGINX ponuja številne varnostne funkcije za osnovno overjanje HTTP, preverjanje pristnosti na podlagi rezultata podzahteve, preverjanje pristnosti JWT, omejevanje dostopa do posredovanih virov HTTP, omejevanje dostopa po geografski lokaciji in še veliko več.

Pogosto se uporablja kot povratni strežnik proxy, izravnalnik obremenitve, SSL terminator/varnostni prehod, pospeševalnik aplikacij/predpomnilnik vsebine in prehod API v svežnju aplikacij. Uporablja se tudi za pretakanje medijev.

10. Apache Traffic Server

Nenazadnje imamo Apache Traffic Server, odprtokodni, hitri, razširljivi in razširljivi predpomnilniški strežnik s podporo za HTTP/1.1 in HTTP/2.0. Zasnovan je za izboljšanje omrežne učinkovitosti in zmogljivosti s predpomnjenjem pogosto dostopne vsebine na robu omrežja, za podjetja, ponudnike internetnih storitev (ponudniki internetnih strežnikov), ponudnike hrbtenice in še več.

Podpira tako posredniško kot obratno proksiranje prometa HTTP/HTTPS. Lahko je tudi konfiguriran za sočasno izvajanje v enem ali obeh načinih. Ima trajno predpomnjenje, API-je vtičnikov; podpora za ICP (Internet Cache Protocol), ESI (Edge Side Includes); Keep-ALive in še več.

Kar zadeva varnost, Traffic Server podpira nadzor odjemalskega dostopa, tako da vam omogoča, da konfigurirate odjemalce, ki smejo uporabljati predpomnilnik proxy, zaključek SSL za povezave med odjemalci in samim seboj ter med samim seboj in izvornim strežnikom. Podpira tudi preverjanje pristnosti in osnovno avtorizacijo prek vtičnika, beleženje dnevnika (vsake zahteve, ki jo prejme, in vsake napake, ki jo zazna) ter spremljanje.

Strežnik Traffic lahko uporabljate kot predpomnilnik spletnega strežnika proxy, posredniški posrednik, povratni strežnik proxy, prosojni strežnik proxy, izravnalnik obremenitve ali v hierarhiji predpomnilnika.

Predpomnjenje je ena najbolj koristnih in že dolgo uveljavljenih tehnologij za dostavo spletnih vsebin, ki je v prvi vrsti namenjena povečanju hitrosti spletnih mest ali aplikacij. Pomaga zmanjšati obremenitev strežnika, zakasnitev in pasovno širino omrežja, ker se predpomnjeni podatki strežejo strankam, s čimer se izboljša odzivni čas aplikacije in hitrost dostave strankam.

V tem članku smo pregledali najboljša odprtokodna orodja za predpomnjenje, ki se uporabljajo v sistemih Linux. Če poznate druga odprtokodna orodja za predpomnjenje, ki tukaj niso navedena, jih delite z nami preko spodnjega obrazca za povratne informacije. Svoje misli o tem članku lahko delite tudi z nami.