Redis Shardingas

Redis Shardingas



Kai pirmą kartą pradėsite naudoti „Redis“, nesunku patikėti, kad jums niekada nereikės keisti numatytųjų nustatymų. Problema ta, kad plečiantis programai galiausiai prireiks daugiau atminties, procesoriaus ir pralaidumo, kad patenkintumėte verslo poreikius. Šiame straipsnyje parodysime, kaip „Redis“ klasteris plečiasi su skeldimu, kad suteiktų papildomų pajėgumų, reikalingų sklandžiam verslui vykdyti ir augti ateityje. Konkrečiai sužinosime, kaip „Redis“ klasteris užtikrina didelį pralaidumą su skaidymu.

Mastelio keitimas

Yra du įprasti serverio mastelio keitimo būdai: vertikalus mastelio keitimas ir horizontalus mastelio keitimas. Vertikalus mastelio keitimas arba mastelio padidinimas yra vieta, kur galite pridėti daugiau galios ir išteklių prie serverio, pvz., daugiau procesorių, atminties ir saugyklos, o tai kainuoja brangiai. Kita vertus, horizontalus mastelio keitimas prideda kelis mazgus į esamą išteklių telkinį. Tai vadinama mastelio mažinimu. Taigi, atsižvelgiant į jūsų apribojimus ir reikalavimus, jūs turite turėti vieną didesnį serverio egzempliorių arba įdiegti kelis serverio mazgus.

Tarkime, kad turite 100 GB RAM ir turite turėti 200 GB duomenų. Šiuo atveju turite du pasirinkimus:







  • Padidinkite dydį pridėdami daugiau RAM prie sistemos
  • Sumažinkite mastelį pridėdami kitą serverio egzempliorių su 100 GB RAM

Jei savo infrastruktūroje pasiekėte didžiausią RAM ribą, mastelio mažinimas yra idealus būdas. Be to, sumažinus duomenų bazės pralaidumą labai padidės.





Redis Shardingas

Žinomas faktas, kad Redis veikia viena gija. Taigi, Redis negali naudoti kelių jūsų serverio procesoriaus branduolių komandoms apdoroti. Todėl pridėjus daugiau procesoriaus branduolių, naudojant „Redis“ nesuteikiama daug pralaidumo ar našumo. Duomenų padalijimas į kelis serverio egzempliorius taip pat nėra atvejis. Pridėjus kelis serverius ir paskirstant duomenų rinkinį tarp jų galima lygiagrečiai apdoroti klientų užklausas, o tai padidina pralaidumą. Be to, bendras našumas gali padidėti beveik tiesiškai.





Šis duomenų padalijimo arba paskirstymo keliuose serveriuose metodas, atsižvelgiant į mastelio keitimą, vadinamas skaldymas . Iškviečiami visi serveriai, kuriuose saugoma duomenų dalis šukės .



Kaip dalijamasi – algoritminis dalijimas

Vienas iš pagrindinių problemų, susijusių su suskaidymu, buvo kaip rasti tam tikrą raktą tarp kelių Redis mazgų. Kadangi duotas raktas gali būti saugomas visose turimose skeveldrose, visų skeveldrų užklausa norint rasti konkretų raktą nėra geriausias pasirinkimas. Taigi, turėtų būti būdas susieti kiekvieną raktą su konkrečia skeveldra, o Redis naudoja algoritminę skaidymo strategiją.

Dažniausias būdas yra apskaičiuoti maišos reikšmę naudojant Redis rakto pavadinimą ir modulo. Tada padalykite jį iš sistemoje turimų Redis skeveldrų.

HASH_SLOT = CRC16(rakto) mod 16384

Tai gana geras sprendimas, jei bendras šukių skaičius yra pastovus. Kai pridedate naują „Reids“ serverio egzempliorių, gauta tam tikro rakto reikšmė gali pasikeisti, nes bendras skeveldrų skaičius padidėjo. Bus užklausta netinkama „Redis“ skeveldra. Todėl turėtumėte sekti perskirstymo procesą, apskaičiuodami naują kiekvieno rakto skeveldrą ir perkeldami duomenis į tinkamą serverį, o tai yra sudėtinga ir nėra nereikšminga užduotis, jei bendras skeveldrų skaičius retkarčiais didėja.

Redis naudoja naują loginį objektą, vadinamą a maišos lizdas kad išvengtumėte šios problemos. Yra keletas maišos lizdų, skirtų tam tikrai daliai, o viename maišos lizde gali būti keli Redis raktai. Redis duomenų bazės klasteryje yra 16384 maišos lizdai, kurie lieka nepakitę. Modulo padalijimas atliekamas naudojant maišos lizdų skaičių, o ne skeveldrų skaičių. Jis suteikia teisingą maišos lizdo padėtį nurodytam raktui net tada, kai šukių skaičius padidėjo. Tai supaprastina perskirstymo procesą, perkeliant maišos lizdus iš vienos šukės į naują, kuri pagal poreikį padalija duomenis tarp skirtingų Redis egzempliorių.

Redis Sharding privalumai

Redis sharding suteikia keletą privalumų jūsų duomenų bazių sistemai su minimaliais pakeitimais.

Didelis pralaidumas

Kadangi „Redis“ yra vienos gijos, kelių klientų užklausų apdorojimas negali būti vykdomas lygiagrečiai naudojant kelis procesoriaus branduolius. Taigi, naujų skeveldrų ar serverio egzempliorių pridėjimas garantuoja, kad Redis operacijas galėsite atlikti lygiagrečiai. Tai padidina operacijų per sekundę skaičių jūsų Redis duomenų bazėje, o tai galiausiai suteikia didelį pralaidumą.

Aukštas prieinamumas

Taikant dalijimosi metodą, „Redis“ klasteris gali sukurti pagrindinę kopijos architektūrą, užtikrinančią aukštą prieinamumą ir ilgaamžiškumą.

Skaitykite kopijas

Bendrinimas leidžia išsaugoti tikslią duomenų kopiją ir atlikti skaitymo operacijas per atskirus „Redis“ egzempliorius, o tai padidina skaitymo užklausos vykdymo našumą.

Be šių privalumų, suskaidymas gali sukelti smegenų padalijimą, kai Redis klasteryje yra lyginis šukių skaičius. Taigi rekomenduojama „Redis“ klasteryje laikyti nelyginį šukių skaičių.

Išvada

Apibendrinant galima pasakyti, kad „Redis sharding“ padalija duomenis tarp kelių serverių, o tai įgalina jūsų duomenų bazės mastelį ir didelį pralaidumą. Kaip aptarta, „Redis“ naudoja algoritminę dalijimosi strategiją, kad klientų užklausas nukreiptų į tinkamą skeveldrą. Tai turi tam tikrų trūkumų, kai bendras šukių skaičius didėja. Taigi, vietoj bendro skeveldrų skaičiaus, Redis naudoja maišos tarpsnių skaičių, kad apskaičiuotų atitinkamą skeveldrą. Įvedus dalijimąsi, Redis duomenų bazės užtikrina aukštą pasiekiamumą, didelį pralaidumą ir didelį našumą.