Дар бораи гузаштан аз Redis ба Redis-cluster

Дар бораи гузаштан аз Redis ба Redis-cluster

Дар мавриди маҳсулоте, ки дар тӯли зиёда аз даҳ сол таҳия шудааст, дар он пайдо кардани технологияҳои кӯҳна тааҷҷубовар нест. Аммо чӣ мешавад, агар дар давоми шаш моҳ шумо бояд бори 10 маротиба зиёдтар нигоҳ доред ва арзиши афтидан садҳо маротиба зиёд шавад? Дар ин ҳолат, ба шумо як муҳандиси баланди баланд лозим аст. Аммо дар набудани каниз халли масъаларо ба ман супурданд. Дар қисми аввали мақола ман ба шумо мегӯям, ки чӣ тавр мо аз Redis ба Redis-cluster гузаштем ва дар қисми дуюм ман маслиҳат медиҳам, ки чӣ тавр истифода бурдани кластерро оғоз кунем ва ҳангоми истифодаи он ба чӣ таваҷҷӯҳ кунем.

Интихоби технология

Оё ин қадар бад? Redis алоҳида (redis мустақил) дар конфигуратсияи 1 усто ва N ғуломон? Чаро ман онро технологияи кӯҳна меномам?

Не, Редис он кадар бад нест... Бо вучуди ин баъзе камбудидое хастанд, ки аз ондо чашм пушидан мумкин нест.

  • Аввалан, Redis механизмҳои барқарорсозии офатҳои табиӣ пас аз нокомии усторо дастгирӣ намекунад. Барои ҳалли ин мушкилот, мо конфигуратсияро бо интиқоли автоматии VIP-ҳо ба устоди нав, тағир додани нақши яке аз ғуломон ва иваз кардани боқимонда истифода кардем. Ин механизм кор мекард, вале онро халли боэътимод номидан мумкин нест. Аввалан, сигналҳои бардурӯғ ба амал омадаанд, дуюм, он якдафъаина буд ва пас аз истифода барои пур кардани пружа амали дастӣ лозим буд.

  • Сониян, танхо як устод доштан ба мушкили кандакорй оварда расонд. Ба мо лозим омад, ки якчанд кластерҳои мустақили "1 усто ва N ғуломон" эҷод кунем, пас базаҳои маълумотро дар байни ин мошинҳо дастӣ тақсим кунем ва умедворем, ки фардо яке аз пойгоҳи додаҳо он қадар варам намекунад, ки онро ба як мисоли алоҳида интиқол додан лозим аст.

Имкониятҳо чӣ гунаанд?

  • Қарортарин ва сарватмандтарин ҳалли Redis-Enterprise мебошад. Ин як ҳалли қуттӣ бо дастгирии пурраи техникӣ мебошад. Сарфи назар аз он, ки вай аз чихати техникй идеалй менамояд, бо сабабхои идеологи ба мо мувофик набуд.
  • Redis-кластер. Аз қуттӣ пуштибонии нокомии усто ва sharding мавҷуд аст. Интерфейс аз версияи муқаррарӣ қариб фарқ надорад. Ин умедбахш ба назар мерасад, мо дар бораи домҳо баъдтар сӯҳбат хоҳем кард.
  • Tarantool, Memcache, Aerospike ва дигарон. Ҳамаи ин асбобҳо тақрибан як чизро иҷро мекунанд. Аммо ҳар яки онҳо камбудиҳои худро доранд. Мо карор додем, ки тамоми тухмамонро дар як сабад нагузорем. Мо Memcache ва Tarantool-ро барои дигар вазифаҳо истифода мебарем ва ба пеш нигоҳ карда мегӯям, ки дар амалияи мо бо онҳо мушкилот бештар буданд.

Хусусиятҳои истифода

