
Tuleviku toote puhul, mis on arenenud rohkem kui kĂŒmme aastat, ei ole sugugi ĂŒllatav kohata vananenud tehnoloogiaid. Kuid mis juhtub, kui kuue kuu pĂ€rast peate taluma koormust, mis on kĂŒmme korda suurem, ja tĂ”usud kulud ulatuvad sadu kordi? Sellisel juhul on teil vaja tĂ”eliselt head Highload inseneri. Kuid kuna sellist spetsialisti ei olnud, usaldati probleem minu lahendada. Artikli esimeses osas rÀÀgin, kuidas me viisime ĂŒle Redis'elt Redis-klastrisse, ja teises osas annan nĂ”uandeid, kuidas alustada klastriga töötamist ja millele tĂ€helepanu pöörata operatsioonide kĂ€igus.
Tehnoloogia valik
Kas eraldiseisev Redis (standalone redis) konfiguratsioonis 1 master ja N slÀevad on nii halb? Miks ma kutsun seda vananenud tehnoloogiaks? Ei, Redis ei ole nii halb... Siiski, on mÔned puudused, mida ei saa ignoreerida.
Esiteks ei toeta Redis meistrite taastumise mehhanisme pĂ€rast rikkeid. Selle probleemi lahendamiseks kasutasime konfiguratsiooni, kus automaatselt suunati VIP-d uuele meistrile, muutes ĂŒhe slĂ€eva rolli ja lĂŒlitades ĂŒlejÀÀnud ĂŒle. See mehhanism töötas, kuid seda ei saanud usaldusvÀÀrseks lahenduseks nimetada. Esiteks, toimusid valehĂ€ired ja teiseks, see oli ĂŒhe kasutuse jaoks mĂ”eldud ning peale rakendamist olid vajalikud kĂ€sitsi toimingud.
Teiseks, ĂŒhe meistri olemasolu tĂ”i kaasa shardimise probleeme. Pidi looma mitu sĂ”ltumatut klastri "1 meister ja N slĂ€evad", seejĂ€rel kĂ€sitsi jagama andmebaase nende masinate vahel ja lootes, et jĂ€rgmisel pĂ€eval ei paisu ĂŒkski andmebaas nii palju, et see tuleb viia eraldi instantsile.
Kalleim ja rikkalik lahendus on Redis-Enterprise. See on kastilahendus koos tÀieliku tehnilise toega. Kuigi see tundub tehniliselt ideaalsena, ei sobinud see meile ideoloogilistel pÔhjustel.
Millised on variandid?
- Redis-cluster. Tootes on meistri automaatne ĂŒlehaarde ja shardimise tugi. Liides ei erine peaaegu ĂŒldse tavalise versiooniga. Tundub tĂ”otav, rÀÀgime varjatud probleemidest hiljem.
- Redis-kluster. Kasti tohib olla toetust kapitaalide vahetamiseks ja jagamiseks. Liides ei erine peaaegu ĂŒldse tavalise versioonist. NĂ€eb paljutĂ”otav vĂ€lja, arutame muresid hiljem.
- Tarantool, Memcache, Aerospike ja teised. KĂ”ik need tööriistad teevad umbes sama, kuid igaĂŒhel on oma puudused. Otsustasime, et ei pane kĂ”iki mune ĂŒhte korvi. Memcache ja Tarantool kasutame teiste ĂŒlesannete jaoks ning edasiviimiseks vĂ”in öelda, et meil on olnud rohkem probleeme nendega.
Kasutuse eripÀra
Vaadakem, milliseid ĂŒlesandeid oleme ajalooliselt Redisâiga lahendanud ja millist funktsionaalsust oleme kasutanud:
- VahemÀlu enne pÀringuid kaugteenustele nagu 2GIS | Golang
GET SET MGET MSET "SELECT DB"
- VahemÀlu enne MYSQL | PHP
GET SET MGET MSET SCAN "KEY BY PATTERN" "SELECT DB"
- Peamine andmemÀlu sessioonide ja autojuhtide koordinaatide teenuse jaoks | Golang
GET SET MGET MSET "SELECT DB" "ADD GEO KEY" "GET GEO KEY" SCAN
Nagu nÀete, pole siin mingit kÔrgemat matemaatikat. Mis siis ikkagi on keeruline? Vaatame iga meetodit eraldi.
Meetod
Kirjeldus
Redis-klusteri omadused
Lahendus
GET SET
Kirjutamine/lugemine vÔtme
MGET MSET
Kirjutamine/lugemine mitmeid vÔtmeid
VĂ”tmed asuvad erinevates nodides. Valmis raamatukogud suudavad teha Multi-operatsioone vaid ĂŒhe nodi piires.
Asendage MGET N GET operatsioonide pipelinen.
SELECT DB
Vali andmebaas, millega töötame
Ei toeta mitmeid andmebaase.
Koguda kĂ”ik ĂŒhte andmebaasi. Lisada vĂ”tmete ette eesliite.
SCAN
KĂ€ia ĂŒle kĂ”ik vĂ”tmed andmebaasis.
Kuna meil on ainult ĂŒks andmebaas, on kogu klusteris vĂ”tmete ĂŒle kĂ€imine liiga kulukas.
SĂ€ilitada invariant ĂŒhe vĂ”tme piires ja teha HSCAN selle vĂ”tme kohta. VĂ”i loobuda tĂ€ielikult.
GEO
GeovÔtme operatsioonid
GeovÔti ei jagune.
KEY BY PATTERN
Otsige vÔtmeid mustri alusel.
Kuna meil on ainult ĂŒks andmebaas, otsime klusteri kĂ”igi vĂ”tmete seast. Liiga kulukas.
Loobuge vÔi sÀilitage invariant, nagu SCAN puhul.
Redis vs Redis-kluster
Mida kaotame ja mida saame klusterisse ĂŒleminekul?
- Puudused: kaotame mitme andmebaasi funktsionaalsuse.
- Kui soovime hoida ĂŒhes klusteris loogiliselt mitteseotud andmeid, peame looma eesliiteid.
- Kaotame kÔik 'andmebaasi' operatsioonid, nagu SCAN, DBSIZE, CLEAR DB jms.
- Multi-operatsioonid on saanud oluliselt keerulisemaks, kuna vÔib osutuda vajalikuks pöörduda mitmete nodide poole.
- Eelised:
- Veadeta mastreid avariivÔimekusena.
- Redis'i poolelt jagamine.
- Andmete ĂŒleviimine nodide vahel atomaarse ja katkestusteta.
- VĂ”imsuste ja koormuste lisamine ja ĂŒmberjaotamine katkestusteta.
Ma arvan, et kui teil ei ole vaja tagada kĂ”rget töökindlust, siis ei tasu klastrisse kolida, kuna see vĂ”ib osutuda keerukaks ĂŒlesandeks. Kuid kui valida eraldi versiooni ja klastriversiooni vahel, siis tasub valida klaster, kuna see ei ole halvem ning lisaks vabastab teid osaliselt peavaludest.
Valmistumine kolimiseks
Alustame kolimise nÔuetest:
- See peab olema sujuv. Teenuse tÀielik peatamine 5 minutiks ei sobi meile.
- See peab olema maksimaalselt ohutu ja jĂ€rkjĂ€rguline. Soovime teatud kontrolli olukorra ĂŒle. Me ei soovi kĂ”ike korraga kokku kuhjata ja palvetada, et tagasipöördumise nupp töötaks.
- Minimaalsed andmekadud kolimise ajal. Me mĂ”istame, et atomaarne kolimine on vĂ€ga keeruline, seetĂ”ttu lubame mĂ”ningat desĂŒnkroniseerimist tavapĂ€raste ja klastriliste Redis andmete vahel.
Klastri hooldus
PÀrast kolimist tuleks mÔelda, kas saame klastrit toetada:
- Graafikud. Kasutame Prometheust ja Grafanat protsessorite koormuse, kasutatava mÀlu, klientide arvu, GET, SET, AUTH jms operatsioonide graafikute loomiseks.
- Ekspertiseerimine. Kujutage ette, et homsest vastutate te tohutu klastrite eest. Kui see katki lĂ€heb, ei saa keegi peale teie selle parandada. Kui see hakkab aeglaselt töötama â siis tulevad kĂ”ik teie poole. Kui tuleb lisaressursse lisada vĂ”i koormust ĂŒmber jaotada â jĂ€lle teie juurde. Et mitte 25-aastaseks halliks minna, tuleks selliseid olukordi ette nĂ€ha ja eelnevalt kontrollida, kuidas tehnoloogia teatud tegevustes kĂ€itub. RÀÀgime sellest lĂ€hemalt 'Ekspertiseerimise' osas.
- Monitooringud ja teavitamine. Kui klaster katki lÀheb, tahaks sellest esimesena teada. Siin oleme piirdunud teavitamisega, et kÔik sÔlmed naasevad sama teabe juurde klastrisse. (Jah, see juhtub ka teistmoodi). Teisi probleeme on kiiremini nÀha Redis klientide teenuste teavituste kaudu.
Kolimine
Kuidas me kolime:
- Esiteks peate ette valmistama teegi töötamiseks klastri jaoks. GĐŸ versiooni aluseks vĂ”tsime go-redis'i ja tegime mĂ”ned muudatused. Rakendasime Multi-meetodid lĂ€bi pipeline'ide ning parandasime veidi pĂ€ringute kordamise reegleid. PHP versiooniga tekkis rohkem probleeme, kuid lĂ”puks otsustasime php-redis'i kasuks. Hiljuti lisasid nad klastri toe ja meie arvates nĂ€eb see hea vĂ€lja.
- SeejÀrel tuleb klastri vÀlja arendada. See toimub sÔna otseses mÔttes kahe kÀsuga, tuginedes konfiguratsioonifailile. RÀÀgime seadetest allpool lÀhemalt.
- Ahnemalt ĂŒleminekuks kasutame dry-mode'i. Kuna meil on kaks versiooni teegist, millel on sama liides (ĂŒks tavalise versiooni jaoks, teine klastri jaoks), pole midagi keerulist teha paketti, mis töötaks ĂŒhes versioonis ja samal ajal dubleeriks kĂ”ik pĂ€ringud klastrisse, vĂ”rreldes vastuseid ja kirjutades lahknevused logidesse (meie puhul NewRelicisse). Nii, isegi kui klastriversioon laguneb, ei mĂ”juta see meie tootmist.
- Klastri dry-reĆŸiimis vĂ€lja viies saame rahulikult vaadata vastuste lahknevuse graafikut. Kui veade osakaal liigub aeglaselt, aga kindlalt mingisse vĂ€ikesele konstandile, siis on kĂ”ik hĂ€sti. Miks lahknevusi endiselt esineb? Sest kirjutamine eraldi versioonis toimub veidi varem kui klastris ning mikroviivitus tĂ”ttu vĂ”ivad andmed lahkneda. JÀÀnud on vaid vaadata lahknevuste logisid ja kui kĂ”ik seletamatud need on kirjutamise mitteaatomsuse tĂ”ttu, siis saame edasi liikuda.
- NĂŒĂŒd saab dry-mode'i tagasi keerata. Kirjutame ja loeme klastrist, dubleerides eraldi versiooni. Miks? JĂ€rgmise nĂ€dala jooksul soovime klastrit jĂ€lgida. Kui ilmneb, et laadimispikkuse kĂ€igus on probleeme vĂ”i oleme midagi arvesse vĂ”tnud, on meil alati vĂ”imalus tagasipöörduda vana koodi ja tĂ€nu dry-mode'ile, kehtivate andmete juurde.
- JÀÀnud on dry-mode'i vĂ€ljalĂŒlitamine ja eraldi versiooni eemaldamine.
Ekspertarvamus
Esiteks, lĂŒhidalt klastri seadistusest.
Esiteks, Redis on key-value andmebaas. VĂ”tmena kasutatakse kĂ”iki sorte stringe. VÀÀrtustena vĂ”ivad olla numbrid, stringid ja tĂ€isarhitektuurid. Viimaste hulk on suur, kuid ĂŒldise arusaama jaoks pole see oluline.
JĂ€rgnev abstraktsiooni tase on slotid (SLOTS). Iga vĂ”tme kuulub ĂŒhte 16 383 slotti. Igas slotis vĂ”ib olla lĂ”pmatu arv vĂ”tmeid. Nii et kĂ”ik vĂ”tmed jagunevad 16 383 mitteĂŒhtesse kogusse.

