Меъморӣ барои нигоҳдорӣ ва мубодилаи аксҳо дар Badoo

Меъморӣ барои нигоҳдорӣ ва мубодилаи аксҳо дар Badoo

Артем Денисов ( bo0rsh201, Badoo)

Badoo бузургтарин сайти знакомств дар ҷаҳон аст. Ҳоло мо дар саросари ҷаҳон тақрибан 330 миллион корбари сабтиномшуда дорем. Аммо он чизе, ки дар заминаи сӯҳбати имрӯзаи мо хеле муҳимтар аст, ин аст, ки мо тақрибан 3 петабайт аксҳои корбаронро нигоҳ медорем. Ҳар рӯз корбарони мо тақрибан 3,5 миллион аксҳои навро бор мекунанд ва сарбории хониш тақрибан аст 80 ҳазор дархост дар як сония. Ин барои пуштибонии мо хеле зиёд аст ва баъзан бо ин мушкилот вуҷуд дорад.

Меъморӣ барои нигоҳдорӣ ва мубодилаи аксҳо дар Badoo

Ман дар бораи тарроҳии ин система, ки дар маҷмӯъ аксҳоро нигоҳ медорад ва мефиристад, сӯҳбат мекунам ва ман онро аз нуқтаи назари таҳиягар дида мебароям. Дар бораи он, ки он чӣ гуна инкишоф ёфтааст, як ретроспективи мухтасар хоҳад буд, ки дар он ман марҳилаҳои асосиро нишон медиҳам, аммо ман танҳо дар бораи қарорҳое, ки мо ҳоло истифода мебарем, муфассалтар гап мезанам.

Акнун биёед оғоз кунем.


Тавре ки гуфтам, ин як ретроспективӣ хоҳад буд ва барои он ки онро дар ҷое оғоз кунем, мисоли маъмултаринро гирем.

Меъморӣ барои нигоҳдорӣ ва мубодилаи аксҳо дар Badoo

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

  • нигоҳдории абрии муосир,
  • ҳалли қуттӣ, ки ҳоло ҳам бисёранд;
  • Мо метавонем дар маркази додаҳои худ якчанд мошинро насб кунем ва ба онҳо дискҳои сахти калон гузорем ва дар он ҷо аксҳоро нигоҳ дорем.

Badoo таърихан - ҳам ҳоло ва ҳам баъд (дар замоне, ки он навзод буд) - дар серверҳои худ, дар дохили DC-ҳои худи мо зиндагӣ мекунад. Аз ин рӯ, ин вариант барои мо оптимал буд.

Меъморӣ барои нигоҳдорӣ ва мубодилаи аксҳо дар Badoo

Мо танҳо якчанд мошин гирифтем, онҳоро "аксҳо" номидем ва мо кластер гирифтем, ки аксҳоро нигоҳ медорад. Аммо ба назар чунин мерасад, ки чизе намерасад. Барои он ки ҳамаи ин кор кунад, мо бояд бо кадом роҳе муайян кунем, ки кадом суратҳоро дар кадом мошин нигоҳ дорем. Ва дар ин чо хам ба кушодани Америка лозим нест.

Меъморӣ барои нигоҳдорӣ ва мубодилаи аксҳо дар Badoo

Мо ба анбори худ баъзе майдонҳоро бо маълумот дар бораи корбарон илова мекунем. Ин калиди тақсимкунӣ хоҳад буд. Дар ҳолати мо, мо онро place_id номидем ва ин id ҷой ба ҷойе, ки аксҳои корбар нигоҳ дошта мешаванд, ишора мекунад. Мо харитаҳо месозем.

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

Ин як нақшаи комилан ночиз аст, аммо он бартариҳои хеле назаррас дорад. Якум ин аст, ки он оддӣ аст, чунон ки ман гуфтам, ва дуюм ин аст, ки бо ин равиш мо метавонем ба осонӣ тавассути интиқоли мошинҳои нав ва илова кардани онҳо ба харита ба таври уфуқӣ миқёс кунем. Ба шумо ягон чизи дигар лозим нест.

Барои мо чанд вакт хамин тавр буд.

Меъморӣ барои нигоҳдорӣ ва мубодилаи аксҳо дар Badoo

Ин тақрибан соли 2009 буд. Онҳо мошинҳо расониданд, ...

Ва дар баъзе мавридҳо мо пай бурдем, ки ин схема камбудиҳои муайян дорад. Камбудиҳо чист?

Пеш аз ҳама, қобилияти маҳдуд вуҷуд дорад. Мо наметавонем он қадар дискҳои сахтро ба як сервери физикӣ, ки мо мехоҳем, бор кунем. Ва ин бо мурури замон ва афзоиши маҷмӯи додаҳо ба як мушкилии муайян табдил ёфтааст.

Ва дуюм. Ин конфигуратсияи ғайриоддии мошинҳост, зеро истифодаи дубораи чунин мошинҳо дар баъзе кластерҳои дигар душвор аст; онҳо хеле мушаххасанд, яъне. онҳо бояд дар иҷрои суст, вале дар айни замон бо як диски сахт калон.

Ин ҳама барои соли 2009 буд, аммо, аслан, ин талаботҳо имрӯз ҳам аҳамият доранд. Мо як ретроспектива дорем, бинобар ин дар соли 2009 бо ин ҳама чиз комилан бад буд.

Ва нуқтаи охирин нарх аст.

Меъморӣ барои нигоҳдорӣ ва мубодилаи аксҳо дар Badoo

Нарх он вақт хеле баланд буд ва мо лозим буд, ки алтернативаҳоро ҷустуҷӯ кунем. Онхое. ба мо лозим буд, ки бо кадом роҳе ҳам фазо дар марказҳои додаҳо ва ҳам серверҳои физикӣ, ки ҳамаи ин дар он ҷойгиранд, беҳтар истифода барем. Ва муҳандисони системаи мо ба омӯзиши васеъ оғоз карданд, ки дар он як қатор вариантҳои гуногунро баррасӣ карданд. Онҳо инчунин ба системаҳои файлии кластерӣ ба монанди PolyCeph ва Luster назар карданд. Мушкилоти иҷроиш ва амалиёти хеле душвор буданд. Онҳо рад карданд. Мо кӯшиш кардем, ки тамоми маълумотро тавассути NFS дар ҳар як мошин насб кунем, то ки онро васеъ кунем. Хондан низ бад рафт, мо ҳалли гуногунро аз фурӯшандагони гуногун санҷидем.

Ва дар ниҳоят, мо тасмим гирифтем, ки ба истилоҳ Шабакаи Майдони нигаҳдорӣ истифода барем.

Меъморӣ барои нигоҳдорӣ ва мубодилаи аксҳо дар Badoo

Инҳо SHD-ҳои калон мебошанд, ки махсус барои нигоҳ доштани миқдори зиёди маълумот пешбинӣ шудаанд. Онҳо рафҳое мебошанд, ки дискҳо доранд, ки дар мошинҳои оптикии ниҳоӣ насб карда шудаанд. ки. мо як навъ ҳавзи мошинҳо дорем, хеле хурд ва ин SHD-ҳо, ки ба мантиқи ирсоли мо шаффофанд, яъне. барои nginx мо ё ягон каси дигар ба дархостҳо барои ин аксҳо.