Биёед бубинем, ки мо таърихан бо Redis кадом мушкилотро ҳал кардаем ва кадом функсияҳоро истифода кардем:

  • Кэш пеш аз дархост ба хидматҳои дурдаст ба монанди 2GIS | Голанг

    GET SET MGET MSET "SELECT DB"

  • Кэш пеш аз MYSQL | PHP

    Сканкунии MGET MSET-ро насб кунед "КАЛИД АЗ РУИ НАКШ" "Интихоби DB"

  • Захираи асосӣ барои хидматрасонии кор бо сеансҳо ва координатаҳои ронанда | Голанг

    ГИРИФТАНИ Скан MGET MSET "SELECT DB" "ADD GEO KEY" "GET GEO KEY" Scan

Тавре ки шумо мебинед, математикаи олӣ нест. Пас душворӣ чист? Биёед ҳар як усулро алоҳида дида бароем.

метод
Шарҳи
Хусусиятҳои Redis-cluster
ҳалли

ГУЗОРЕД
Калиди навиштан/хондан

MGET MSET
Якчанд калидҳоро нависед/хонед
Калидҳо дар гиреҳҳои гуногун хоҳанд буд. Китобхонаҳои тайёр танҳо дар дохили як гиреҳ амалҳои чандкаратаро иҷро карда метавонанд
MGET-ро бо қубури амалиёти N GET иваз кунед

ИНТИХОБИ DB
Пойгоҳеро интихоб кунед, ки мо бо он кор хоҳем кард
Якчанд пойгоҳи додаҳоро дастгирӣ намекунад
Ҳама чизро дар як пойгоҳи додаҳо ҷойгир кунед. Ба калидҳо префиксҳо илова кунед

SCAN
Аз тамоми калидҳои базаи маълумот гузаред
Азбаски мо як пойгоҳи додаҳо дорем, гузаштан аз ҳамаи калидҳо дар кластер хеле гарон аст
Инвариантро дар як калид нигоҳ доред ва дар ин калид HSCAN иҷро кунед. Ё тамоман рад кунед

гео
Амалиёт бо геокэй
Геокей тақсим карда нашудааст

КАЛИД БО НАКШ
Ҷустуҷӯи калид аз рӯи намуна
Азбаски мо як пойгоҳи додаҳо дорем, мо дар тамоми калидҳои кластер ҷустуҷӯ хоҳем кард. Хеле қимат
Инвариантро рад кунед ё нигоҳ доред, ба мисли SCAN

Redis против Redis-cluster

Ҳангоми гузаштан ба кластер мо чиро аз даст медиҳем ва чӣ фоида мегирем?

  • Камбудиҳо: мо функсияҳои якчанд пойгоҳи додаҳоро аз даст медиҳем.
    • Агар мо хоҳем, ки маълумоти аз ҷиҳати мантиқӣ алоқамандро дар як кластер нигоҳ дорем, мо бояд асобағолҳоро дар шакли префиксҳо созем.
    • Мо ҳама амалиёти "базавӣ" -ро аз қабили SCAN, DBSIZE, CLEAR DB ва ғайра гум мекунем.
    • Амалиётҳои бисёрҷониба хеле мушкилтар шудаанд, зеро он метавонад дастрасӣ ба якчанд гиреҳҳоро талаб кунад.
  • Бештар
    • Таҳаммулпазирии хатогиҳо дар шакли хатогиҳои усто.
    • Шардинг дар тарафи Редис.
    • Интиқоли маълумот байни гиреҳҳо ба таври атомӣ ва бе вақти бекорӣ.
    • Иқтидорҳо ва борҳоро бидуни бекоркунӣ илова ва аз нав тақсим кунед.

Ман ба хулосае омадам, ки агар ба шумо сатҳи баланди таҳаммулпазирии хатогиҳо лозим набошад, пас гузаштан ба кластер арзанда нест, зеро он метавонад кори ғайриоддӣ бошад. Аммо агар шумо дар аввал байни версияи алоҳида ва версияи кластер интихоб кунед, пас шумо бояд кластерро интихоб кунед, зеро ин бадтар нест ва илова бар ин, шуморо аз баъзе дарди сар халос мекунад.

Омодагӣ ба ҳаракат