Klastris peab olema N peanood. Iga noot saab vaadelda eraldi Redis'i instantsina, mis teab kĂ”igest teistest nootidest klassis. Igal peanoodil on teatud arv slote. Iga slot kuulub ainult ĂŒhele peanoodile. KĂ”ik slotid tuleb jaotada nootide vahel. Kui mingid slotid ei ole jaotatud, ei ole neis hoitavad vĂ”tmed kĂ€ttesaadavad. Iga peanoodi on mĂ”istlik kĂ€ivitada eraldi loogilisel vĂ”i fĂŒĂŒsilisel masinal. Samuti tasub meeles pidada, et iga noot töötab ainult ĂŒhel tuumal ja kui soovite kĂ€ivitada mitut Redis'i instantsi ĂŒhel loogilisel masinal, siis veenduge, et nad töötaksid erinevatel tuumadel (me ei ole seda proovinud, kuid teoorias kĂ”ik peaks töötama). PĂ”himĂ”tteliselt tagavad peanoodid tavapĂ€rase sharding'i ja suurem arvu peanoodide korral saab suurendada kirjutamise ja lugemise pĂ€ringute mahtu.
PÀrast seda, kui kÔik vÔtmed on slotides ja slotid on jaotatud peanoodide vahel, saab igale peanoodile lisada suvalise arvu slave-noode. Igas sellises "master-slave" paaris töötab tavaline replikatsioon. Slaved on vajalikud lugemisepÀringute suurendamiseks ja rikke korral peanoodi vahetamiseks.