Ин карор бартарихои ошкоро дошт. Ин SHD аст. Он барои нигоҳ доштани аксҳо нигаронида шудааст. Ин назар ба таҷҳизонидани мошинҳо бо дискҳои сахт арзонтар аст.

Плюс дуюм.

Меъморӣ барои нигоҳдорӣ ва мубодилаи аксҳо дар Badoo

Ин аст, ки иқтидор хеле калонтар шудааст, яъне. мо метавонем нигоҳдории бештарро дар ҳаҷми хеле хурдтар ҷойгир кунем.

Аммо камбудиҳо низ буданд, ки хеле зуд пайдо шуданд. Бо афзоиши шумораи корбарон ва сарбории ин система, мушкилоти иҷроиш ба миён омаданд. Ва мушкилот дар ин ҷо хеле равшан аст - ҳама гуна SHD барои нигоҳ доштани аксҳои зиёд дар ҳаҷми хурд тарҳрезӣ шудааст, чун қоида, аз хондани пуршиддат азоб мекашад. Ин воқеан барои ҳама гуна нигоҳдории абр ё чизи дигар дуруст аст. Ҳоло мо анбори идеалие надорем, ки беохир миқёспазир бошад, шумо метавонед ҳама чизро ба он ҷо кунед ва он хонишро хеле хуб таҳаммул мекунад. Махсусан хонишҳои тасодуфӣ.

Меъморӣ барои нигоҳдорӣ ва мубодилаи аксҳо дар Badoo

Мисли аксҳои мо, зеро аксҳо номувофиқ дархост карда мешаванд ва ин ба иҷрои онҳо таъсири калон мерасонад.

Ҳатто мувофиқи рақамҳои имрӯза, агар мо дар ҷое беш аз 500 RPS барои аксҳо дар мошине, ки нигоҳдорӣ ба он пайваст аст, ба даст орем, мушкилот аллакай сар мешаванд. Ва ин барои мо кофӣ бад буд, зеро шумораи корбарон меафзояд, корҳо танҳо бадтар мешаванд. Ин бояд бо ягон роҳ оптимизатсия карда шавад.

Барои оптимизатсия, мо дар он вақт тасмим гирифтем, ки ба профили сарборӣ назар кунем - дар маҷмӯъ, чӣ рӯй дода истодааст, чӣ бояд оптимизатсия карда шавад.

Меъморӣ барои нигоҳдорӣ ва мубодилаи аксҳо дар Badoo

Ва дар ин ҷо ҳама чиз ба дасти мост.

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

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

Меъморӣ барои нигоҳдорӣ ва мубодилаи аксҳо дар Badoo

Онхое. Мо як маҷмӯаи хеле хурди гарм дорем. Аммо дар баробари ин ба у мурочиатномахо низ зиёданд. Ва як ҳалли комилан возеҳ дар ин ҷо илова кардани кэш аст.

Кэш бо LRU ҳамаи мушкилоти моро ҳал мекунад. Мо чӣ кор карда истодаем?

Меъморӣ барои нигоҳдорӣ ва мубодилаи аксҳо дар Badoo

Мо дар назди кластери калони худ як кластери нисбатан хурди дигарро бо анбор илова мекунем, ки онро фотокеш меноманд. Ин аслан танҳо прокси кэш аст.

Он аз дарун чӣ гуна кор мекунад? Ин аст корбари мо, ин ҷо нигаҳдорӣ. Ҳама чиз мисли пештара аст. Дар байни мо чӣ илова мекунем?

Меъморӣ барои нигоҳдорӣ ва мубодилаи аксҳо дар Badoo

Ин танҳо як мошини дорои диски физикии маҳаллӣ аст, ки зуд аст. Ин, масалан, бо SSD аст. Ва як навъ кэши маҳаллӣ дар ин диск нигоҳ дошта мешавад.

Он ба чӣ монанд аст? Истифодабаранда барои акс дархост мефиристад. NGINX онро аввал дар кэши маҳаллӣ ҷустуҷӯ мекунад. Агар не, пас танҳо ба анбори мо proxy_pass гузаред, аксро аз он ҷо зеркашӣ кунед ва ба корбар диҳед.

Аммо ин хеле ғайриоддӣ аст ва маълум нест, ки дар дохили он чӣ мегузарад. Он чизе монанди ин кор мекунад.

Меъморӣ барои нигоҳдорӣ ва мубодилаи аксҳо дар Badoo

Кэш мантиқан ба се қабат тақсим мешавад. Вақте ки ман «се қабат» мегӯям, ин маънои онро надорад, ки ягон системаи мураккаб вуҷуд дорад. Не, инҳо шартан танҳо се директория дар системаи файлӣ мебошанд:

  1. Ин буферест, ки дар он аксҳои нав аз прокси зеркашӣ карда мешаванд.
  2. Ин кэши гармест, ки аксҳои дар айни замон дархостшударо нигоҳ медорад.
  3. Ва кеши сард, ки дар он суратҳо тадриҷан аз кэши гарм берун карда мешаванд, вақте ки дархостҳои камтар ба онҳо меоянд.

Барои он ки ин кор кунад, мо бояд ин кэшро бо ягон роҳ идора кунем, ба мо лозим аст, ки аксҳоро дар он ҷобаҷо кунем ва ғайра. Ин ҳам як раванди хеле ибтидоӣ аст.

Меъморӣ барои нигоҳдорӣ ва мубодилаи аксҳо дар Badoo

Nginx танҳо ба RAMDisk access.log барои ҳар як дархост менависад, ки дар он роҳ ба аксе, ки ҳоло хидмат кардааст (албатта роҳи нисбӣ) ва кадом қисмат ба он хидмат расонидашударо нишон медиҳад. Онхое. он метавонад "фото 1" бигӯяд ва баъд ё буфер, ё кэши гарм, ё кэши сард ё прокси.

Вобаста ба ин, мо бояд бо кадом роҳе қарор кунем, ки бо акс чӣ кор кунем.

Мо як демони хурде дорем, ки дар ҳар як мошин кор мекунад, ки пайваста ин гузоришро мехонад ва омори истифодаи аксҳои муайянро дар хотираи худ нигоҳ медорад.

Меъморӣ барои нигоҳдорӣ ва мубодилаи аксҳо дар Badoo

Вай дар он ҷо танҳо ҷамъоварӣ мекунад, ҳисобкунакҳоро нигоҳ медорад ва давра ба давра корҳои зеринро иҷро мекунад. Вай аксҳои фаъолона дархостшударо, ки дархостҳои зиёд доранд, ба кэши гарм, дар ҳар куҷое, ки набошанд, интиқол медиҳад.

Меъморӣ барои нигоҳдорӣ ва мубодилаи аксҳо дар Badoo

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

Меъморӣ барои нигоҳдорӣ ва мубодилаи аксҳо дар Badoo

Ва вақте ки мо ҷой дар кэш тамом мешавад, мо танҳо ба нест кардани ҳама чиз аз кеши хунук бетаъсир оғоз мекунем. Ва дар омади гап, ин хуб кор мекунад.