Биёед бо талабот барои ҳаракат оғоз кунем:

  • Он бояд бефосила бошад. Қатъи пурраи хидмат барои 5 дақиқа ба мо мувофиқ нест.
  • Он бояд то ҳадди имкон бехатар ва тадриҷан бошад. Ман мехоҳам, ки вазъиятро каме назорат кунам. Мо намехоҳем, ки ҳама чизро якбора партофта, дар болои тугмаи бозгашт дуо гӯем.
  • Ҳадди ақали талафоти маълумот ҳангоми ҳаракат. Мо мефаҳмем, ки ба таври атомӣ ҳаракат кардан хеле душвор хоҳад буд, аз ин рӯ мо имкон медиҳем, ки байни маълумотҳо дар Редисҳои муқаррарӣ ва кластерӣ баъзе десинхронизатсия карда шаванд.

Нигоҳдории кластер

Пеш аз кӯчидан, мо бояд дар бораи он фикр кунем, ки оё мо кластерро дастгирӣ карда метавонем:

  • Диаграммаҳо. Мо Prometheus ва Grafana-ро барои графики сарбории CPU, истифодаи хотира, шумораи муштариён, шумораи амалиёти GET, SET, AUTH ва ғайра истифода мебарем.
  • Экспертиза. Тасаввур кунед, ки фардо шумо як кластери азимро зери масъулияти худ хоҳед дошт. Агар вайрон шавад, ба ҷуз шумо касе онро ислоҳ карда наметавонад. Агар ӯ суст шуданро оғоз кунад, ҳама ба сӯи шумо медаванд. Агар ба шумо лозим ояд, ки захираҳоро илова кунед ё бори дубора тақсим кунед, ба назди шумо баргардед. Барои он ки дар синни 25-солагӣ хокистарӣ нашавад, тавсия дода мешавад, ки ин ҳолатҳоро таъмин кунед ва пешакӣ санҷед, ки технология дар амалҳои муайян чӣ гуна рафтор хоҳад кард. Биёед дар ин бора дар бахши «Экспертиза» муфассалтар сӯҳбат кунем.
  • Мониторинг ва огоҳиҳо. Вақте ки кластер вайрон мешавад, шумо мехоҳед, ки аввалин шуда дар бораи он огоҳ шавед. Дар ин ҷо мо худро бо огоҳӣ маҳдуд кардем, ки ҳама гиреҳҳо як маълумотро дар бораи ҳолати кластер бармегардонанд (бале, ин ба таври дигар рух медиҳад). Ва мушкилоти дигарро тавассути огоҳиҳо аз хидматрасонии муштариёни Redis зудтар мушоҳида кардан мумкин аст.

Гузаштан