NĂŒĂŒd rÀÀgime toimingutest, mida oleks hea osata teha.
Me pöördume sĂŒsteemi Redis-CLI kaudu. Kuna Redis'il ei ole ĂŒhtset sissepÀÀsupunkti, saab jĂ€rgmisi toiminguid teostada igas noodis. Igal punktis rĂ”hutan eraldi vĂ”imalust teostada operatsiooni koormuse all.
- Esimene ja kÔige olulisem, mida me vajame: operatsioon cluster nodes. See tagastab klastri oleku, nÀitab nootide loetelu, nende rolle, slotide jaotust jne. TÀiendavat teavet saab saada cluster info ja cluster slots abil.
- Hea oleks hea osata lisada ja eemaldada sĂ”lmi. Selleks on olemas toimingud cluster meet ja cluster forget. Pange tĂ€hele, et cluster forget tuleb rakendada KĂIKIDELE sĂ”lmede, nii meistritele kui ka replikaatele. Cluster meet tuleks aga kutsuda vĂ€lja vaid ĂŒhel sĂ”lmel. Selline erinevus vĂ”ib olla segadusttekitav, seega on parem sellest teada, enne kui oma klastrit tootmisse kĂ€ivitate. SĂ”lme lisamine toimub turvaliselt ning ei mĂ”juta klastrite tööd (mis on mĂ”istetav). Kui aga kavatsete sĂ”lme klastrist eemaldada, tuleb veenduda, et sellel pole enam slotte (vastasel juhul riskite juurdepÀÀsu kaotamisega kĂ”igile selle sĂ”lme vĂ”tmetele). Samuti Ă€rge eemaldage meistrit, kellel on slave-d, vastasel juhul toimub uue meistri valimise jaoks tarbetu hÀÀletamine. Kui sĂ”lmedel pole enam slotte, on see vĂ€ike probleem, kuid miks peaksime piirduma valikute vĂ€hendamisega, kui saaksime esmalt slave-d eemaldada.
- Kui on vaja sundida meistrit ja slave-d vahetama, sobib kÀsk cluster failover. Selle kÀivitamisel lahingus tuleb mÔista, et operatsiooni kÀigus ei ole meister saadaval. Tavaliselt toimub vahetus vÀhem kui sekundiga, kuid mitte aatomiliselt. VÔite arvestada, et osa pÀringutest meistrile lÔpetatakse sel ajal veaga.
- Enne sĂ”lme klastrist eemaldamist ei tohi nendel jÀÀda slotte. Parim on neid ĂŒmber jaotada kĂ€su cluster reshard abil. Slotte kantakse ĂŒhelt meistrilt teisele. Kogu operatsioon vĂ”ib vĂ”tta mitu minutit, sĂ”ltuvalt edastatavate andmete mahust, kuid andmete edastamine on ohutu ega mĂ”juta klastrite tööd. Seega on kĂ”ik andmed vĂ”imalik ĂŒle kanda ĂŒhest sĂ”lmest teise ka koormuse all, ilma et tuleks muretseda nende kĂ€ttesaadavuse pĂ€rast. Siiski on siin mĂ”ned nipid. Esiteks, andmete edastamine toob kaasa teatava koormuse nii vastuvĂ”tvale kui ka saatvale sĂ”lmele. Kui vastuvĂ”ttev sĂ”lm on juba protsessorilt tugevalt koormatud, siis ei tohiks seda koormata ka uute andmete vastuvĂ”tmisega. Teiseks, niipea kui saatva meistri juures ei jÀÀ slotte, lĂ€hevad kĂ”ik tema orjad kohe meistrile, kuhu need slotid on kantud. Ja probleem on see, et kĂ”ik need orjad tahavad korraga andmeid sĂŒnkroniseerida. Teil on veel Ă”nne, kui see on osaline, mitte tĂ€ielik sĂŒnkroniseerimine. Pea seda meeles ja kombineeri slotite ĂŒlekandmise ja orjade vĂ€ljalĂŒlitamise/ĂŒlekandmise operatsioone. VĂ”i looda, et teil on piisavalt vastupidavust.
- Mida teha, kui saate andmete ĂŒlekande ajal teada, et olete kuskile slotid kaotanud? Loodan, et see probleem teid ei puuduta, kuid kui siiski, on olemas operatsioon cluster fix. See jagab slotid sĂ”lmede vahel enam-vĂ€hem juhuslikult. Soovitan kontrollida selle töö toimivust, eemaldades eelnevalt klastrist sĂ”lme, kus slotid on jaotatud. Kuna andmed jaotamata slotidel ei ole nagunii kĂ€tte saadavad, on liiga hilja muretseda nende slotide kĂ€ttesaadavuse probleemide pĂ€rast. Omakorda ei mĂ”juta operatsioon jagatud slotte.
- Teine kasulik operatsioon on monitor. See vÔimaldab reaalajas nÀha kogu pÀringute nimekirja, mis lÀhevad sÔlmele. Lisaks on vÔimalik selle pÔhjal teha grep ja vÀlja selgitada, kas vajalik liiklus on olemas.
Samuti tasub mainida meistrinĂ”ude varuakna vahetuse protseduuri. LĂŒhidalt öeldes, see on olemas ja minu arvates töötab see suurepĂ€raselt. Kuid Ă€rge arvake, et kui tĂ”mbate toitekaabli vĂ€lja masina meistrinĂ”udest, siis Redis vahetub koheselt ja kliendid ei tunne katkestust. Minu kogemuse jĂ€rgi toimub vahetus mĂ”ne sekundi jooksul. Selle aja jooksul on osa andmeid kergesti kĂ€ttesaamatud: tuvastatakse meistrinĂ”ude katkemine, sĂ”lmed hÀÀletavad uue eest, orjad vahetavad ja andmed sĂŒnkroonitakse. Parim viis veenduda, et skeem töötab, on lĂ€bi viia kohalikud harjutused. Kinnita klaster oma sĂŒlearvutisse, anna minimaalne koormus, simuleeri kokkuvarisemist (nĂ€iteks blokeerides pordid), hinda vahetuse kiirus. Minu arvates ainult mĂ€ngides sellega pĂ€ev vĂ”i kaks, saab olla kindel tehnoloogia töös. VĂ”i loota, et tarkvara, mida kasutab pool internetist, kindlasti töötab.
Konfiguratsioon
Sageli on konfiguratsioon esimene asi, mis on vajalik töö alustamiseks tööriistaga. Ja kui kÔik töötab, ei taha konfiguratsiooniga tegeleda. TÔenÀoliselt on vaja teatud pingutust, et sundida end tagasi seadete juurde ja hoolikalt neid lÀbi vaadata. Minu mÀletamist mööda on meil olnud vÀhemalt kaks tÔsist ebaÔnnestumist konfiguratsioonist tÀhelepanematuse tÔttu. Pöörake erilist tÀhelepanu jÀrgmistele punktidele:
- timeout 0
Aeg, mille pĂ€rast suletakse mitteaktiivsed ĂŒhendused (sekundites). 0 â ei sulgeda.
Meie raamatukogud ei osanud igaĂŒht Ă”igesti sulgeda. Selle seadistuse vĂ€ljalĂŒlitamine paneb meid silmitsi kliendide arvu piirangu probleemiga. Teisest kĂŒljest, kui selline probleem olemas on, siis automaatne kadunud ĂŒhenduste katkestamine varjab selle, ja me vĂ”ime seda mĂ€rkamata jÀÀda. Samuti ei tohi seda seadistust sisselĂŒlitamisega kasutada jĂ€rjepidevate ĂŒhenduste puhul. - Save x y & appendonly yes
RDB-snapshooti salvestamine.
RDB/AOF probleemid, mida arutame allpool. - stop-writes-on-bgsave-error no & slave-serve-stale-data yes
Kui see on lubatud, siis RDB-snapshooti rikke korral lĂ”petab meister muudatuse pĂ€ringute vastuvĂ”tmise. Kui ĂŒhendus meistriga katke, siis orjad vĂ”ivad jĂ€tkata pĂ€ringutele vastamist (jah). VĂ”i lĂ”petab (ei).
Me ei ole rahul olukorraga, kus Redis muutub kÔrvitsaks. - repl-ping-slave-period 5
Selle ajavahemiku jooksul hakkame muretsema selle ĂŒle, et meistriga on midagi valesti ja on aeg failover'i protseduur lĂ€bi viia.
Peame kÀsitsi leidma tasakaalu valehÀirete ja failover'i kÀivitamise vahel. Meie praktika kohaselt on see 5 sekundit. - repl-backlog-size 1024mb & epl-backlog-ttl 0
Just nii palju andmeid saame me salvestada katkenud koopiate puhvris. Kui puhvripaik lĂ”petab töötamise, tuleb tĂ€ielikult sĂŒnkroonida.
Praktika nĂ€itab, et on parem seada suurem vÀÀrtus. PĂ”hjusi, miks koopia vĂ”ib maha jÀÀda, on palju. Kui see jÀÀb maha, siis tĂ”enĂ€oliselt suudab teie meister juba raskustega toime tulla ja tĂ€ielik sĂŒnkroonimine muutub viimaseks taastumisvĂ”imaluseks. - maxclients 10000
Maksimaalne samal ajal ĂŒhendatud klientide arv.
Meie kogemuse kohaselt on parem seada kĂ”rgem vÀÀrtus. Redis suudab suurepĂ€raselt hallata 10 tuhat ĂŒhendust. Ainult veenduge, et sĂŒsteemis oleks piisavalt sokette. - maxmemory-policy volatile-ttl
Reegel, mille jÀrgi eemaldatakse vÔtmed, kui saavutatakse vaba mÀlu piir.
Siin on tÀhtis mitte niivÔrd reegel, vaid arusaam, kuidas see protsess toimub. Redisit saab kiita selle eest, et ta suudab hÀsti töötada mÀlu piiri saavutamisel.
RDB ja AOF probleemid
Kuigi Redis ise salvestab kogu teabe mÀlus, on ka mehhanism andmete salvestamiseks ketta peale. TÀpsemalt öeldes on kolm mehhanismi:
- RDB-snapshoot â kĂ”ikide andmete tĂ€ielik koopiatega. Seadetakse konfigureerimise SAVE X Y abil ja loetakse nagu "Salvesta kĂ”ikide andmete tĂ€ielik koopi iga X sekundi jĂ€rel, kui on vĂ€hemalt Y vĂ”tme muudatus."
- Append-only file â tehingute loend nende tĂ€itmise jĂ€rjekorras. Uued saabunud tehingud kirjutatakse faili iga X sekundi vĂ”i Y tehingu jĂ€rel.
- RDB ja AOF â kahe eelmise kombinatsioon.
Katalooge kÔigil meetoditel on oma eelised ja puudused, ma ei hakka neid kÔiki loetlema, vaid toome vÀlja mÔned minu arvates mitte ilmseid punkte.
Esiteks, RDB-snepĆĄoti salvestamiseks tuleb kutsuda FORK. Kui andmeid on palju, vĂ”ib see peatada kogu Redis'i ajaks paarist millisekundist kuni sekundini. Lisaks peab sĂŒsteem eraldama mĂ€lu sellise koopia jaoks, mis tĂ€hendab, et loogilisel masinal peab olema topeltmĂ€lu varu: kui Redis'ile on eraldatud 8 GB, siis virtuaalmasinal peab olema saada 16.
Teiseks, on osalise sĂŒnkroonimisega probleeme. AOF-reĆŸiimis vĂ”ib slave'i uuesti ĂŒhendamisel toimuda tĂ€ielik sĂŒnkroonimine, mitte osaline. Miks see nii on, ei suutnud ma aru saada. Kuid sellest on hea meeles pidada.
Need kaks punkti panevad juba mÔtlema, kas on tÔesti vajalik, et need andmed oleksid kettal, kui slave'id juba kÔike dubleerivad. Andmed vÔib kaotada ainult juhul, kui kÔik slave'id ebaÔnnestuvad, ja see on probleem, mis sarnaneb 'tulekahjule andmekeskuses'. Kompromissina vÔib pakkuda, et andmeid hoitakse ainult slave'ides, kuid sel juhul tuleb veenduda, et need slave'id ei muutuks kunagi hÀdaolukorra taastamisel masteriks (selle jaoks on olemas slaavi prioriteedi seadistus nende konfiguratsioonis). Iga konkreetse juhtumi puhul mÔtleme, kas on vajalik andmed kettale salvestada, ja enamasti vastame "ei".
KokkuvÔte
KokkuvĂ”tteks loodan, et suutsin anda ĂŒldise teadlikkuse redis-cluster-i toimimisest neile, kes ei ole sellest kunagi kuulnud, ning pöörata tĂ€helepanu mitmetele mitte-ilmselgedele aspektidele neile, kes on juba pikka aega seda kasutanud.
AitÀh, et leidsite aega ja nagu tavaliselt, on teemakohased kommentaarid teretulnud.
Allikas: habr.com