Барои он ки акс фавран ҳангоми прокси кардани он ба буфер захира карда шавад, мо дастури proxy_store-ро истифода мебарем ва буфер низ RAMDisk аст, яъне. барои корбар он хеле зуд кор мекунад. Ин ба дохили худи сервери кэш дахл дорад.

Саволи боқимонда ин аст, ки чӣ гуна дархостҳоро дар ин серверҳо паҳн кардан мумкин аст.

Фарз мекунем, ки кластери бист мошини нигоҳдорӣ ва се сервери кэш мавҷуд аст (ин тавр шуд).

Меъморӣ барои нигоҳдорӣ ва мубодилаи аксҳо дар Badoo

Мо бояд як навъ муайян кунем, ки кадом дархостҳо барои кадом аксҳо ва дар куҷо ҷойгир кардани онҳо ҳастанд.

Варианти маъмултарин Round Robin мебошад. Ё ин корро тасодуфан мекунед?

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

Мо бояд ба таври дақиқ муайян кунем, ки кадом сервер ба кадом дархост ворид шавад.

Роҳи баналӣ вуҷуд дорад. Мо хэшро аз URL ё хэшро аз калиди sharding мо, ки дар URL аст, мегирем ва онро ба шумораи серверҳо тақсим мекунем. кор мекунад? иродаи.

Меъморӣ барои нигоҳдорӣ ва мубодилаи аксҳо дар Badoo

Онхое. Мо 2% дархост дорем, масалан, барои баъзе "example_url" он ҳамеша дар сервер бо индекси "XNUMX" меафтад ва кэш ба қадри имкон беҳтар нест карда мешавад.

Аммо дар чунин схема мушкили аз нав тақсим кардан вуҷуд дорад. Resharing - Ман тағир додани шумораи серверҳоро дар назар дорам.

Фарз мекунем, ки кластери кэшкунии мо дигар аз ӯҳдаи кор баромада наметавонад ва мо тасмим гирифтем, ки мошини дигарро илова кунем.

илова кунем.

Меъморӣ барои нигоҳдорӣ ва мубодилаи аксҳо дар Badoo

Акнун ҳама чиз на ба се, балки ба чор тақсим мешавад. Ҳамин тариқ, қариб ҳамаи калидҳое, ки мо қаблан доштем, қариб ҳамаи URL-ҳо ҳоло дар серверҳои дигар зиндагӣ мекунанд. Тамоми кэш танҳо як лаҳза бекор карда шуд. Ҳама дархостҳо ба кластери нигаҳдории мо афтоданд, он бад шуд, нокомии хидмат ва корбарони норозӣ. Ман ин корро кардан намехоҳам.

Ин вариант ба мо низ мувофиқ нест.

ки. мо бояд чӣ кор кунем? Мо бояд бо кадом роҳе аз кэш самаранок истифода барем, ҳамон як дархостро дар як сервер такрор ба такрор фиристем, аммо ба дубора тақсим кардан тобовар бошем. Ва чунин ҳалли вуҷуд дорад, он қадар мураккаб нест. Он ҳашингии пайваста номида мешавад.

Меъморӣ барои нигоҳдорӣ ва мубодилаи аксҳо дар Badoo

Он чӣ гуна аст?

Меъморӣ барои нигоҳдорӣ ва мубодилаи аксҳо дар Badoo

Мо аз калиди sharding баъзе функсияҳоро мегирем ва тамоми арзишҳои онро дар доира паҳн мекунем. Онхое. дар нуқтаи 0, арзишҳои ҳадди ақал ва максималии он ба ҳам меоянд. Баъдан, мо ҳама серверҳои худро дар як доира тақрибан ба ин тариқ ҷойгир мекунем:

Меъморӣ барои нигоҳдорӣ ва мубодилаи аксҳо дар Badoo

Ҳар як сервер аз ҷониби як нуқта муайян карда мешавад ва секторе, ки бо ақрабаки соат ба он меравад, мувофиқан аз ҷониби ин мизбон хизмат мерасонад. Вақте ки дархостҳо ба мо меоянд, мо дарҳол мебинем, ки масалан дархости A - он ҷо ҳаш дорад - ва он аз ҷониби сервери 2. Дархости B - аз ҷониби сервер 3. Ва ғайра.

Меъморӣ барои нигоҳдорӣ ва мубодилаи аксҳо дар Badoo

Дар ин ҳолат ҳангоми азнавсозӣ чӣ мешавад?

Меъморӣ барои нигоҳдорӣ ва мубодилаи аксҳо дар Badoo

Мо мисли пештара тамоми кэшро беэътибор намекунем ва ҳамаи калидҳоро иваз намекунем, аммо мо ҳар як секторро ба масофаи кӯтоҳ мегузарем, то ки нисбатан гуем, сервери шашуми мо, ки мо онро илова кардан мехоҳем, ба фазои холӣ мувофиқат кунад ва мо онро дар он ҷо илова мекунем.

Меъморӣ барои нигоҳдорӣ ва мубодилаи аксҳо дар Badoo

Албатта, дар чунин вазъият калидҳо низ берун мебароянд. Аммо онҳо назар ба пештара хеле заифтар мешаванд. Ва мо мебинем, ки ду калиди аввалини мо дар серверҳои онҳо боқӣ монданд ва сервери кэш танҳо барои калиди охирин тағйир ёфт. Ин хеле самаранок кор мекунад ва агар шумо мизбони навро тадриҷан илова кунед, дар ин ҷо ягон мушкилии калон вуҷуд надорад. Шумо кам-кам илова ва илова мекунед, интизор шавед, ки кэш дубора пур шавад ва ҳама чиз хуб кор мекунад.

Ягона савол бо радкунӣ боқӣ мемонад. Фарз мекунем, ки ягон хел машина аз кор мебарояд.

Меъморӣ барои нигоҳдорӣ ва мубодилаи аксҳо дар Badoo

Ва мо аслан намехоҳем, ки дар айни замон ин харитаро аз нав тавлид кунем, як қисми кэшро беэътибор созем ва ғайра, агар, масалан, мошин бозоғоз карда шуда бошад ва ба мо лозим аст, ки ба ягон тариқ дархостҳои хидматрасониро пешниҳод кунем. Мо танҳо як кэши аксҳои эҳтиётиро дар ҳар як сайт нигоҳ медорем, ки он ҳамчун ивазкунандаи ҳар як мошини ҳозира кор намекунад. Ва агар ногаҳон яке аз серверҳои мо дастнорас гардад, трафик ба он ҷо меравад. Табиист, ки мо дар он ҷо ягон кэш надорем, яъне. сард аст, аммо ҳадди аққал дархостҳои корбарон коркард мешаванд. Агар ин фосилаи кутох бошад, пас мо онро комилан оромона хис мекунем. Дар анбор танҳо бори бештар вуҷуд дорад. Агар ин фосила дароз бошад, пас мо аллакай қарор қабул карда метавонем - ин серверро аз харита хориҷ кунем ё не, ё шояд онро бо дигаре иваз кунем.