Мо чӣ гуна ҳаракат мекунем:

  • Пеш аз ҳама, шумо бояд китобхонаро барои кор бо кластер омода кунед. Мо go-redis-ро ҳамчун асос барои версияи Go гирифтем ва онро каме тағир додем, то ба худамон мувофиқат кунад. Мо усулҳои бисёрҷонибаро тавассути қубурҳо татбиқ кардем ва инчунин қоидаҳои такрори дархостҳоро каме ислоҳ кардем. Версияи PHP мушкилоти бештар дошт, аммо мо дар ниҳоят ба php-redis қарор гирифтем. Онҳо ба наздикӣ дастгирии кластерро ҷорӣ карданд ва ба назари мо, он хуб ба назар мерасад.
  • Минбаъд шумо бояд худи кластерро ҷойгир кунед. Ин аслан дар ду фармон дар асоси файли конфигуратсия анҷом дода мешавад. Мо танзимотро дар зер муфассалтар муҳокима хоҳем кард.
  • Барои тадриҷан ҳаракат кардан мо реҷаи хушкро истифода мебарем. Азбаски мо ду версияи китобхона бо интерфейси якхела дорем (яке барои версияи муқаррарӣ, дигаре барои кластер), барои эҷоди парпеч, ки бо версияи алоҳида кор мекунад ва дар баробари такрори ҳама дархостҳо ба кластер, ҳеҷ арзише надорад. ҷавобҳоро муқоиса кунед ва дар гузоришҳо ихтилофот нависед (дар ҳолати мо дар NewRelic). Ҳамин тариқ, ҳатто агар версияи кластер ҳангоми паҳнкунӣ вайрон шавад, ба истеҳсоли мо таъсир намерасонад.
  • Пас аз паҳн кардани кластер дар ҳолати хушк, мо метавонем оромона ба графики номутобиқатии посух назар кунем. Агар сатҳи хатогиҳо оҳиста, вале бешубҳа ба ягон доимии хурд ҳаракат кунанд, ҳама чиз хуб аст. Чаро то ҳол ихтилофҳо вуҷуд доранд? Азбаски сабт дар версияи алоҳида назар ба кластер каме пештар сурат мегирад ва аз сабаби microlag, маълумот метавонад аз ҳам ҷудо шавад. Танҳо дидани сабтҳои номувофиқӣ боқӣ мемонад ва агар ҳамаи онҳо бо набудани атомии сабт шарҳ дода шаванд, мо метавонем идома диҳем.
  • Акнун шумо метавонед ҳолати хушкро ба самти муқобил гузаред. Мо аз кластер менависем ва мехонем ва онро ба версияи алоҳида такрор мекунем. Барои чӣ? Дар давоми ҳафтаи оянда ман мехоҳам кори кластерро мушоҳида кунам. Агар ногаҳон маълум шавад, ки дар сарбории баланд мушкилот вуҷуд доранд ё мо чизеро ба инобат нагирифтаем, мо ҳамеша ба шарофати режими хушк ба рамзи кӯҳна ва маълумоти ҷорӣ баргашти фавқулодда дорем.
  • Танҳо хомӯш кардани режими хушк ва барҳам додани версияи алоҳида боқӣ мемонад.

Экспертиза

Аввалан, мухтасар дар бораи тарҳрезии кластер.

Пеш аз ҳама, Redis як мағозаи арзишманд аст. Ба сифати калидҳо сатрҳои худсарона истифода мешаванд. Рақамҳо, сатрҳо ва тамоми сохторҳо метавонанд ҳамчун арзиш истифода шаванд. Бисёре аз охиринҳо ҳастанд, аммо барои фаҳмидани сохтори умумӣ ин барои мо муҳим нест.
Сатҳи навбатии абстраксия пас аз калидҳо слотҳо (SLOTS) мебошад. Ҳар як калид ба яке аз 16 слот тааллуқ дорад. Дар дохили ҳар як слот метавонад шумораи дилхоҳи калидҳо бошад. Ҳамин тариқ, ҳамаи калидҳо ба 383 маҷмӯи ҷудошуда тақсим карда мешаванд.
Дар бораи гузаштан аз Redis ба Redis-cluster

Минбаъд, дар кластер бояд N гиреҳи асосӣ бошад. Ҳар як гиреҳро метавон ҳамчун як мисоли алоҳидаи Redis баррасӣ кард, ки ҳама чизро дар бораи гиреҳҳои дигари кластер медонад. Ҳар як гиреҳи асосӣ дорои як қатор слотҳо мебошад. Ҳар як слот танҳо ба як гиреҳи асосӣ тааллуқ дорад. Ҳама слотҳо бояд дар байни гиреҳҳо тақсим карда шаванд. Агар баъзе слотҳо ҷудо карда нашуда бошанд, пас калидҳои дар онҳо нигоҳ дошташуда дастнорас хоҳанд буд. Иҷро кардани ҳар як гиреҳи асосӣ дар мошини алоҳидаи мантиқӣ ё физикӣ маъно дорад. Инчунин бояд дар хотир дошт, ки ҳар як гиреҳ танҳо дар як ядро ​​​​кор мекунад ва агар шумо хоҳед, ки якчанд мисолҳои Redis-ро дар як мошини мантиқӣ иҷро кунед, боварӣ ҳосил кунед, ки онҳо дар ядроҳои гуногун кор мекунанд (мо ин корро надидаем, аммо дар назария он бояд кор кунад) . Аслан, гиреҳҳои асосӣ мубодилаи мунтазамро таъмин мекунанд ва гиреҳҳои бештари устод имкон медиҳанд, ки дархостҳои навиштан ва хонданро васеъ кунанд.

