Redis Sharding

Redis Sharding



Kui hakkate Redise esimest korda kasutama, on lihtne uskuda, et te ei pea seda kunagi vaikesätetest kaugemale skaleerima. Probleem on selles, et rakenduse kasvades vajate oma ettevõtte vajaduste rahuldamiseks lõpuks rohkem mälu, protsessorit ja läbilaskevõimet. Selles artiklis näitame teile, kuidas Redise klastrit skaleeritakse koos killustatusega, et anda teile lisavõimsust, mida vajate oma ettevõtte sujuvaks juhtimiseks ja tulevikku kasvamiseks. Saame konkreetselt teada, kuidas Redise klaster pakub killustatusega suurt läbilaskevõimet.

Skaleeritavus

Serveri skaleerimiseks on kaks levinud lähenemisviisi: vertikaalne skaleerimine ja horisontaalne skaleerimine. Vertikaalne skaleerimine või suurendamine on koht, kus lisate oma serverile rohkem energiat ja ressursse, näiteks rohkem protsessoreid, mälu ja salvestusruumi, mis on kulukas. Teisest küljest lisab horisontaalne skaleerimine teie olemasolevasse ressursikogumisse mitu sõlme. Seda nimetatakse skaleerimiseks. Seega on teie piirangute ja nõuete põhjal teie otsustada, kas teil on üks suurem serveri eksemplar või mitu serverisõlme.

Oletame, et teil on 100 GB muutmälu ja teil on vaja 200 GB andmemahtu. Sel juhul on teil kaks valikut:







  • Suurendage süsteemi, lisades süsteemi rohkem RAM-i
  • Skaleerige, lisades teise serveri eksemplari, millel on 100 GB muutmälu

Kui olete oma infrastruktuuris saavutanud maksimaalse RAM-i piiri, on skaleerimine ideaalne lähenemisviis. Lisaks suurendab skaleerimine andmebaasi läbilaskevõimet tohutult.





Redis Sharding

On teada, et Redis tegutseb ühel lõimel. Seega ei saa Redis käskude töötlemiseks kasutada teie serveri protsessori mitut tuuma. Seetõttu ei anna rohkemate protsessorituumade lisamine Redisega palju läbilaskevõimet ega jõudlust. See ei kehti andmete jagamisel mitme serveri eksemplari vahel. Mitme serveri lisamine ja andmestiku nende vahel jaotamine võimaldab klientide päringuid paralleelselt töödelda, mis suurendab läbilaskevõimet. Lisaks võib üldine jõudlus suureneda peaaegu lineaarselt.





Seda meetodit andmete tükeldamiseks või jaotamiseks mitme serveri vahel, pidades silmas skaleerimist, nimetatakse killustamine . Kutsutakse välja kõik serverid, mis salvestavad andmeid killud .



Kuidas jagamine toimub – algoritmiline jagamine

Üks suuremaid probleeme seoses jagamisega oli see, kuidas leida antud võti mitme Redise sõlme vahel. Kuna antud võtit saab salvestada kõikidesse saadaolevatesse kildudesse, ei ole konkreetse võtme leidmiseks kõigi kildude päringute tegemine parim valik. Seega peaks olema võimalus kaardistada iga võti konkreetse killuga ja Redis kasutab algoritmilist jagamisstrateegiat.

Kõige tavalisem meetod on räsiväärtuse arvutamine Redise võtme nime ja mooduli abil. Seejärel jagage see süsteemis saadaolevate Redise kildudega.

HASH_SLOT = CRC16 (võtme) mod 16384

See on üsna hea lahendus seni, kuni kildude koguarv on konstantne. Iga kord, kui lisate uue Reidsi serveri eksemplari, võib antud võtme saadud väärtus muutuda, kuna kildude koguarv on suurenenud. See lõpetab päringu vale Redise killu kohta. Seetõttu peaksite järgima uuesti jagamise protsessi, arvutades iga võtme jaoks uue killu ja edastades andmed õigesse serverisse, mis on tülikas ega ole tühine ülesanne, kui teie killu koguarv aeg-ajalt suureneb.

Redis kasutab uut loogilist olemit nimega a räsipesa selle probleemi vältimiseks. Antud killu jaoks on saadaval mitu räsipesa ja ühes räsipesas võib olla mitu Redise võtit. Redise andmebaasiklastris on 16384 räsipesa, mis jääb muutumatuks. Modulo jagamine toimub räsipesade arvuga, mitte kildude loendamisega. See tagab määratud võtme jaoks räsipesa õige asukoha isegi siis, kui kildude arv on suurenenud. See lihtsustab uuesti jagamise protsessi, teisaldades räsipesad ühelt killult uude, mis jagab andmed erinevate Redise eksemplaride vahel vastavalt vajadusele.

Redis Shardingu eelised

Redis sharding võimaldab teie andmebaasisüsteemile minimaalsete muudatustega mitmeid eeliseid.

Kõrge läbilaskevõime

Kuna Redis on ühe lõimega, ei saa mitme kliendi päringu töötlemine paralleelselt töödelda mitut protsessori südamikku. Seega tagab uute kildude või serverieksemplaride lisamine, et saate Redise toiminguid paralleelselt teha. See suurendab teie Redise andmebaasi toimingute arvu sekundis, mis lõpuks annab teile suure läbilaskevõime.

Suur kättesaadavus

Jaotamismeetodi abil saab Redise klaster seadistada põhikoopia arhitektuuri, mis tagab kõrge kättesaadavuse ja vastupidavuse.

Lugege koopiaid

Jagamine võimaldab teil säilitada oma andmete täpset koopiat ja pakkuda lugemistoiminguid eraldi Redise eksemplaride kaudu, mis suurendab teie lugemispäringu täitmise jõudlust.

Lisaks nendele eelistele võib killustamine põhjustada aju lõhestatuse olukordi, kui teil on Redise klastris paarisarv kilde. Seega on soovitatav hoida oma Redise klastris paaritu arvu kilde.

Järeldus

Kokkuvõtteks võib öelda, et Redis sharding jagab andmed mitme serveri vahel, mis võimaldab teie andmebaasi skaleerimist ja suurt läbilaskevõimet. Nagu arutatud, kasutab Redis algoritmilist jagamisstrateegiat, et suunata kliendi taotlused õigele killule. Sellel on mõned puudused, kui kildude koguarv suureneb. Seega kasutab Redis kildude koguarvu asemel sobiva killu arvutamiseks räsipesade arvu. Jaotuse kasutuselevõtuga pakuvad Redise andmebaasid kõrget kättesaadavust, suurt läbilaskevõimet ja suure jõudlusega.