Ин дар бораи системаи кэш аст. Биёед ба натиҷаҳо назар андозем.

Чунин ба назар мерасад, ки дар ин ҷо ҳеҷ чизи мураккаб нест. Аммо ин усули идоракунии кэш ба мо сатҳи ҳиларо тақрибан 98% дод. Онхое. аз ин 80 хазор дархост дар як сония хамагй 1600-тоаш ба анбор мерасаду ин бори тамоман муътадил аст, ба он оромона тоб меоранд, мо хамеша захира дорем.

Мо ин серверҳоро дар се DC-и худ ҷойгир кардем ва се нуқтаи ҳузурро гирифтем - Прага, Майами ва Ҳонконг.

Меъморӣ барои нигоҳдорӣ ва мубодилаи аксҳо дар Badoo

ки. онҳо дар ҳар як бозорҳои мавриди ҳадафи мо бештар ё камтар дар маҳал ҷойгиранд.

Ва ҳамчун бонуси хуб, мо ин прокси кэшро гирифтем, ки дар он CPU воқеан бекор аст, зеро он барои хидматрасонии мундариҷа он қадар лозим нест. Ва дар он ҷо, бо истифода аз NGINX+ Lua, мо мантиқи зиёди утилитариро амалӣ кардем.

Меъморӣ барои нигоҳдорӣ ва мубодилаи аксҳо дар Badoo

Масалан, мо метавонем бо webp ё jpeg прогрессивӣ озмоиш кунем (инҳо форматҳои муосири муассир мебошанд), бубинед, ки он ба трафик чӣ гуна таъсир мерасонад, баъзе қарорҳо қабул кунед, онро барои кишварҳои муайян фаъол созед ва ғайра; андозаи динамикиро тағир диҳед ё аксҳоро дар парвоз бурида гиред.

Ин як ҳолати хубест, вақте ки шумо як барномаи мобилие доред, ки аксҳоро намоиш медиҳад ва барномаи мобилӣ намехоҳад CPU-и муштариро барои дархости акси калон ва сипас тағир додани андозаи он ба андозаи муайян сарф кунад, то он ба он тела диҳад. манзара. Мо метавонем танҳо ба таври динамикӣ баъзе параметрҳоро дар URL шартии UPort муайян кунем ва кэши акс худи аксро тағир медиҳад. Чун қоида, он андозаеро, ки мо дар диски ҷисмонӣ дорем, ба қадри имкон ба диски дархостшуда наздиктар интихоб мекунад ва онро дар координатҳои мушаххас мефурӯшад.

Воқеан, мо сабтҳои видеоии панҷ соли ахири конфронси таҳиягарони системаҳои пурборро дастраси умум кардем. HighLoad++. Тамошо кунед, омӯзед, мубодила кунед ва обуна шавед Канали YouTube.

Мо инчунин метавонем дар он ҷо мантиқи зиёди маҳсулотро илова кунем. Масалан, мо метавонем бо истифода аз параметрҳои URL аломатҳои обии гуногун илова кунем, мо метавонем аксҳоро норавшан, норавшан ё пиксел кунем. Ин вақтест, ки мо мехоҳем акси шахсеро нишон диҳем, аммо намехоҳем чеҳраи ӯро нишон диҳем, ин хуб кор мекунад, ҳамааш дар ин ҷо амалӣ мешавад.

Мо чӣ гирифтем? Мо се нуқтаи ҳузур, суръати хуби ҳиларо гирифтем ва ҳамзамон дар ин мошинҳо CPU бекор надорем. Ӯ ҳоло бешубҳа, аз пештара муҳимтар шудааст. Мо бояд ба худ мошинҳои пурқувваттар диҳем, аммо ин меарзад.

Ин ба баргардонидани аксҳо дахл дорад. Дар ин ҷо ҳама чиз равшан ва равшан аст. Ман фикр мекунам, ки ман Амрикоро кашф накардаам, қариб ҳама CDN ин тавр кор мекунанд.

Ва, эҳтимоли зиёд, як шунавандаи ботаҷриба метавонад саволе дошта бошад: чаро ҳама чизро ба CDN иваз накунед? Ин тақрибан якхела хоҳад буд; ҳама CDN-ҳои муосир ин корро карда метавонанд. Ва як қатор сабабҳо вуҷуд доранд.

Якум - аксҳо.

Меъморӣ барои нигоҳдорӣ ва мубодилаи аксҳо дар Badoo

Ин яке аз нуктаҳои асосии инфрасохтори мост ва мо бояд ҳарчи бештар аз болои он назорат кунем. Агар ин як навъ ҳалли як фурӯшандаи тарафи сеюм бошад ва шумо бар он қудрат надошта бошед, ҳангоми доштани маҷмӯаи маълумоти калон ва вақте ки шумо ҷараёни хеле калон доред, бо он зиндагӣ кардан барои шумо хеле душвор хоҳад буд. дархостҳои корбарон.

Биёед ба шумо як мисол орам. Ҳоло, бо инфрасохтори худ, мо метавонем, масалан, дар сурати ягон мушкилот ё кӯфтани зеризаминӣ, ба мошин рафта, дар атрофи он, нисбатан гӯем, бесарусомонӣ кунем. Мо метавонем маҷмӯи баъзе ченакҳоеро, ки ба мо танҳо лозиманд, илова кунем, мо метавонем таҷриба кунем, бубинем, ки ин ба графикҳо чӣ гуна таъсир мерасонад ва ғайра. Ҳоло дар ин кластери кэш бисёр омор ҷамъоварӣ карда мешавад. Ва мо давра ба давра ба он назар меандозем ва вақти зиёдро барои омӯхтани баъзе аномалияҳо сарф мекунем. Агар он дар тарафи CDN мебуд, назорат кардан хеле душвортар мебуд. Ё масалан, агар ягон фалокат рӯй диҳад, мо медонем, ки чӣ шуд, мо медонем, ки бо он чӣ гуна зиндагӣ кунем ва чӣ гуна онро бартараф кунем. Ин хулосаи аввалин аст.

Хулосаи дуюм низ хеле таърихӣ аст, зеро система муддати тӯлонӣ рушд карда истодааст ва дар марҳилаҳои гуногун талаботҳои зиёди тиҷоратӣ мавҷуданд ва онҳо на ҳамеша ба консепсияи CDN мувофиқат мекунанд.

Ва нуктае, ки аз пештара бармеояд

Меъморӣ барои нигоҳдорӣ ва мубодилаи аксҳо дар Badoo

Сабаб дар он аст, ки дар кэшҳои акс мо мантиқи мушаххас дорем, ки онҳоро ҳамеша бо дархост илова кардан мумкин нест. Аз эҳтимол дур нест, ки ягон CDN бо дархости шумо чизҳои фармоиширо ба шумо илова кунад. Масалан, рамзгузории URL-ҳо, агар шумо намехоҳед, ки муштарӣ чизеро тағир диҳад. Оё шумо мехоҳед URL-ро дар сервер тағир диҳед ва онро рамзгузорӣ кунед ва пас чанд параметрҳои динамикиро ба ин ҷо фиристед.

