Чӣ тавр мо дар Sportmaster системаи кэшро интихоб кардем. Қисми 1

Салом! Номи ман Алексей Пянков, ман таҳиягари ширкати Sportmaster ҳастам. Дар он овехтан Ман гуфтам, ки кор дар вебсайти Sportmaster дар соли 2012 чӣ гуна оғоз шуд, мо чӣ гуна ташаббусҳоро ба мо тавонистем "пеш занем" ва баръакс, чӣ гуна раке ҷамъ овардем.

Имрӯз ман мехоҳам фикрҳоеро мубодила кунам, ки мавзӯи дигарро пайгирӣ мекунанд - интихоби системаи кэш барои пуштибонии java дар минтақаи администратори сайт. Ин сюжет барои ман мазмуни махсус дорад — гарчанде ки воцеа хамагй 2 мох руй дода бошад хам, дар ин 60 руз мо 12—16 соат ва бе рузи истирохат кор кардем. Ман ҳеҷ гоҳ фикр намекардам ва тасаввур ҳам намекардам, ки ин қадар меҳнат кардан мумкин аст.

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

Чӣ тавр мо дар Sportmaster системаи кэшро интихоб кардем. Қисми 1

Вақте ки версияи нави вебсайти Sportmaster ба истеҳсолот ворид карда шуд, маълумот ба тарзе қабул карда шуд, ки мулоим карда гӯем, он қадар қулай набуд. Асос ҷадвалҳое буданд, ки барои версияи қаблии сайт (Bitrix) омода карда шуда буданд, ки бояд ба ETL кашида шуда, ба шакли нав оварда шаванд ва бо чизҳои хурди гуногун аз даҳҳо системаҳои дигар ғанӣ гардонида шаванд. Барои он ки тасвири нав ё тавсифи маҳсулот дар сайт пайдо шавад, шумо бояд то рӯзи дигар интизор шавед - навсозӣ танҳо шабона, як маротиба дар як рӯз.

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

Аммо дар ин паём ман аз дур оғоз хоҳам кард, ман баъзе фикру мулоҳизаҳоро пешниҳод мекунам - ғояҳо дар бораи кэш, ки қадами хубе барои ҳаракат дар пеш аз лоиҳаи калон хоҳад буд.

Вақте ки вазифаи кэшкунӣ рух медиҳад

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

Дар марҳилаҳои аввал, мо дар бораи оптимизатсия ва иҷрои код фикр намекунем. Чизи асосиаш функсионалӣ, зуд ба кор андохтани пилот ва санҷиши гипотезаҳо мебошад. Ва агар сарборӣ зиёд шавад, мо оҳанро насос мекунем. Ду-се баробар, панч баробар, шояд 10 баробар зиёд мекунем. Дар ҷое дар ин ҷо - молия дигар иҷозат намедиҳад. Шумораи корбарон чанд маротиба зиёд мешавад? Ин мисли 2-5-10 нест, аммо агар муваффақ шавад, аз 100-1000 то 100 ҳазор маротиба мешавад. Яъне, дер ё зуд, шумо бояд оптимизатсия кунед.

Фарз мекунем, ки як қисми код (биёед, ин қисматро функсия меномем) вақти ба таври бениҳоят дарозро мегирад ва мо мехоҳем вақти иҷроишро кам кунем. Функсия метавонад дастрасӣ ба пойгоҳи додаҳо бошад ё он метавонад иҷрои ягон мантиқи мураккаб бошад - чизи асосӣ ин аст, ки барои анҷом додани он вақти зиёд лозим аст. Шумо метавонед вақти иҷроишро чӣ қадар кам кунед? Дар маҳдудият, шумо метавонед онро ба сифр кам кунед, на минбаъд. Чӣ тавр шумо метавонед вақти иҷроро ба сифр кам кунед? Ҷавоб: иҷроро тамоман нест кунед. Ба ҷои ин, натиҷаро фавран баргардонед. Чӣ тавр шумо метавонед натиҷаро фаҳмед? Ҷавоб: ё ҳисоб кунед ё ба ҷое назар кунед. Барои ҳисоб кардан вақти зиёд лозим аст. Ва ҷосусӣ, масалан, дар хотир доштани натиҷаест, ки функсия бори охир ҳангоми даъват бо ҳамон параметрҳо тавлид кардааст.