Пас аз он ки ҳамаи калидҳо дар байни слотҳо тақсим карда мешаванд ва слотҳо дар байни гиреҳҳои асосӣ пароканда мешаванд, ба ҳар як гиреҳи асосӣ шумораи ихтиёрии гиреҳҳои ғуломро илова кардан мумкин аст. Дар дохили ҳар як чунин пайванди усто-ғулом, такрори муқаррарӣ кор хоҳад кард. Барои миқёси дархостҳои хондан ва дар ҳолати нокомии усто ғуломон лозиманд.
Дар бораи гузаштан аз Redis ба Redis-cluster

Акнун биёед дар бораи амалиётхое сухан ронем, ки ин корро кардан бехтар мебуд.

Мо тавассути Redis-CLI ба система ворид мешавем. Азбаски Redis як нуқтаи вуруд надорад, шумо метавонед амалҳои зеринро дар ҳама гуна гиреҳҳо иҷро кунед. Дар ҳар як нуқта ман диққати худро ба имкони иҷрои амалиёт дар зери бори алоҳида ҷалб мекунам.

  • Аввалин ва муҳимтарин чизе, ки ба мо лозим аст, ин амалиёти гиреҳҳои кластерӣ мебошад. Он ҳолати кластерро бармегардонад, рӯйхати гиреҳҳо, нақшҳо, тақсимоти слот ва ғайраро нишон медиҳад. Маълумоти бештарро метавон бо истифода аз маълумоти кластер ва слотҳои кластер ба даст овард.
  • Хуб мешуд, ки гиреҳҳоро илова ва хориҷ кардан мумкин буд. Бо ин мақсад амалиётҳои вохӯрии кластер ва фаромӯшкунии кластер мавҷуданд. Лутфан қайд кунед, ки кластер фаромӯш бояд ба ҲАР гиреҳ, ҳам устоҳо ва ҳам репликаҳо татбиқ карда шавад. Ва вохӯрии кластер танҳо бояд дар як гиреҳ даъват карда шавад. Ин тафовут метавонад ташвишовар бошад, аз ин рӯ беҳтар аст, ки пеш аз он ки бо кластери худ зиндагӣ кунед, дар бораи он маълумот гиред. Илова кардани гиреҳ дар ҷанг бехатар анҷом дода мешавад ва ба ҳеҷ ваҷҳ ба кори кластер таъсир намерасонад (ки мантиқист). Агар шумо гиреҳро аз кластер хориҷ карданӣ бошед, шумо бояд боварӣ ҳосил кунед, ки дар он ягон слот боқӣ намондааст (дар акси ҳол шумо хатари дастрасӣ ба ҳамаи калидҳои ин гиреҳро аз даст медиҳед). Инчунин, устодеро, ки ғуломон дорад, нест накунед, вагарна овоздиҳии нолозим барои оғои нав анҷом дода мешавад. Агар гиреҳҳо дигар слот надошта бошанд, пас ин як мушкилоти хурд аст, аммо чаро ба мо интихоби иловагӣ лозим аст, агар мо аввал ғуломҳоро нест карда тавонем.
  • Агар ба шумо лозим ояд, ки мавқеъҳои усто ва ғуломро маҷбуран иваз кунед, он гоҳ фармони шикастани кластер иҷро мешавад. Ҳангоми даъват кардани он дар ҷанг, шумо бояд фаҳмед, ки усто дар давоми амалиёт дастрас нест. Одатан, гузариш дар камтар аз як сония рух медиҳад, аммо атомӣ нест. Шумо метавонед интизор шавед, ки дар ин муддат баъзе дархостҳо ба устод ноком мешаванд.
  • Пеш аз он ки гиреҳ аз кластер хориҷ карда шавад, дар он ҷойҳо набояд боқӣ монанд. Беҳтар аст, ки онҳоро бо истифода аз фармони cluster reshard дубора тақсим кунед. Ҷойҳо аз як усто ба дигараш интиқол дода мешаванд. Тамоми амалиёт метавонад якчанд дақиқа тӯл кашад, он аз ҳаҷми додаҳои интиқолшаванда вобаста аст, аммо раванди интиқол бехатар аст ва ба ҳеҷ ваҷҳ ба кори кластер таъсир намерасонад. Ҳамин тариқ, ҳама маълумотро аз як гиреҳ ба гиреҳи дигар мустақиман дар зери сарборӣ ва бидуни ташвиш дар бораи мавҷудияти он интиқол додан мумкин аст. Бо вуҷуди ин, нозукиҳо низ ҳастанд. Аввалан, интиқоли маълумот бо сарбории муайян ба гиреҳҳои қабулкунанда ва ирсолкунанда алоқаманд аст. Агар гиреҳи қабулкунанда аллакай ба протсессор сахт бор карда шуда бошад, пас шумо набояд онро бо гирифтани маълумоти нав бор кунед. Сониян, вақте ки дар устоди ирсолкунанда ягон слот боқӣ намондааст, ҳама ғуломони он фавран ба устое, ки ин слотҳо ба он интиқол дода шудаанд, мераванд. Ва мушкилот дар он аст, ки ҳамаи ин ғуломон мехоҳанд, ки маълумотро якбора ҳамоҳанг созанд. Ва шумо хушбахт хоҳед буд, агар он қисман бошад, на ҳамоҳангсозии пурра. Инро ба назар гиред ва амалиёти интиқоли слотҳо ва ғайрифаъол/интиқоли ғуломонро якҷоя кунед. Ё умедворед, ки шумо маржаи кофии бехатарӣ доред.
  • Чӣ бояд кард, агар ҳангоми интиқол шумо фаҳмед, ки шумо дар ҷое слотҳои худро гум кардаед? Ман умедворам, ки ин мушкилот ба шумо таъсир намерасонад, аммо агар ин тавр шавад, амалиёти ислоҳи кластер вуҷуд дорад. Ҳадди аққал, вай слотҳоро дар саросари гиреҳҳо бо тартиби тасодуфӣ пароканда мекунад. Ман тавсия медиҳам, ки кори онро тавассути хориҷ кардани гиреҳ бо слотҳои тақсимшуда аз кластер тафтиш кунед. Азбаски маълумот дар слотҳои ҷудонашуда аллакай дастрас нест, дар бораи мушкилот бо мавҷудияти ин слотҳо хавотир шудан хеле дер аст. Дар навбати худ, амалиёт ба слотҳои тақсимшуда таъсир намерасонад.
  • Амалиёти дигари муфид ин монитор аст. Он ба шумо имкон медиҳад, ки дар вақти воқеӣ тамоми рӯйхати дархостҳоеро, ки ба гиреҳ меоянд, бубинед. Ғайр аз он, шумо метавонед онро тафтиш кунед ва фаҳмед, ки трафики зарурӣ вуҷуд дорад.