Аз ин чӣ хулоса мебарояд? Дар ҳолати мо, CDN алтернативаи хеле хуб нест.

Меъморӣ барои нигоҳдорӣ ва мубодилаи аксҳо дар Badoo

Ва дар ҳолати шумо, агар шумо ягон талаботи мушаххаси тиҷоратӣ дошта бошед, пас шумо метавонед он чизеро, ки ман ба шумо худатон нишон додам, ба осонӣ амалӣ кунед. Ва ин бо профили шабеҳи сарборӣ комилан кор хоҳад кард.

Аммо агар шумо ягон намуди ҳалли умумӣ дошта бошед ва вазифа чандон мушаххас набошад, шумо метавонед комилан бехатар CDN гиред. Ё агар вақт ва захираҳо барои шумо аз назорат муҳимтар бошанд.

Меъморӣ барои нигоҳдорӣ ва мубодилаи аксҳо дар Badoo

Ва CDN-ҳои муосир қариб ҳама чизеро, ки ман ҳоло ба шумо гуфтам, доранд. Ба истиснои плюс ё минус баъзе хусусиятҳо.

Ин дар бораи додани аксҳо аст.

Биёед ҳоло дар ретроспективии худ каме пеш ҳаракат кунем ва дар бораи нигоҳдорӣ сӯҳбат кунем.

2013 гузашт.

Меъморӣ барои нигоҳдорӣ ва мубодилаи аксҳо дар Badoo

Серверҳои кэш илова карда шуданд, мушкилоти иҷроиш бартараф шуданд. Ҳама чиз хуб аст. Маҷмӯи маълумот афзоиш меёбад. То соли 2013, мо тақрибан 80 сервер ба нигаҳдорӣ пайваст будем ва дар ҳар як DC тақрибан 40 сервери кэшкунӣ доштем. Ин 560 терабайт маълумот дар ҳар як DC аст, яъне. дар маҷмӯъ тақрибан як петабайт.

Меъморӣ барои нигоҳдорӣ ва мубодилаи аксҳо дар Badoo

Ва бо афзоиши маҷмӯи маълумот, хароҷоти амалиётӣ ба таври назаррас афзоиш ёфт. Ин чӣ маъно дошт?

Меъморӣ барои нигоҳдорӣ ва мубодилаи аксҳо дар Badoo

Дар ин диаграммае, ки кашида шудааст - бо SAN, бо мошинҳо ва кэшҳои ба он пайвастшуда - бисёр нуқтаҳои нокомӣ мавҷуданд. Агар мо қаблан бо нокомии серверҳои кэш сару кор дошта бошем, ҳама чиз камтар ё камтар пешгӯишаванда ва фаҳмо буд, аммо дар паҳлӯи нигоҳдорӣ ҳама чиз бадтар буд.

Аввалан, худи Шабакаи Майдони нигаҳдорӣ (SAN), ки метавонад ноком шавад.

Дуюм, он тавассути оптика ба мошинҳои ниҳоӣ пайваст карда мешавад. Мумкин аст мушкилот бо кортҳои оптикӣ ва шамъҳои шарора вуҷуд дошта бошад.

Меъморӣ барои нигоҳдорӣ ва мубодилаи аксҳо дар Badoo

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

Дар оянда худи мошин аст, ки ба анбор пайваст аст. Он ҳамчунин метавонад ноком.

Меъморӣ барои нигоҳдорӣ ва мубодилаи аксҳо дар Badoo

Дар маҷмӯъ, мо се нуқтаи ноком дорем.

Ғайр аз он, ба ғайр аз нуқтаҳои нокомӣ, нигоҳдории вазнини худи анбор вуҷуд дорад.

Ин як системаи мураккаби бисёрҷониба аст ва муҳандисони система метавонанд бо он кор кардан душвор бошанд.

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

Меъморӣ барои нигоҳдорӣ ва мубодилаи аксҳо дар Badoo

Фарз мекунем, ки системаи файлии мо вайрон шудааст. Аввалан, барқарорсозии он муддати тӯлонӣ мегирад - он метавонад бо миқдори зиёди маълумот як ҳафта гирад. Ва дуюм, дар ниҳоят, мо эҳтимолан бо як хӯшаи файлҳои нофаҳмо ба даст меорем, ки онҳо бояд ба гунае дар аксҳои корбар муттаҳид карда шаванд. Ва мо хавфи гум кардани маълумотро дорем. Хавф хеле баланд аст. Ва ҳар қадаре, ки чунин ҳолатҳо рух медиҳанд ва дар тамоми ин занҷир мушкилот бештар ба миён меоянд, ин хатар ҳамон қадар зиёд мешавад.

Дар ин бора коре кардан лозим буд. Ва мо тасмим гирифтем, ки мо бояд танҳо маълумотро нусхабардорӣ кунем. Ин дар асл як роҳи равшан ва як роҳи хуб аст. Мо чӣ кор кардаем?

Меъморӣ барои нигоҳдорӣ ва мубодилаи аксҳо дар Badoo

Вақте ки он қаблан ба анбор пайваст шуда буд, сервери мо чунин менамуд. Ин як бахши асосӣ аст, он танҳо як дастгоҳи блокест, ки аслан васл барои нигаҳдории дурдаст тавассути оптика мебошад.

Мо танҳо як бахши дуюмро илова кардем.

Меъморӣ барои нигоҳдорӣ ва мубодилаи аксҳо дар Badoo

Мо дар паҳлӯи он як анбори дуюм ҷойгир кардем (хушбахтона, он аз ҷиҳати пул он қадар гарон нест) ва онро қисмати эҳтиётӣ номидем. Он инчунин тавассути оптика пайваст карда шудааст ва дар ҳамон мошин ҷойгир аст. Аммо ба мо лозим аст, ки маълумотро дар байни онҳо синхронизатсия кунем.

Дар ин ҷо мо танҳо як навбати асинхронӣ дар наздикӣ месозем.

Меъморӣ барои нигоҳдорӣ ва мубодилаи аксҳо дар Badoo

Вай чандон банд нест. Мо медонем, ки мо сабтҳои кофӣ надорем. Навбат танҳо як ҷадвал дар MySQL аст, ки дар он сатрҳо ба монанди "шумо бояд ин аксро нусхабардорӣ кунед" навишта шудаанд. Бо ҳама гуна тағирот ё боргузорӣ, мо аз қисмати асосӣ ба нусхабардорӣ бо истифода аз асинхронӣ ё танҳо як намуди коргари пасзамина нусхабардорӣ мекунем.

Ва ҳамин тавр, мо ҳамеша ду қисмати мувофиқ дорем. Ҳатто агар як қисми ин система кор накунад, мо ҳамеша метавонем қисмати асосиро бо нусхаи эҳтиётӣ иваз кунем ва ҳама чиз корашро идома медиҳад.