Яъне иҷрои вазифа барои мо муҳим нест. Фақат донистани он ки натиҷа аз кадом параметрҳо вобаста аст, кофӣ аст. Пас, агар арзишҳои параметрҳо дар шакли объекте пешниҳод карда шаванд, ки онро ҳамчун калид дар баъзе анборҳо истифода бурдан мумкин аст, пас натиҷаи ҳисобро метавон захира кард ва дафъаи оянда ба он дастрасӣ пайдо кард. Агар ин навиштан ва хондани натиҷа нисбат ба иҷрои функсия тезтар бошад, мо аз ҷиҳати суръат фоида дорем. Маблаги фоида метавонад ба 100, 1000 ва 100 хазор баробар (10^5 истисно аст, вале дар сурати ба таври хеле акибмонда будани база ин комилан имконпазир аст).

Талаботи асосӣ барои системаи кэшкунӣ

Аввалин чизе, ки метавонад барои системаи кэш тақозо шавад, суръати хониши зуд ва ба андозаи каме камтар, суръати навиштан мебошад. Ин дуруст аст, аммо танҳо то он даме, ки мо системаро ба истеҳсолот паҳн кунем.

Биёед ин парвандаро бозӣ кунем.

Фарз мекунем, ки мо бори ҷорӣро бо таҷҳизот таъмин кардем ва ҳоло тадриҷан кэшро ҷорӣ карда истодаем. Шумораи корбарон каме меафзояд, сарборӣ меафзояд - мо каме кэшҳо илова мекунем, онро дар ин ҷо ва он ҷо буред. Ин чанд вақт давом мекунад ва ҳоло вазифаҳои вазнин амалан дигар даъват карда намешаванд - тамоми сарбории асосӣ ба кэш меафтад. Шумораи корбарон дар ин муддат N баробар афзуд.

Ва агар таъминоти ибтидоии сахтафзор 2-5 маротиба бошад, пас бо ёрии кэш мо метавонистем корҳоро 10 маротиба ё дар ҳолати хуб 100 маротиба, дар баъзе ҷойҳо шояд як омил беҳтар кунем. аз 1000. Яъне, дар ҳамон сахтафзор - мо 100 маротиба бештар дархостҳоро коркард мекунем. Аҷаб, шумо сазовори прянка ҳастед!

Аммо ҳоло, дар як лаҳзаи хуб, тасодуфан, система вайрон шуд ва кэш фурӯ рехт. Ҳеҷ чизи махсусе нест - дар ниҳоят, кэш дар асоси талаботи "суръати хондан ва навиштан баланд, боқимонда муҳим нест" интихоб карда шуд.

Нисбат ба бори ибтидой захираи охани мо 2—5 баробар ва бор дар ин муддат 10—100 баробар афзуд. Бо истифода аз кэш, мо зангҳоро барои вазифаҳои вазнин бартараф кардем ва аз ин рӯ ҳама чиз кор кард. Ва акнун, бе кэш, системаи мо чанд маротиба суст мешавад? Бо мо чӣ мешавад? Система меафтад.

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

Хулоса: лоиҳаҳои истеҳсолии серборшуда системаи кэшро талаб мекунанд, ки на танҳо суръати хондан ва навиштанро дошта бошанд, балки инчунин таъмини амнияти маълумот ва муқовимат ба нокомиҳо.

Интихоби нон

Дар лоиҳа бо панели маъмурӣ, интихоб чунин буд: аввал мо Hazelcast насб кардем, зеро Мо аллакай бо ин маҳсулот аз таҷрибаи сайти асосӣ шинос будем. Аммо дар ин ҷо ин интихоб ноком шуд - дар зери профили сарбории мо, Hazelcast на танҳо суст, балки хеле суст аст. Ва он вақт мо аллакай барои санаи барориши он имзо карда будем.

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

Мо чӣ кор кардем:

  1. Мо рӯйхати ҳамаи системаҳоеро, ки Google ва StackOverflow пешниҳод мекунанд, тартиб медиҳем. Каме бештар аз 30
  2. Мо озмоишҳоро бо сарбории хос барои истеҳсолот менависем. Барои ин, мо маълумотеро, ки тавассути система дар муҳити истеҳсолӣ мегузарад, сабт кардем - як навъ бӯйгир барои маълумот на дар шабака, балки дар дохили система. Дар озмоишҳо маҳз ҳамин маълумот истифода шудааст.
  3. Бо тамоми даста, ҳама аз рӯйхат системаи навбатиро интихоб мекунанд, онро танзим мекунанд ва санҷишҳо мегузаронанд. Он аз имтиҳон намегузарад, борро намебарад - мо онро мепартоем ва ба навбати навбатӣ мегузарем.
  4. Дар системаи 17-ум маълум шуд, ки ҳама чиз ноумед аст. Шишаро ларзишро бас кунед, вақти он расидааст, ки ҷиддӣ фикр кунед.

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