Инчунин бояд тартиби нокомии усторо зикр кард. Хулоса, он вуҷуд дорад ва ба назари ман, он хеле хуб кор мекунад. Аммо, фикр накунед, ки агар шумо сими барқро дар мошин бо гиреҳи усто ҷудо кунед, Редис фавран иваз мешавад ва муштариён талафотро пай намебаранд. Дар амалияи ман, гузариш дар якчанд сония ба амал меояд. Дар давоми ин вақт, баъзе маълумотҳо дастнорас хоҳанд буд: дастнорас будани устод муайян карда мешавад, гиреҳҳо ба нав овоз медиҳанд, ғуломон иваз карда мешаванд, маълумот ҳамоҳанг карда мешавад. Роҳи беҳтарини боварӣ ҳосил кардани он, ки схема кор мекунад, ин гузаронидани машқҳои маҳаллӣ мебошад. Кластерро дар ноутбуки худ баланд кунед, ба он ҳадди аққал сарборӣ диҳед, садамаро тақлид кунед (масалан, бо бастани портҳо) ва суръати гузаришро арзёбӣ кунед. Ба фикри ман, танхо баъди як-ду руз бо хамин тарз бозй кардан ба кори техника боварй хосил кардан мумкин аст. Хуб, ё умедворем, ки нармафзоре, ки нисфи Интернет истифода мебарад, эҳтимол кор мекунад.