Аммо аз ин сабаб, сарбории хониш хеле зиёд мешавад, зеро ... ба ғайр аз муштариёне, ки аз қисмати асосӣ мехонанд, зеро онҳо аввал ба акс дар он ҷо нигоҳ мекунанд (он ҷо навтар аст) ва сипас онро дар нусхаи эҳтиётӣ ҷустуҷӯ мекунанд, агар онҳо онро наёфта бошанд (аммо NGINX ин корро мекунад), системаи мо низ як нусхаи плюс аст, ки ҳоло аз қисмати асосӣ мехонад. Ин на он аст, ки ин як монеа буд, аммо ман намехостам, ки сарбориро зиёд кунам, аслан, ҳамин тавр.

Ва мо як диски сеюмро илова кардем, ки SSD хурд аст ва онро буфер номидем.

Меъморӣ барои нигоҳдорӣ ва мубодилаи аксҳо дар Badoo

Ҳоло он чӣ гуна кор мекунад.

Истифодабаранда аксро ба буфер бор мекунад, пас ҳодисае ба навбат гузошта мешавад, ки нишон медиҳад, ки онро ба ду қисм нусхабардорӣ кардан лозим аст. Он нусхабардорӣ карда мешавад ва акс дар буфер муддате зиндагӣ мекунад (масалан, як рӯз) ва танҳо баъд аз он тоза карда мешавад. Ин таҷрибаи корбарро хеле беҳтар мекунад, зеро корбар аксро бор мекунад, чун қоида, дархостҳо фавран иҷро мешаванд ё худаш саҳифаро навсозӣ карда, онро навсозӣ мекунад. Аммо ҳамааш аз барномае, ки боргузорӣ мекунад, вобаста аст.

Ё, масалан, одамони дигаре, ки ӯ худро ба онҳо нишон додан оғоз кардааст, пас аз ин акс фавран дархост ирсол мекунанд. Он ҳанӯз дар кэш нест; дархости аввал хеле зуд ба амал меояд. Аслан ҳамон тавре ки аз кэши аксҳост. Нигоҳдории суст ба ин тамоман дахл надорад. Ва вақте ки пас аз як рӯз он тоза карда мешавад, он аллакай ё дар қабати кэшкунии мо кэш карда мешавад, ё эҳтимоли зиёд ба ҳеҷ кас лозим нест. Онхое. Таҷрибаи корбар дар ин ҷо аз ҳисоби чунин амалҳои оддӣ хеле хуб афзоиш ёфтааст.

Хуб, ва муҳимтар аз ҳама: мо гум кардани маълумотро бас кардем.

Меъморӣ барои нигоҳдорӣ ва мубодилаи аксҳо дар Badoo

Биёед бигӯем, ки мо қатъ кардем эҳтимолан маълумотро гум мекунем, зеро мо воқеан онро гум накардаем. Аммо хатар вуҷуд дошт. Мо мебинем, ки ин ило-ва, албатта, хуб аст, вале ин ба чои халли пурраи он, балки андаке хамвор кардани аломатхои проблема аст. Ва баъзе мушкилот дар ин ҷо боқӣ мондаанд.

Аввалан, ин як нуқтаи нокомӣ дар шакли худи мизбони ҷисмонӣ аст, ки тамоми ин мошинҳо дар он кор мекунанд; он аз байн нарафтааст.

Меъморӣ барои нигоҳдорӣ ва мубодилаи аксҳо дар Badoo

Сониян, хануз проблемахои САН-хо, нигохубини вазнини онхо ва гайра мавчуданд. Ин як омили муҳим набуд, аммо ман мехостам кӯшиш кунам, ки бе он чӣ гуна зиндагӣ кунам.

Ва мо версияи сеюмро (воқеан, дуюмаш) - версияи фармоишро сохтем. Он чӣ гуна буд?

Ин буд -

Меъморӣ барои нигоҳдорӣ ва мубодилаи аксҳо дар Badoo

Мушкилоти асосии мо дар он аст, ки ин мизбони ҷисмонӣ аст.

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

Меъморӣ барои нигоҳдорӣ ва мубодилаи аксҳо дар Badoo

Ин аллакай солҳои 2014-2015 аст ва дар он вақт вазъи дискҳо ва қобилияти онҳо дар як ҳост хеле беҳтар шуд. Мо тасмим гирифтем, ки чаро ин корро накунем.

Ва он гоҳ мо танҳо қисмати эҳтиётии худро мегирем ва онро ба таври ҷисмонӣ ба мошини алоҳида интиқол медиҳем.

Меъморӣ барои нигоҳдорӣ ва мубодилаи аксҳо дар Badoo

Ҳамин тариқ, мо ин диаграммаро ба даст меорем. Мо ду мошин дорем, ки ҳамон як маҷмӯаи маълумотро нигоҳ медоранд. Онҳо якдигарро пурра нусхабардорӣ мекунанд ва маълумотро тавассути шабака тавассути як навбати асинхронӣ дар ҳамон MySQL ҳамоҳанг мекунанд.

Меъморӣ барои нигоҳдорӣ ва мубодилаи аксҳо дар Badoo

Чаро ин хуб кор мекунад, зеро мо сабтҳои кам дорем. Онхое. агар навиштан бо хондан муқоисашаванда мебуд, шояд мо як навъ сарбории шабакавӣ ва мушкилот медоштем. Навиштан кам аст, бисёр хондан - ин усул хуб кор мекунад, яъне. Мо хеле кам аксҳоро байни ин ду сервер нусхабардорӣ мекунем.

Ин чӣ гуна кор мекунад, агар шумо каме муфассалтар назар кунед.

Меъморӣ барои нигоҳдорӣ ва мубодилаи аксҳо дар Badoo

Бор кунед. Мувозинат танҳо ҳостҳои тасодуфиро бо як ҷуфт интихоб мекунад ва ба он бор мекунад. Дар баробари ин, табиист, ки саломатии худро тафтиш мекунад ва боварӣ ҳосил мекунад, ки мошин аз замин наафтад. Онхое. ӯ аксҳоро танҳо ба сервери зинда бор мекунад ва сипас тавассути навбати асинхронӣ ҳамааш ба ҳамсояи худ нусхабардорӣ мешавад. Ҳангоми боргузорӣ ҳама чиз хеле содда аст.

Вазифа каме душвортар аст.

Меъморӣ барои нигоҳдорӣ ва мубодилаи аксҳо дар Badoo

Луа дар ин ҷо ба мо кӯмак кард, зеро сохтани чунин мантиқ дар ванили NGINX метавонад душвор бошад. Мо аввал ба сервери аввал дархост медиҳем, бубинем, ки акс дар он ҷо ҳаст, зеро эҳтимолан онро метавон, масалан, ба ҳамсоя бор кард, аммо ҳанӯз ба ин ҷо нарасидааст. Агар акс дар он ҷо бошад, ин хуб аст. Мо онро фавран ба муштарӣ медиҳем ва эҳтимолан онро кэш мекунем.

Меъморӣ барои нигоҳдорӣ ва мубодилаи аксҳо дар Badoo

Агар он дар он ҷо набошад, мо танҳо ба ҳамсояамон муроҷиат мекунем ва кафолат медиҳем, ки онро аз он ҷо мегирем.

Меъморӣ барои нигоҳдорӣ ва мубодилаи аксҳо дар Badoo