Биёед ин вариантро модел кунем (тасаввур кардан душвор аст, ки таҳиягари миёна+ дар холигоҳ зиндагӣ мекунад ва дар вақти интихоб бартарии худро дар мавриди озмоиши кадом маҳсулот ба расмият наовардааст - аз ин рӯ, далелҳои минбаъда бештар назарияшинос/фалсафа аст/ дар бораи хурдсол).

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

Агар шумо нав оғоз карда бошед ва онро google-ро ҷустуҷӯ кунед, фармоиш диҳед ё фармоиш диҳед, аммо дар маҷмӯъ, роҳнамо чунин хоҳад буд. Пеш аз хама, шумо ба Редис дучор мешавед, он дар хама чо шунида мешавад. Он гоҳ шумо хоҳед фаҳмид, ки EhCache системаи қадимтарин ва аз ҳама исботшуда аст. Минбаъд мо дар бораи Tarantool, як рушди ватанӣ, ки ҷанбаи беназири ҳалли худро дорад, хоҳем навишт. Ва инчунин Ignite, зеро он ҳоло дар афзоиши маъруфият аст ва аз дастгирии SberTech бархурдор аст. Дар охир Hazelcast низ вуҷуд дорад, зеро дар ҷаҳони корхона он аксар вақт дар байни ширкатҳои калон пайдо мешавад.

Рӯйхат пурра нест; даҳҳо системаҳо мавҷуданд. Ва мо танҳо як чизро вайрон мекунем. Биёед 5 системаи интихобшударо барои "озмуни зебоӣ" гирем ва интихоб кунем. Кӣ ғолиб мешавад?

Redis

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

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

EhCache

EhCache - "кэши васеъ истифодашаванда барои Java" (тарҷумаи шиор аз вебсайти расмӣ). Инчунин кушодаасос. Ва он гоҳ мо мефаҳмем, ки Редис на барои java, балки умумӣ аст ва барои муошират бо он ба шумо парпеч лозим аст. Ва EhCache қулайтар хоҳад буд. Система боз чӣ ваъда медиҳад? Эътимоднокӣ, исботшуда, функсияи пурра. Хуб, он инчунин маъмултарин аст. Ва кэшҳои терабайтҳои маълумот.

Redis фаромӯш шудааст, ман омодаам EhCache -ро интихоб кунам.

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

Тарантул

Тарантул - ба нишони "Платформаи ҳамгироии маълумот дар вақти воқеӣ" мувофиқат мекунад. Ин хеле мураккаб ба назар мерасад, аз ин рӯ мо саҳифаро ба таври муфассал хонем ва як изҳороти баландро пайдо мекунем: "100% маълумотро дар RAM кэш мекунад." Ин бояд саволҳоро ба миён орад - дар ниҳоят, метавонад маълумоти бештар аз хотира бошад. Шарҳ ин аст, ки ин маънои онро дорад, ки Tarantool барои навиштани маълумот ба диск аз хотира сериализатсияро иҷро намекунад. Ба ҷои ин, он хусусиятҳои сатҳи пасти системаро истифода мебарад, вақте ки хотира ба таври оддӣ ба системаи файлӣ бо иҷрои хеле хуби I/O харита карда мешавад. Умуман, онҳо як чизи аҷиб ва олӣ карданд.

Биёед ба татбиқҳо назар андозем: шоҳроҳи корпоративии Mail.ru, Avito, Beeline, Megafon, Alfa-Bank, Gazprom...

Агар дар бораи Tarantool то ҳол ягон шубҳа вуҷуд дошта бошад, пас парвандаи татбиқ дар Mastercard маро ба итмом мерасонад. Ман Tarantool мегирам.

Аммо ба ҳар ҳол…

Равшан аст

... боз чанде ҳаст Равшан аст, ҳамчун "платформаи ҳисоббарории дохили хотира... суръати дар хотира дар петабайтҳои додаҳо" ҳисоб карда мешавад. Дар ин ҷо низ бартариҳои зиёд мавҷуданд: кэши дар дохили хотира тақсимшуда, нигоҳдории зудтарини арзиш ва кэш, миқёси уфуқӣ, дастрасии баланд, якпорчагии қатъӣ. Умуман, маълум мешавад, ки зудтарин Ignite аст.