Танзимот

Аксар вақт, конфигуратсия аввалин чизест, ки шумо бояд бо асбоб кор кунед ва вақте ки ҳама чиз кор мекунад, шумо ҳатто намехоҳед, ки конфигуратсияро ламс кунед. Барои он ки худро маҷбур кунед, ки ба танзимот баргардед ва бодиққат аз онҳо гузаред. Дар хотираи ман, мо аз сабаби беэътиноӣ ба конфигуратсия ҳадди аққал ду нокомии ҷиддӣ доштем. Ба нуктаҳои зерин диққати махсус диҳед:

  • мӯҳлати 0
    Вақте, ки пас аз он пайвастҳои ғайрифаъол баста мешаванд (дар сония). 0 - напӯшед
    На ҳама китобхонаи мо тавонистаанд робитаҳоро дуруст банданд. Бо ғайрифаъол кардани ин танзим, мо хатари расидан ба маҳдудияти шумораи муштариёнро дорем. Аз тарафи дигар, агар чунин мушкилот вуҷуд дошта бошад, он гоҳ қатъи автоматии пайвастҳои гумшуда онро ниқоб мекунад ва мо шояд пайхас накунем. Илова бар ин, ҳангоми истифодаи пайвастагиҳои доимӣ шумо набояд ин танзимотро фаъол созед.
  • xy захира кунед ва ҳа
    Нигоҳ доштани акси RDB.
    Мо дар поён масъалахои РДБ/АОФ-ро муфассал мухокима мекунем.
  • stop-writes-on-bgsave-error не ва slave-serve-stale-data ҳа
    Агар фаъол бошад, агар тасвири RDB вайрон шавад, усто қабули дархостҳои тағирро қатъ мекунад. Агар пайвастшавӣ бо устод гум шавад, ғулом метавонад ба дархостҳо посух диҳад (ҳа). Ё ҷавоб доданро бас мекунад (не)
    Мо аз вазъияте, ки Редис ба каду табдил меёбад, хурсанд нестем.
  • repl-ping-давраи ғуломӣ 5
    Пас аз ин муддат, мо хавотир мешавем, ки усто вайрон шудааст ва вақти он расидааст, ки тартиби нокомиро иҷро кунем.
    Шумо бояд ба таври дастӣ мувозинат байни мусбатҳои бардурӯғ ва ангеза додани хатогиро пайдо кунед. Дар амалияи мо ин 5 сония аст.
  • repl-backlog-андозаи 1024mb ва epl-backlog-ttl 0
    Мо метавонем маҳз ин қадар маълумотро дар буфер барои репликаи ноком нигоҳ дорем. Агар буфер тамом шавад, шумо бояд комилан ҳамоҳанг созед.
    Амалия нишон медиҳад, ки беҳтар аст, ки арзиши баландтар муқаррар карда шавад. Сабабҳои зиёде мавҷуданд, ки чаро реплика метавонад ба ақибнишинӣ шурӯъ кунад. Агар он ақиб монад, пас эҳтимол дорад, ки устоди шумо аллакай барои мубориза бурдан мубориза мебарад ва ҳамоҳангсозии пурра кохи охирин хоҳад буд.
  • maxclients 10000
    Шумораи максималии муштариёни яквақта.
    Дар таҷрибаи мо беҳтар аст, ки арзиши баландтар муқаррар карда шавад. Redis 10k пайвастро хуб идора мекунад. Танҳо боварӣ ҳосил кунед, ки дар система розеткаҳои кофӣ мавҷуданд.
  • maxmemory-policy volatile-ttl
    Қоидае, ки ҳангоми расидан ба маҳдудияти хотираи дастрас калидҳо нест карда мешаванд.
    Дар ин ҷо муҳим он чизест, ки худи қоида нест, балки фаҳмидани он аст, ки ин чӣ гуна сурат мегирад. Редисро барои қобилияти кор карданаш ҳангоми расидан ба маҳдудияти хотира ситоиш кардан мумкин аст.