ки. боз мо метавонем бигӯем: дар иҷроиш мушкилот вуҷуд дошта метавонад, зеро сафарҳои доимӣ вуҷуд доранд - акс бор карда шудааст, он дар ин ҷо нест, мо ба ҷои як ду дархост мекунем, ин бояд оҳиста кор кунад.

Дар шароити мо ин кор суст кор намекунад.

Меъморӣ барои нигоҳдорӣ ва мубодилаи аксҳо дар Badoo

Мо дар ин система як қатор метрика ҷамъоварӣ мекунем ва суръати шартии интеллектуалии чунин механизм тақрибан 95% -ро ташкил медиҳад. Онхое. Қафомонии ин нусхаи эҳтиётӣ хурд аст ва аз ин рӯ, мо қариб кафолат медиҳем, ки пас аз бор кардани акс мо онро бори аввал мегирем ва ду маротиба ба ҳеҷ куҷо рафтан лозим нест.

Пас, мо боз чӣ дорем, ки воқеан аҷиб аст?

Пештар, мо қисмати асосии эҳтиётӣ доштем ва мо аз онҳо пайдарпай мехондем. Онхое. Мо ҳамеша аввал дар асоси асосӣ ва баъд дар нусхабардорӣ ҷустуҷӯ мекардем. Ин як ҳаракат буд.

Ҳоло мо дар як вақт хонданро аз ду мошин истифода мебарем. Мо дархостҳоро бо истифода аз Round Robin паҳн мекунем. Дар фоизи ками ҳолатҳо мо ду дархост мекунем. Аммо дар маҷмӯъ, ҳоло мо нисбат ба пештара ду баробар зиёдтар захираи хониш дорем. Ва бори хам дар машинахои фиристодан ва хам бевосита ба дастгоххои захиракунанда, ки дар он вакт мо хам доштем, хеле кам шуд.

Дар мавриди таҳаммулпазирӣ ба хатогиҳо. Воқеан, мо асосан барои ҳамин мубориза мебурдем. Бо таҳаммулпазирӣ дар ин ҷо ҳама чиз хуб шуд.

Меъморӣ барои нигоҳдорӣ ва мубодилаи аксҳо дар Badoo

Як мошин вайрон мешавад.

Меъморӣ барои нигоҳдорӣ ва мубодилаи аксҳо дар Badoo

Масъалае нест! Муҳандиси система метавонад шаб ҳатто аз хоб бедор нашавад, то субҳ интизор мешавад, ҳеҷ чизи бад рӯй намедиҳад.

Агар ин мошин аз кор ояд ҳам, навбат корношоям аст, ҳеҷ мушкиле ҳам вуҷуд надорад, лог дар аввал дар мошини зинда ҷамъ мешавад ва баъд ба навбат илова карда мешавад ва баъд ба мошине, ки баъди чанд вакт ба кор даромад.

Меъморӣ барои нигоҳдорӣ ва мубодилаи аксҳо дар Badoo

Айнан ҳамин чиз бо нигоҳдорӣ. Мо танҳо яке аз мошинҳоро хомӯш мекунем, онро аз ҳама ҳавзҳо дастӣ мекашем, он қабули трафикро қатъ мекунад, мо ягон намуди хидматрасониро анҷом медиҳем, чизеро таҳрир мекунем, сипас онро ба хидмат бармегардонем ва ин нусхаи эҳтиётӣ хеле зуд ба даст меояд. Онхое. дар як шабонаруз бекористии як машина дар давоми як-ду дакика мерасад. Ин дар ҳақиқат хеле кам аст. Бо таҳаммулпазирии айбҳо, ман бори дигар мегӯям, ки дар ин ҷо ҳама чиз хуб аст.

Аз ин схемаи зиёдатй чй хулоса баровардан мумкин аст?

Мо таҳаммулпазирӣ ба хатогиҳо дорем.

Истифодаи осон. Азбаски мошинҳо дискҳои сахти маҳаллӣ доранд, ин аз нуқтаи назари амалиётӣ барои муҳандисоне, ки бо он кор мекунанд, хеле қулайтар аст.

Мо пули дукаратаи хониш гирифтем.

Ин як бонуси хеле хуб ба ғайр аз таҳаммулпазирии хато аст.

Аммо проблемахо хам хастанд. Ҳоло мо таҳияи хеле мураккаби баъзе хусусиятҳои марбут ба ин дорем, зеро система дар ниҳоят 100% муттасил шудааст.

Меъморӣ барои нигоҳдорӣ ва мубодилаи аксҳо дар Badoo

Мо бояд бигӯем, ки дар ягон кори пасзамина ҳамеша фикр кунем: "Мо ҳоло дар кадом сервер кор карда истодаем?", "Оё воқеан дар ин ҷо акси ҷорӣ ҳаст?" ва ғайра. Ин, албатта, ҳама ҷамъбаст аст ва барои барномасозе, ки мантиқи тиҷоратро менависад, он шаффоф аст. Аммо, бо вучуди ин, ин кабати калони мураккаб пайдо шуд. Вале мо тайёрем, ки ба ивази неъматхое, ки аз он гирифтаем, бо ин муросо кунем.

Ва дар ин ҷо боз як ихтилоф ба миён меояд.

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

Бале, дар хакикат, бо мурури замон вазъият хеле тагьир ёфт ва холо ин усул бартарихои зиёде дорад. Аввалан, мо амалиёти хеле соддатар мегирем.

Сониян, он самараноктар аст, зеро мо ин контроллерҳои автоматӣ ё пайвастшавӣ ба рафҳои диск надорем.

Дар он ҷо миқдори зиёди техника мавҷуд аст ва ин танҳо чанд дискест, ки дар ин ҷо дар мошин ба рейд ҷамъ карда мешаванд.

Аммо камбудихо хам хастанд.

Меъморӣ барои нигоҳдорӣ ва мубодилаи аксҳо дар Badoo

Ин назар ба истифодаи SANs ҳатто бо нархҳои имрӯза тақрибан 1,5 маротиба гаронтар аст. Аз ин рӯ, мо тасмим гирифтем, ки далерона тамоми кластери бузурги худро ба мошинҳои дорои дискҳои сахти маҳаллӣ табдил надиҳем ва тасмим гирифтем, ки ҳалли гибридиро тарк кунем.

Нисфи мошинҳои мо бо дискҳои сахт кор мекунанд (хуб, не нисфи - эҳтимол 30 фоиз). Ва боқимонда мошинҳои кӯҳнаанд, ки қаблан схемаи аввалини фармоишро доштанд. Мо онҳоро танҳо аз нав насб кардем, зеро ба мо маълумоти нав ё чизи дигар лозим набуд, мо танҳо насбҳоро аз як ҳости физикӣ ба ду кӯчонидем.

Ва мо холо захираи зиёди хониш дорем ва онро васеъ кардем. Агар пештар мо як анборро ба як мошин васл карда бошем, ҳоло мо чор, масалан, ба як ҷуфт васл мекунем. Ва он хуб кор мекунад.

Биёед як хулосаи мухтасарро дар бораи он ки мо ба чӣ ноил шудем, барои чӣ мубориза бурдем ва муваффақ шудем ё не.