Татбиқҳо: Сбербанк, American Airlines, Yahoo! Япония. Ва он гоҳ ман фаҳмидам, ки Ignite на танҳо дар Сбербанк татбиқ карда мешавад, балки дастаи SberTech одамони худро ба худи дастаи Ignite мефиристад, то маҳсулотро такмил диҳад. Ин комилан ҷолиб аст ва ман омодаам, ки Ignite -ро бигирам.

Ин комилан норавшан аст, ки чаро, ман ба нуқтаи панҷум назар мекунам.

фундук

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

Ин аст, ман омодаам, ки Ҳазелкастро бигирам.

Муқоиса

Аммо агар нигоҳ кунед, ҳамаи панҷ номзадро тавре тасвир кардаанд, ки ҳар кадоми онҳо беҳтаринанд. Чӣ тавр интихоб кардан? Мо метавонем бубинем, ки кадоме аз ҳама маъмул аст, муқоисаро ҷустуҷӯ кунед ва дарди сар аз байн меравад.

Мо чунинеро пайдо мекунем обзор, 5 системаи моро интихоб кунед.

Чӣ тавр мо дар Sportmaster системаи кэшро интихоб кардем. Қисми 1

Дар ин ҷо онҳо мураттаб шудаанд: Redis дар боло аст, Hazelcast дар ҷои дуюм, Tarantool ва Ignite маъруфият пайдо мекунанд, EhCache ҳамон буд ва боқӣ мемонад.

Аммо биёед бубинем усули ҳисоб: истинодҳо ба вебсайтҳо, таваҷҷӯҳи умумӣ ба система, пешниҳодҳои кор - олӣ! Яъне, вақте ки системаи ман ноком мешавад, ман мегӯям: "Не, ин боэътимод аст! Пешниҳодҳои корӣ зиёданд...” Чунин муқоисаи оддӣ кор намекунад.

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

Хуб, биёед таслим нашавем, биёед муқоисаи мустақими системаҳоро пайдо кунем. Биёед ду варианти болоро гирем - Redis ва Hazelcast. Мо ба суръат таваҷҷӯҳ дорем ва мо онҳоро дар асоси ин параметр муқоиса мекунем.

Гц против Редис

Мо инро меёбем муқоиса:
Чӣ тавр мо дар Sportmaster системаи кэшро интихоб кардем. Қисми 1

Кабуд Редис аст, сурх аст Хазелкаст. Hazelcast дар ҳама ҷо ғалаба мекунад ва барои ин асос вуҷуд дорад: он бисёр ришта аст, ба таври хеле оптимизатсияшуда, ҳар як ришта бо қисмати худ кор мекунад, бинобар ин ҳеҷ гуна блок вуҷуд надорад. Ва Redis як ришта аст; он аз CPU-ҳои муосири бисёраслӣ манфиат намеорад. Hazelcast дорои I/O асинхронӣ, Redis-Jedis розеткаҳои бастакунанда дорад. Дар ниҳоят, Hazelcast протоколи бинариро истифода мебарад ва Редис ба матн мутамарказ аст, яъне он бесамар аст.

Ба хар хол, биёед ба манбаи дигари мукоиса мурочиат кунем. Ӯ ба мо чӣ нишон медиҳад?

Редис против Гц

Дигар муқоиса:
Чӣ тавр мо дар Sportmaster системаи кэшро интихоб кардем. Қисми 1

Дар ин ҷо, баръакс, сурх Редис аст. Яъне, Редис аз ҷиҳати иҷроиш аз Ҳазелкаст бартарӣ дорад. Ҳазелкаст дар муқоисаи аввал ғолиб омад, Редис дар дуввум. Ана хеле дақиқ фаҳмонд, ки чаро Ҳазелкаст дар муқоисаи қаблӣ ғолиб омад.

Маълум мешавад, ки натиҷаи аввалин воқеан тақаллуб шудааст: Редис дар қуттии асосӣ гирифта шуда буд ва Ҳазелкаст барои парвандаи санҷишӣ таҳия шудааст. Пас маълум мешавад: аввалан, мо ба касе бовар карда наметавонем ва дуюм, вақте ки мо ниҳоят системаро интихоб мекунем, мо бояд онро дуруст танзим кунем. Ин танзимот даҳҳо, қариб садҳо параметрҳоро дар бар мегиранд.

Шишаро ҷунбондан

