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 16384Tai 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ą.