Натиҷаҳо

Мо корбар дорем - то 33 миллион.

Мо се нуқтаи ҳузур дорем - Прага, Майами, Ҳонконг.

Онҳо як қабати кэшро дар бар мегиранд, ки аз мошинҳои дорои дискҳои зуд локалӣ (SSD) иборат аст, ки дар онҳо техникаи оддии NGINX, access.log ва демонҳои Python кор мекунанд, ки ҳамаи инро коркард мекунанд ва кэшро идора мекунанд.

Агар шумо хоҳед, шумо дар лоиҳаи худ ҳастед, агар аксҳо барои шумо он қадар муҳим набошанд, зеро онҳо барои мо ҳастанд ё агар назорати мубодила бо суръати рушд ва хароҷоти захираҳо барои шумо дар самти дигар бошад, шумо метавонед онро бехатар иваз кунед. бо CDN, CDN-ҳои муосир онҳо хуб кор мекунанд.

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

Ғайр аз он, баъзе аз ин мошинҳо бо дискҳои сахти маҳаллӣ кор мекунанд.

Баъзе аз ин мошинҳо ба SANs пайваст карда шудаанд.

Меъморӣ барои нигоҳдорӣ ва мубодилаи аксҳо дар Badoo

Ва, аз як тараф, он барои истифода қулайтар ва каме самараноктар аст, аз тарафи дигар, он аз ҷиҳати зичии ҷойгиркунӣ ва нархи як гигабайт қулай аст.

Ин як шарҳи мухтасари меъмории он чизест, ки мо он чизеро ба даст овардем ва он чӣ гуна инкишоф ёфтааст.

Чанд маслиҳати дигар аз капитан, маслиҳатҳои хеле оддӣ.

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

Меъморӣ барои нигоҳдорӣ ва мубодилаи аксҳо дар Badoo

Биёед ба шумо як мисол орам. Мо як кластери мошинҳо дорем, ки аксҳоро аз замимаҳо дар чатҳо мефиристанд ва ин схема аз соли 2009 инҷониб кор мекунад ва ҳеҷ кас аз он азоб намекашад. Ҳама хубанд, ҳама чиз ба ҳама маъқул аст.

Барои чен кардан, аввал як қатор ченакҳоро овезон кунед, ба онҳо нигоҳ кунед ва сипас қарор кунед, ки шумо аз чӣ норозӣед ва чиро беҳтар кардан лозим аст. Барои чен кардани ин, мо як асбоби олие дорем, ки Pinba ном дорад.

Он ба шумо имкон медиҳад, ки омори хеле муфассалро аз NGINX барои ҳар як коди дархост ва ҷавоб ва тақсимоти вақтҳо - ҳар чизе ки мехоҳед, ҷамъ кунед. Он ба ҳама гуна системаҳои гуногуни таҳлилӣ пайваст аст ва пас шумо метавонед ба ҳама зебо назар кунед.

Аввал онро чен кардем, баъд такмил додем.

Минбаъд. Мо хонданро бо кэш, навиштан бо sharding оптимизатсия мекунем, аммо ин як нуқтаи возеҳ аст.

Меъморӣ барои нигоҳдорӣ ва мубодилаи аксҳо дар Badoo

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

Меъморӣ барои нигоҳдорӣ ва мубодилаи аксҳо дар Badoo

Фарз мекунем, ки шумо сад бор бор кардаед, баъд онро гардонед ва онро тавре созед, ки он файли аз ҷиҳати ҷисмонӣ дигар бошад. Онхое. фикр кардан лозим нест: ҳоло ман каме ҷойро сарфа мекунам, онро ба ҳамон файл менависам, версияро тағир медиҳам. Ин на ҳамеша хуб кор мекунад ва баъдтар боиси дарди сар мегардад.

Нуқтаи оянда. Дар бораи тағир додани андоза дар парвоз.

Пештар, вақте ки корбарон акс бор карданд, мо фавран як қатор андозаҳоро барои ҳама ҳолатҳо, барои муштариёни гуногун бурида будем ва ҳама дар диск буданд. Акнун мо аз ин даст кашидаем.

Мо танҳо се андозаи асосӣ гузоштем: хурд, миёна ва калон. Мо ҳама чизи боқимондаро аз андозае, ки дар паси андозае, ки дар Uport ба мо дархост карда шудааст, кам мекунем, мо танҳо миқёсро коҳиш медиҳем ва ба корбар медиҳем.

CPU-и қабати кэш дар ин ҷо назар ба он вақте ки мо ин андозаҳоро дар ҳар як анбор доимо барқарор мекардем, хеле арзонтар мешавад. Биёед бигӯем, ки мо мехоҳем як наверо илова кунем, ин як моҳро мегирад - дар ҳама ҷо як скриптро иҷро кунед, ки ҳамаи ин корро бодиққат иҷро кунад ва кластерро вайрон кунад. Онхое. Агар шумо ҳоло имкони интихоб кардан дошта бошед, беҳтар аст, ки андозаи ҷисмониро то ҳадди имкон кам кунед, аммо ҳадди аққал як тақсимот, масалан, се бошад. Ва ҳама чизҳои боқимонда метавонанд бо истифода аз модулҳои тайёр ба таври оддӣ андозаи худро тағир диҳед. Ҳамааш ҳоло хеле осон ва дастрас аст.

Ва нусхаи эҳтиётии афзояндаи асинхронӣ хуб аст.

Тавре ки таҷрибаи мо нишон дод, ин схема бо таъхири нусхабардории файлҳои тағирёфта хеле хуб кор мекунад.

Меъморӣ барои нигоҳдорӣ ва мубодилаи аксҳо дар Badoo

Нуқтаи охирин низ равшан аст. Агар инфрасохтори шумо ҳоло ин гуна мушкилот надошта бошад, аммо чизе ҳаст, ки метавонад шикаста шавад, ҳатман вақте ки каме бештар мешавад, вайрон мешавад. Аз ин рӯ, беҳтар аст, ки дар ин бора пешакӣ фикр кунед ва бо ин мушкилот дучор нашавед. Ин ҳама чизест, ки ман гуфтан мехостам.

мухотибон

» bo0rsh201
» Блоги Badoo

Ин гузориш стенограммаи яке аз беҳтарин баромадҳо дар конфронси таҳиякунандагони системаҳои пурбор аст HighLoad++. То конфронси HighLoad++ 2017 камтар аз як моҳ мондааст.

Мо онро аллакай омода кардаем Барномаи конференция, график холо фаъолона ташкил карда мешавад.

Имсол мо таҳқиқи мавзӯи меъморӣ ва миқёсро идома медиҳем:

Мо инчунин баъзе аз ин маводҳоро дар курси онлайнии худ оид ба таҳияи системаҳои сарбории худ истифода мебарем HighLoad.Guide як силсилаи номаҳо, мақолаҳо, маводҳо, видеоҳои махсус интихобшуда мебошад. Китоби дарсии мо аллакай зиёда аз 30 материали нодирро дарбар мегирад. Пайваст шавед!

Манбаъ: will.com

Илова Эзоҳ