Проблемахои RDB ва AOF

Гарчанде ки худи Redis тамоми маълумотро дар хотираи оперативӣ нигоҳ медорад, механизми захира кардани маълумот дар диск низ вуҷуд дорад. Аниқтараш, се механизм:

  • RDB-snapshot - акси пурраи ҳама маълумот. Бо истифода аз конфигуратсияи SAVE XY насб кунед ва хонда мешавад "Нақшаи пурраи ҳама маълумотро дар ҳар X сония захира кунед, агар ҳадди аққал калидҳои Y тағир ёфта бошанд."
  • Файли танҳо замимашаванда - рӯйхати амалиётҳо бо тартиби иҷрошаванда. Ҳар X сония ё ҳар амалиёти Y ба файл амалиёти нави воридотӣ илова мекунад.
  • RDB ва AOF омезиши дуи қаблӣ мебошанд.

Ҳама усулҳо бартарӣ ва нуқсонҳои худро доранд, ман ҳамаи онҳоро номбар намекунам, ман танҳо ба нуктаҳое таваҷҷӯҳ мекунам, ки ба назари ман, равшан нестанд.

Аввалан, захира кардани тасвири RDB занги FORK-ро талаб мекунад. Агар маълумоти зиёд мавҷуд бошад, ин метавонад тамоми Redis-ро дар тӯли чанд миллисония то як сония овезон кунад. Илова бар ин, система бояд хотираро барои чунин аксбардорӣ ҷудо кунад, ки ин боиси зарурати нигоҳ доштани захираи дукаратаи RAM дар мошини мантиқӣ мегардад: агар барои Redis 8 ГБ ҷудо карда шуда бошад, пас 16 ГБ бояд дар мошини виртуалӣ мавҷуд бошад. он.

Дуюм, мушкилот бо синхронизатсияи қисман вуҷуд доранд. Дар ҳолати AOF, вақте ки ғулом дубора пайваст мешавад, ба ҷои ҳамоҳангсозии қисман, ҳамоҳангсозии пурра метавонад анҷом дода шавад. Чаро ин тавр мешавад, ман фаҳмида наметавонистам. Аммо инро дар хотир доштан бамаврид аст.

Ин ду нукта аллакай моро водор мекунад, ки дар бораи он фикр кунем, ки оё мо воқеан ба ин маълумот дар диск ниёз дорем, агар ҳама чиз аллакай аз ҷониби ғуломон такрор шуда бошад. Маълумот метавонад танҳо дар сурати ноком шудани ҳамаи ғуломон гум шавад ва ин мушкили сатҳи "сӯхтор дар DC" аст. Ҳамчун созиш, шумо метавонед пешниҳод кунед, ки маълумотро танҳо дар ғуломон захира кунед, аммо дар ин ҳолат шумо бояд боварӣ ҳосил кунед, ки ин ғуломон ҳеҷ гоҳ ҳангоми барқарорсозии офатҳо усто нахоҳанд шуд (барои ин дар конфигуратсияи онҳо афзалияти ғулом мавҷуд аст). Барои худамон, дар ҳар як ҳолати мушаххас мо дар бораи он фикр мекунем, ки оё маълумотро дар диск нигоҳ доштан лозим аст ва аксар вақт ҷавоб "не" аст.

хулоса

Хулоса, ман умедворам, ки ман тавонистам дар бораи он ки чӣ гуна редис-кластер барои онҳое, ки дар ин бора умуман нашунидаанд, тасаввуроти умумӣ диҳам ва инчунин ба баъзе нуктаҳои норавшан барои онҳое, ки онро истифода мебаранд, таваҷҷӯҳ зоҳир кардам. ба муддати дуру дароз.
Ташаккур барои вақт ва чун ҳамеша, шарҳҳо дар бораи мавзӯъ хуш омадед.

Манбаъ: will.com

Илова Эзоҳ