Ва ман метавонам тамоми равандеро, ки мо ҳоло анҷом додем, бо истиноди зерин шарҳ диҳам: "Ҷунбиш кардани шиша." Яъне, ҳоло ба шумо лозим нест, ки барномасозӣ кунед, ҳоло чизи асосӣ ин аст, ки stackoverflow-ро хонед. Ва ман дар дастаи худ шахсе дорам, ки дар лаҳзаҳои муҳим маҳз ҳамин тавр кор мекунад.

Ӯ чӣ кор мекунад? Вай чизи шикастаро мебинад, пайи стекро мебинад, аз он калимаҳоро мегирад (ки инҳо таҷрибаи ӯ дар барнома мебошанд), дар Google ҷустуҷӯ мекунанд, дар байни ҷавобҳо stackoverflow пайдо мекунад. Бе хондан, фикр накарда, дар байни ҷавобҳои савол чизеро, ки ба ҷумлаи «ин тавр кун, ин корро кун» интихоб мекунад (интихоби чунин ҷавоб истеъдоди ӯст, зеро на ҳамеша ҷавобе, ки бештар лайк гирифтааст), дахл дорад, ба назар мерасад: агар чизе дигар шуда бошад, пас бузург. Агар он тағир наёфта бошад, онро баргардонед. Ва оғоз-санҷиш-ҷустуҷӯро такрор кунед. Ва бо ин роҳи интуитивӣ, ӯ кафолат медиҳад, ки код пас аз чанд вақт кор кунад. Намедонад чаро, намедонад чи кор кард, фахмонда наметавонад. Аммо! Ин сироят кор мекунад. Ва «оташ хомуш шуд». Акнун биёед бифаҳмем, ки мо чӣ кор кардем. Вақте ки барнома кор мекунад, он фармоиши миқёси осонтар аст. Ва ин вақти зиёдро сарфа мекунад.

Ин усул бо ин мисол хеле хуб шарҳ дода шудааст.

Як вақтҳо дар шиша ҷамъ кардани киштии бодбондор хеле маъмул буд. Дар баробари ин, киштии бодбондор калон ва нозук буда, гардани шиша хеле танг аст, онро ба дарун тела додан мумкин нест. Онро чӣ тавр ҷамъ кардан мумкин аст?

Чӣ тавр мо дар Sportmaster системаи кэшро интихоб кардем. Қисми 1

Чунин усул вуҷуд дорад, ки хеле зуд ва хеле самаранок аст.

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

Мо инро ба касе нишон медиҳем: "Серёга, мебинӣ!?" Ва дар хакикат, аз дур он ба киштй монанд аст. Аммо ба ин давом додан мумкин нест.

Роҳи дигаре ҳаст. Онҳоро бачаҳои пешрафта, ба монанди ҳакерҳо истифода мебаранд.

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

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

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

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

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

Дар куҷо бояд ботил-гардани ҷустуҷӯ

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

Чӣ тавр мо дар Sportmaster системаи кэшро интихоб кардем. Қисми 1

Агар система тақсим карда шавад, пас мо якчанд серверҳо дорем (6). Фарз мекунем, ки чаҳор нафар ҳастанд (ҷой додани онҳо дар расм қулай аст, аммо, албатта, шумораи онҳо метавонад ба қадри шумо бошад). Агар серверҳо дар гиреҳҳои гуногун бошанд, ин маънои онро дорад, ки ҳамаи онҳо як кодро иҷро мекунанд, ки барои таъмини кластер будани ин гиреҳҳо масъул аст ва дар сурати танаффус, якдигарро мепайвандад ва эътироф мекунад.

Мо инчунин ба мантиқи код ниёз дорем (2), ки воқеан дар бораи кэш аст. Мизоҷон бо ин код тавассути баъзе API муошират мекунанд. Рамзи муштарӣ (1) метавонад ё дар дохили ҳамон JVM бошад ё ба он тавассути шабака дастрасӣ пайдо кунад. Мантиқе, ки дар дохили он амалӣ карда мешавад, қарори он аст, ки кадом объектҳо дар кэш гузошта мешаванд ва кадоме аз онҳо хориҷ карда мешавад. Мо барои нигоҳ доштани кэш аз хотира (3) истифода мебарем, аммо дар ҳолати зарурӣ мо метавонем як қисми маълумотро дар диск нигоҳ дорем (4).

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

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

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

фундук

Биёед бубинем, ки чӣ гуна ин таҷзияро ба рӯйхати мо татбиқ кардан мумкин аст. Масалан, Hazelcast.

