Redis Sharding

Redis Sharding



Ko prvič začnete uporabljati Redis, je enostavno verjeti, da vam ga nikoli ne bo treba povečati nad privzete nastavitve. Težava je v tem, da boste, ko vaša aplikacija raste, sčasoma potrebovali več pomnilnika, procesorja in pretočne zmogljivosti za podporo vašim poslovnim potrebam. V tem članku vam bomo pokazali, kako se gruča Redis prilagaja z razdeljevanjem, da vam zagotovi dodatno zmogljivost, ki jo potrebujete za nemoteno vodenje vašega podjetja in rast v prihodnosti. Posebej se bomo naučili, kako gruča Redis zagotavlja visoko prepustnost z razdeljevanjem.

Razširljivost

Obstajata dva pogosta pristopa k skaliranju strežnika: vertikalno skaliranje in horizontalno skaliranje. Pri navpičnem povečanju ali povečevanju dodate več moči in virov svojemu strežniku, na primer več procesorjev, pomnilnika in prostora za shranjevanje, kar je drago. Po drugi strani pa horizontalno skaliranje dodaja več vozlišč vašemu obstoječemu naboru virov. To se imenuje skaliranje. Glede na vaše omejitve in zahteve je torej odvisno od vas, ali boste imeli en sam večji primerek strežnika ali razmestili več strežniških vozlišč.

Predpostavimo, da imate 100 GB RAM-a in potrebujete 200 GB podatkov. V tem primeru imate dve možnosti:







  • Povečajte tako, da sistemu dodate več RAM-a
  • Povečajte z dodajanjem drugega primerka strežnika s 100 GB RAM-a

Če ste dosegli največjo omejitev RAM-a v svoji infrastrukturi, je povečanje velikosti idealen pristop. Poleg tega bo skaliranje močno povečalo prepustnost baze podatkov.





Redis Sharding

Znano dejstvo je, da Redis deluje v eni niti. Redis torej ne more uporabiti več jeder CPE vašega strežnika za obdelavo ukazov. Zato vam dodajanje več jeder procesorja ne zagotavlja veliko prepustnosti ali zmogljivosti z Redisom. Pri razdelitvi vaših podatkov med več primerkov strežnika ni tako. Dodajanje več strežnikov in porazdelitev nabora podatkov mednje omogoča vzporedno obdelavo zahtev odjemalcev, kar poveča prepustnost. Poleg tega se lahko splošna zmogljivost poveča skoraj linearno.





Ta pristop delitve ali distribucije podatkov med več strežnikov z upoštevanjem skaliranja se imenuje drobljenje . Pokličejo se vsi strežniki, ki shranjujejo dele podatkov drobci .



Kako poteka razčlenjevanje — Algoritemsko razčlenjevanje

Eden glavnih pomislekov pri razdeljevanju je bil, kako poiskati dani ključ med več vozlišči Redis. Ker je določen ključ mogoče shraniti v kateri koli razpoložljivi delček, poizvedovanje po vseh drobcih za iskanje določenega ključa ni najboljša možnost. Torej bi moral obstajati način za preslikavo vsakega ključa v določen delček, Redis pa uporablja strategijo algoritemskega drobljenja.

Najpogostejši pristop je izračun zgoščene vrednosti z uporabo imena in modula ključa Redis. Nato ga razdelite z razpoložljivimi delci Redis v sistemu.

HASH_SLOT = CRC16 (ključ) mod 16384

To je precej dobra rešitev, če je skupno število drobcev konstantno. Kadar koli dodate nov primerek strežnika Reids, se lahko končna vrednost za dani ključ spremeni, ker se je skupno število drobcev povečalo. Na koncu bo poizvedel napačen Redis shard. Zato bi morali slediti postopku ponovnega razdeljevanja tako, da izračunate nov delček za vsak ključ in prenesete podatke na pravi strežnik, kar je okorno in ni nepomembna naloga, če vaše skupno število drobcev občasno narašča.

Redis uporablja novo logično entiteto, imenovano a hash reža da preprečite to težavo. Za določen delček je na voljo več zgoščenih rež, ena sama zgoščena reža pa lahko vsebuje več ključev Redis. V gruči baze podatkov Redis je 16384 zgoščenih rež, ki ostajajo nespremenjene. Modulo delitev se opravi s številom zgoščenih rež namesto s številom drobcev. Zagotavlja pravilen položaj zgoščene reže za podani ključ, tudi ko se je število drobcev povečalo. Poenostavlja postopek ponovnega razdeljevanja s premikanjem zgoščevalnih rež iz enega drobca v novega, ki razdeli podatke med različne primerke Redisa v skladu z zahtevami.

Prednosti Redis Sharding

Redis sharding omogoča več prednosti vašemu sistemu baze podatkov z minimalnimi spremembami.

Visoka prepustnost

Ker je Redis enoniten, obdelava zahtev več strank ne more obdelati vzporedno z uporabo več jeder CPE. Torej dodajanje novih drobcev ali primerkov strežnika zagotavlja, da lahko vzporedno izvajate operacije Redis. Poveča število operacij na sekundo v vaši bazi podatkov Redis, kar vam sčasoma zagotovi visoko prepustnost.

Visoka dostopnost

S pristopom drobljenja lahko gruča Redis vzpostavi arhitekturo glavne replike, ki zagotavlja visoko razpoložljivost in vzdržljivost.

Preberi replike

Sharding vam omogoča, da obdržite natančno kopijo svojih podatkov in zagotovite operacije branja prek ločenih primerkov Redis, kar poveča učinkovitost izvajanja vaše poizvedbe za branje.

Poleg teh prednosti lahko razrezovanje povzroči razcepljene možganske situacije, ko imate sodo število drobcev v gruči Redis. Zato je priporočljivo, da v gruči Redis hranite liho število drobcev.

Zaključek

Če povzamemo, Redis sharding deli podatke med več strežnikov, kar omogoča skaliranje in visoko prepustnost za vašo bazo podatkov. Kot smo že omenili, Redis uporablja strategijo algoritemskega razčlenjevanja, da usmeri zahteve odjemalcev na pravilen delček. To ima nekaj pomanjkljivosti, ko se skupno število drobcev poveča. Tako Redis namesto skupnega števila drobcev uporabi število zgoščenih rež za izračun ustreznega drobca. Z uvedbo razdeljevanja podatkovne zbirke Redis zagotavljajo visoko razpoložljivost, visoko prepustnost in visoko zmogljivost.