Барои гузоштан/гирифтани маълумот аз Hazelcast, рамзи муштарӣ (1) ба api дастрасӣ пайдо мекунад. Hz ба шумо имкон медиҳад, ки серверро ҳамчун дарунсохт иҷро кунед ва дар ин ҳолат, дастрасӣ ба api як занги методӣ дар дохили JVM мебошад, ки онро ройгон ҳисобидан мумкин аст.

Барои он ки мантиқ дар (2) кор кунад, Гц ба хэши массиви байтҳои калиди силсилавӣ такя мекунад - яъне калид дар ҳама ҳолат сериализатсия мешавад. Ин барои Гз.
Стратегияҳои эволютсия хуб амалӣ карда мешаванд, аммо барои ҳолатҳои махсус шумо метавонед худатонро илова кунед. Ба шумо лозим нест, ки дар бораи ин қисм хавотир шавед.

Захира (4) васл кардан мумкин аст. бузург. Муомила (5) барои воридшуда метавонад фаврӣ ҳисобида шавад. Мубодилаи маълумот байни гиреҳҳои кластер (6) - бале, вуҷуд дорад. Ин сармоягузорӣ ба таҳаммулпазирии хатоҳо аз ҳисоби суръат аст. Хусусияти Hz Near-cache ба шумо имкон медиҳад, ки нархро паст кунед - маълумоте, ки аз дигар гиреҳҳои кластер гирифта мешавад, кэш карда мешавад.

Дар чунин шароит барои баланд бардоштани суръат чй бояд кард?

Масалан, барои пешгирӣ кардани сериализатсияи калид дар (2) - кэши дигарро дар болои Hazelcast барои гармтарин маълумот замима кунед. Sportmaster бо ин мақсад Кофеинро интихоб кард.

Барои гардиш дар сатҳ (6), Гц ду намуди нигоҳдорӣ пешниҳод мекунад: IMap ва ReplicatedMap.
Чӣ тавр мо дар Sportmaster системаи кэшро интихоб кардем. Қисми 1

Қобили зикр аст, ки чӣ гуна Ҳазелкаст ба стеки технологияи Sportmaster ворид шуд.

Дар соли 2012, вақте ки мо дар аввалин пилотии сайти оянда кор мекардем, маҳз Hazelcast буд, ки пайванди аввалине буд, ки системаи ҷустуҷӯӣ баргашт. Шиносой «аввалин бор» огоз ёфт — мо аз он чиз мафтун шудем, ки хамагй баъди ду соат, вакте ки мо Гц-ро ба система часпондем, он кор кард. Ва он хуб кор кард. То охири рӯз мо як қатор санҷишҳоро анҷом додем ва хурсанд шудем. Ва ин захираи тавоноӣ барои бартараф кардани ногаҳонӣ, ки Ҳз бо мурури замон ба вуҷуд овард, кофӣ буд. Ҳоло дастаи Sportmaster сабабе надорад, ки аз Ҳазелкаст даст кашад.

Аммо чунин далелҳо ба монанди "пайванди аввал дар системаи ҷустуҷӯӣ" ва "HelloWorld зуд ҷамъ карда шуд", албатта, истисно ва хусусияти лаҳзае, ки интихоб сурат гирифт. Санҷишҳои воқеии системаи интихобшуда аз ворид шудан ба истеҳсолот оғоз мешаванд ва маҳз дар ин марҳила, шумо бояд ҳангоми интихоби ҳама гуна система, аз ҷумла кэш, диққат диҳед. Дар асл, дар ҳолати мо мо метавонем бигӯем, ки мо Hazelcast-ро тасодуфан интихоб кардем, аммо баъд маълум шуд, ки мо дуруст интихоб кардем.

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

Барои ҳамаи ин талабот, Hazelcast бешубҳа ба лоиҳа мувофиқат мекунад.

Давом дорад

Аммо Hazelcast як панацея нест. Дар соли 2017, мо Hazelcast-ро барои кэши администратор интихоб кардем, танҳо дар асоси таассуроти хуб аз таҷрибаи гузашта. Ин дар як шӯхии хеле бераҳмона нақши калидӣ бозид, ки аз сабаби он мо дар ҳолати душвор қарор гирифтем ва дар тӯли 60 рӯз аз он «каҳрамонона» раҳо шудем. Аммо бештар дар бораи он дар қисми оянда.

Дар ин миён... Кодекси нав муборак!

Манбаъ: will.com

Илова Эзоҳ