Ман ба шумо тавсия медиҳам, ки стенограммаи лексияи "Hadoop. ZooKeeper" -ро аз силсилаи "Усулҳои коркарди паҳншудаи ҳаҷми калони маълумот дар Hadoop" хонед.
ZooKeeper чист, ҷои он дар экосистемаи Hadoop. Ҳақиқатҳо дар бораи компютерҳои тақсимшуда. Диаграммаи системаи тақсимоти стандартӣ. Мушкилот дар ҳамоҳангсозии системаҳои тақсимшуда. Мушкилоти маъмулии ҳамоҳангсозӣ. Принсипҳои тарҳрезии ZooKeeper. Модели маълумоти ZooKeeper. байракхои znode. Сеансхо. API-и муштарӣ. Примитивҳо (конфигуратсия, узвияти гурӯҳ, қулфҳои оддӣ, интихоби роҳбар, қулфкунӣ бе таъсири гала). Меъмории ZooKeeper. ZooKeeper DB. ЗАБ. Коркарди дархост.


Имрӯз мо дар бораи ZooKeeper сӯҳбат хоҳем кард. Ин чиз хеле фоиданок аст. Он, ба монанди ҳама гуна маҳсулоти Apache Hadoop, логотип дорад. Он одамро тасвир мекунад.
Пеш аз ин, мо асосан дар бораи он, ки чӣ гуна маълумотро дар он ҷо коркард кардан мумкин аст, чӣ гуна нигоҳ доштани он, яъне чӣ гуна онро истифода бурдан ва бо он кор кардан сӯҳбат мекардем. Ва имрӯз ман мехоҳам каме дар бораи сохтани замимаҳои тақсимшуда сӯҳбат кунам. Ва ZooKeeper яке аз он чизҳоест, ки ба шумо имкон медиҳад ин масъаларо содда кунед. Ин як намуди хидматест, ки барои як навъ ҳамоҳангсозии ҳамкории равандҳо дар системаҳои тақсимшуда, дар барномаҳои тақсимшуда пешбинӣ шудааст.
Талабот ба ин гуна замимаҳо рӯз то рӯз бештар мешавад, ки курси мо аз ҳамин иборат аст. Аз як тараф, MapReduce ва ин чаҳорчӯбаи омода ба шумо имкон медиҳад, ки ин мураккабиро яксон кунед ва барномасозро аз навиштани ибтидоӣ, ба монанди ҳамкорӣ ва ҳамоҳангсозии равандҳо озод кунед. Аммо аз тарафи дигар, ҳеҷ кас кафолат намедиҳад, ки ба ҳар ҳол ин корро кардан лозим нест. MapReduce ё дигар чаҳорчӯбаҳои тайёр на ҳамеша баъзе ҳолатҳоеро, ки бо истифода аз ин амалӣ карда намешаванд, пурра иваз мекунанд. Аз он ҷумла худи MapReduce ва як қатор лоиҳаҳои дигари Apache, онҳо инчунин барномаҳои тақсимшуда мебошанд. Ва барои осон кардани навиштан, онҳо ZooKeeper навиштанд.
Мисли ҳама барномаҳои марбут ба Hadoop, он аз ҷониби Yahoo! Ҳоло он як барномаи расмии Apache мебошад. Он ба мисли HBase фаъолона инкишоф наёфтааст. Агар шумо ба JIRA HBase равед, пас ҳар рӯз як қатор гузоришҳои хатогӣ, як қатор пешниҳодҳо барои оптимизатсия кардани чизе мавҷуданд, яъне ҳаёт дар лоиҳа пайваста идома дорад. Ва ZooKeeper, аз як тараф, маҳсулоти нисбатан содда аст, ва аз тарафи дигар, ин эътимоднокии онро таъмин мекунад. Ва истифодаи он хеле осон аст, бинобар ин он дар замимаҳо дар экосистемаи Hadoop ба стандарт табдил ёфтааст. Аз ин рӯ, ман фикр кардам, ки аз нав дида баромадани он муфид хоҳад буд, то бифаҳмем, ки он чӣ гуна кор мекунад ва чӣ гуна истифода бурдани он.

Ин расмест аз лексияҳое, ки мо доштем. Мо гуфта метавонем, ки он ба ҳама чизҳое, ки то ҳол баррасӣ кардем, ортогоналӣ аст. Ва ҳар чизе, ки дар ин ҷо нишон дода шудааст, то ин ё он дараҷа бо ZooKeeper кор мекунад, яъне ин хидматест, ки ҳамаи ин маҳсулотҳоро истифода мебарад. На HDFS ва на MapReduce хидматҳои шабеҳи худро, ки махсусан барои онҳо кор мекунанд, наменависанд. Мувофиқи он, ZooKeeper истифода мешавад. Ва ин рушд ва баъзе чизҳои марбут ба хатогиҳоро осон мекунад.

Ин ҳама аз куҷо пайдо мешавад? Чунин ба назар мерасад, ки мо ду барномаро дар компютерҳои гуногун ба ҳам мепайвандем, онҳоро бо сатр ё тор пайваст кардем ва ҳама чиз кор мекунад. Аммо мушкилот дар он аст, ки Шабака беэътимод аст ва агар шумо трафикро бубинед ё ба он чизе, ки дар сатҳи паст рух медиҳад, назар кунед, ки чӣ тавр муштариён дар Шабака муомила мекунанд, шумо аксар вақт мебинед, ки баъзе бастаҳо гум мешаванд ё дубора фиристода мешаванд. Бесабаб нест, ки протоколҳои TCP ихтироъ карда шудаанд, ки ба шумо имкон медиҳанд, ки сессияи муайян таъсис диҳед ва интиқоли паёмҳоро кафолат диҳед. Аммо дар ҳар сурат, ҳатто TCP наметавонад ҳамеша шуморо наҷот диҳад. Ҳама чиз як вақт дорад. Шабака метавонад танҳо барои муддате афтад. Он метавонад танҳо чашмак мезанад. Ва ин ҳама ба он оварда мерасонад, ки шумо наметавонед ба боэътимод будани шабака такя кунед. Ин фарқияти асосӣ аз навиштани замимаҳои параллелӣ, ки дар як компютер ё дар як суперкомпютер кор мекунанд, дар он ҷое, ки Шабака мавҷуд нест, дар он ҷо автобуси мубодилаи маълумот боэътимодтар дар хотира мавҷуд аст. Ва ин фарқияти асосӣ аст.
Дар байни чизҳои дигар, ҳангоми истифодаи Шабака ҳамеша таъхири муайян вуҷуд дорад. Диск низ онро дорад, аммо Шабака бештар аз он дорад. Нигоҳдорӣ ин як вақти таъхир аст, ки метавонад хурд ё хеле назаррас бошад.
Топологияи шабака тағйир меёбад. Топология чист - ин ҷойгиркунии таҷҳизоти шабакавии мост. Дар он ҷо марказҳои маълумот мавҷуданд, рафҳо мавҷуданд, ки дар он ҷо меистанд, шамъҳо мавҷуданд. Ҳамаи инро метавон дубора пайваст кард, интиқол дод ва ғайра. Ин ҳамаро низ ба назар гирифтан лозим аст. Номҳои IP иваз мешаванд, масир, ки тавассути он трафики мо ҳаракат мекунад, тағир меёбад. Инро низ ба назар гирифтан лозим аст.
Шабака инчунин метавонад аз ҷиҳати таҷҳизот тағйир ёбад. Аз амалия, ман гуфта метавонам, ки муҳандисони шабакаи мо воқеан дӯст медоранд, ки дар шамъҳо давра ба давра чизеро нав кунанд. Ногаҳон як нармафзори нав пайдо шуд ва онҳо ба баъзе кластери Hadoop таваҷҷӯҳи хоса надоштанд. Онҳо кори худро доранд. Барои онҳо чизи асосӣ ин аст, ки Шабака кор мекунад. Мутаносибан, онҳо мехоҳанд чизеро дар он ҷо дубора бор кунанд, дар сахтафзори худ дурахш кунанд ва сахтафзор низ давра ба давра тағйир меёбад. Хамаи инро ба таври бояду шояд ба назар гирифтан лозим аст. Ҳамаи ин ба барномаи паҳншудаи мо таъсир мерасонад.
Одатан одамоне, ки бо миқдори зиёди маълумот кор мекунанд, бо ягон сабаб боварӣ доранд, ки Интернет беохир аст. Агар дар он ҷо файли дорои якчанд терабайт мавҷуд бошад, шумо метавонед онро ба сервер ё компютери худ бурда, бо истифода аз он кушоед гурба ва тамошо кунед. Хатогии дигар дар Сабаби ба журналхо нигаред. Ҳеҷ гоҳ ин корро накунед, зеро ин бад аст. Азбаски Vim кӯшиш мекунад, ки ҳама чизро буфер кунад, ҳама чизро ба хотира бор кунад, хусусан вақте ки мо тавассути ин гузориш ҳаракат мекунем ва чизеро ҷустуҷӯ мекунем. Ин чизҳое ҳастанд, ки фаромӯш шудаанд, вале ба назар гирифта мешаванд.

Навиштани як барномае, ки дар як компютер бо як протсессор кор мекунад, осонтар аст.
Вақте ки системаи мо афзоиш меёбад, мо мехоҳем ҳамаашро параллел кунем ва онро на танҳо дар компютер, балки дар кластер ҳам параллел кунем. Саволе ба миён меояд: ин масъаларо чй тавр мутобик кардан мумкин аст? Барномаҳои мо ҳатто метавонанд бо ҳамдигар ҳамкорӣ накунанд, аммо мо якчанд равандро дар як қатор серверҳо иҷро кардем. Ва чӣ гуна бояд назорат кард, ки ҳама чиз барои онҳо хуб аст? Масалан, онҳо тавассути Интернет чизе мефиристанд. Онҳо бояд дар бораи ҳолати худ дар ҷое, масалан, дар ягон намуди пойгоҳи додаҳо ё гузоришҳо нависед, пас ин гузоришро ҷамъоварӣ кунанд ва сипас онро дар ҷое таҳлил кунанд. Илова бар ин, мо бояд ба назар гирем, ки раванд кор мекард ва кор мекард, ногаҳон дар он ягон хатогӣ пайдо шуд ё он ба садама дучор шуд, пас мо то чӣ андоза зуд аз он огоҳ мешавем?
Маълум аст, ки хамаи инро зуд назорат кардан мумкин аст. Ин ҳам хуб аст, аммо мониторинг як чизи маҳдудест, ки ба шумо имкон медиҳад, ки баъзе чизҳоро дар сатҳи олӣ назорат кунед.
Вақте ки мо мехоҳем, ки равандҳои мо бо ҳамдигар ҳамкорӣ кунанд, масалан, ба ҳамдигар баъзе маълумот фиристанд, пас савол низ ба миён меояд - ин чӣ гуна мешавад? Оё ягон намуди мусобиқа вуҷуд дорад, оё онҳо якдигарро аз нав менависанд, оё маълумот дуруст меояд, оё дар роҳ чизе гум мешавад? Мо бояд як навъ протокол таҳия кунем ва ғайра.
Мутобик кардани хамаи ин процессхо кори майда-чуйда нест. Ва он таҳиякунандаро маҷбур мекунад, ки ба сатҳи боз ҳам поёнтар биравад ва системаҳоро ё аз сифр, ё на аз сифр нависад, аммо ин он қадар оддӣ нест.
Агар шумо як алгоритми криптографиро пешниҳод кунед ё ҳатто онро амалӣ кунед, онро фавран партоед, зеро эҳтимолан он барои шумо кор намекунад. Он эҳтимолан як қатор хатогиҳоеро дар бар мегирад, ки шумо пешниҳод карданро фаромӯш кардаед. Ҳеҷ гоҳ онро барои ягон чизи ҷиддӣ истифода набаред, зеро он эҳтимолан ноустувор хоҳад буд. Зеро ҳамаи алгоритмҳои мавҷуда аз ҷониби вақт дар муддати хеле тӯлонӣ санҷида шудаанд. Он аз ҷониби ҷомеа халалдор мешавад. Ин як мавзӯи алоҳида аст. Ва дар ин ҷо низ ҳамин тавр аст. Агар имконпазир бошад, ки ягон намуди синхронизатсияи равандҳоро худатон амалӣ накунед, пас беҳтар аст, ки ин корро накунед, зеро он хеле мураккаб аст ва шуморо ба роҳи ларзони ҷустуҷӯи доимии хатоҳо мебарад.
Имрӯз мо дар бораи ZooKeeper гап мезанем. Аз як тараф, ин чаҳорчӯба аст, аз тарафи дигар, он хидматест, ки зиндагии таҳиягарро осон мекунад ва татбиқи мантиқ ва ҳамоҳангсозии равандҳои моро то ҳадди имкон осон мекунад.

Биёед ба хотир орем, ки системаи тақсимшудаи стандартӣ чӣ гуна буда метавонад. Ин аст он чизе ки мо дар бораи он сӯҳбат кардем - HDFS, HBase. Раванди Master мавҷуд аст, ки коргарон ва равандҳои ғуломро идора мекунад. Вай барои ҳамоҳангсозӣ ва тақсими вазифаҳо, аз нав ба кор даровардани коргарон, ба кор андохтани нав ва тақсимоти бор масъул аст.

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

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

Нақшаи боз ҳам пешрафтатаре вуҷуд дорад, ки вақте ки мо Устод надорем, ҳама гиреҳҳо ғуломони усто ҳастанд, ки дар рафторашон гуногунанд. Аммо онҳо то ҳол бояд бо ҳамдигар ҳамкорӣ кунанд, аз ин рӯ барои ҳамоҳангсозии ин амалҳо то ҳол хидмате боқӣ мемонад. Эҳтимол, Кассандра, ки аз рӯи ин принсип кор мекунад, ба ин схема мувофиқат мекунад.
Гуфтан душвор аст, ки кадоме аз ин схемахо бехтар кор мекунанд. Ҳар яке аз тарафҳои мусбат ва манфии худро дорад.

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

Ва ин схема (боло) шояд мураккабтар, вале боэътимодтар бошад.

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

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

Бинобар ин, мушкилоти асосие, ки ҳангоми навиштани системаҳои тақсимшуда ба миён меоянд, конфигуратсия мебошанд. Мо як навъ ариза менависем. Агар ин оддӣ бошад, пас мо ҳама навъҳои рақамҳоро дар код рамзгузорӣ мекунем, аммо ин номувофиқ аст, зеро агар мо қарор диҳем, ки ба ҷои танаффуси ним сония мо як сонияро танаффус мехоҳем, пас мо бояд барномаро дубора тартиб диҳем ва ҳама чизро аз нав гузоред. Ин як чиз аст, вақте ки он дар як мошин аст, вақте ки шумо метавонед онро бозоғоз намоед, аммо вақте ки мо мошинҳои зиёде дорем, мо бояд ҳама чизро доимо нусхабардорӣ кунем. Мо бояд кӯшиш кунем, ки барномаро танзимшаванда созем.
Дар ин ҷо сухан дар бораи конфигуратсияи статикӣ барои равандҳои система меравад. Ин комилан нест, шояд аз нуқтаи назари системаи амалиётӣ, он метавонад конфигуратсияи статикӣ барои равандҳои мо бошад, яъне ин конфигуратсияест, ки онро танҳо гирифтан ва нав кардан мумкин нест.
Инчунин конфигуратсияи динамикӣ мавҷуд аст. Ин параметрҳое мебошанд, ки мо мехоҳем дар парвоз тағир диҳем, то онҳо дар он ҷо гирифта шаванд.
Мушкилот дар ин ҷо чист? Мо конфигуратсияро нав кардем, онро паҳн кардем, пас чӣ? Мушкилот дар он аст, ки аз як тараф мо конфигуратсияро паҳн кардем, аммо чизи навро фаромӯш кардем, конфигуратсия дар он ҷо монд. Дуюм, вақте ки мо ба кор медаромадем, конфигуратсия дар баъзе ҷойҳо нав карда шуд, аммо дар баъзе ҷойҳо не. Ва баъзе равандҳои барномаи мо, ки дар як мошин кор мекунанд, бо конфигуратсияи нав ва дар ҷое бо конфигуратсияи кӯҳна аз нав оғоз карда шуданд. Ин метавонад боиси он гардад, ки барномаи тақсимшудаи мо аз нуқтаи назари конфигуратсия номувофиқ бошад. Ин мушкилот маъмул аст. Барои конфигуратсияи динамикӣ, он бештар мувофиқ аст, зеро он маънои онро дорад, ки онро дар парвоз тағир додан мумкин аст.
Мушкилоти дигар узвият дар гурӯҳ аст. Мо ҳамеша як қатор коргарон дорем, мо ҳамеша мехоҳем бидонем, ки кадоме аз онҳо зинда аст, кадоме мурда аст. Агар Устод вуҷуд дошта бошад, пас ӯ бояд фаҳмад, ки кадом коргаронро ба мизоҷон равона кардан мумкин аст, то онҳо ҳисобҳоро иҷро кунанд ё бо маълумот кор кунанд ва кадоме наметавонанд. Мушкилоте, ки ҳамеша ба миён меояд, ин аст, ки мо бояд бидонем, ки дар кластери мо кӣ кор мекунад.
Мушкилоти маъмулии дигар ин интихоботи роҳбар аст, вақте ки мо мехоҳем бидонем, ки кӣ масъул аст. Як мисол такрорист, вақте ки мо ягон раванд дорем, ки амалиёти навиштанро қабул мекунад ва сипас онҳоро дар байни равандҳои дигар такрор мекунад. Ӯ сарвар мешавад, ҳама ба ӯ итоат мекунанд, ба ӯ пайравӣ мекунанд. Равандеро интихоб кардан лозим аст, ки он барои ҳама якранг бошад, то маълум нашавад, ки ду роҳбар интихоб шудаанд.
Инчунин дастрасии мутақобилан истисноӣ вуҷуд дорад. Масъала дар ин ҷо мураккабтар аст. Мутекс вуҷуд дорад, вақте ки шумо барномаҳои бисёрсоҳавӣ менависед ва мехоҳед дастрасӣ ба баъзе захираҳо, масалан, ячейкаи хотира маҳдуд карда шавад ва танҳо тавассути як ришта иҷро карда шавад. Дар ин ҷо манбаъ метавонад чизи абстракттар бошад. Ва замимаҳои гуногун аз гиреҳҳои гуногуни Шабакаи мо бояд танҳо дастрасии истисноиро ба манбаи додашуда гиранд, на ин ки ҳар кас онро тағир диҳад ё дар он ҷо чизе нависад. Инҳо қуфлҳо ном доранд.
ZooKeeper ба шумо имкон медиҳад, ки ҳамаи ин мушкилотро ба ин ё он дараҷа ҳал кунед. Ва ман бо мисолҳо нишон медиҳам, ки чӣ тавр он ба шумо имкон медиҳад, ки ин корро кунед.

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

ZooKeeper метавонад дар ду режим кор кунад. Аввалинаш мустақилона, дар як гиреҳ аст. Ин барои санҷиш қулай аст. Он инчунин метавонад дар режими кластерӣ, дар ҳар шумораи гиреҳҳо кор кунад. серверҳоАгар мо кластери 100-мошина дошта бошем, он ҳатман дар 100 мошин кор намекунад. Барои ҷудо кардани чанд мошине, ки ZooKeeper метавонад кор кунад, кофӣ аст. Ва он ба принсипи дастрасии баланд риоя мекунад. ZooKeeper нусхаи пурраи маълумотро дар ҳар як мисоли иҷрошаванда нигоҳ медорад. Ман баъдтар шарҳ медиҳам, ки он чӣ гуна ин корро мекунад. Он маълумотро тақсим ё тақсим намекунад. Аз як тараф, ин як камбудӣ аст, зеро мо наметавонем маълумоти зиёдро нигоҳ дорем, аммо аз тарафи дигар, он нолозим аст. Он барои ин тарҳрезӣ нашудааст; он пойгоҳи додаҳо нест.
Маълумотро дар тарафи муштарӣ кэш кардан мумкин аст. Ин як принсипи стандартист, то ки мо хидматро қатъ накунем ва онро бо ҳамон дархостҳо бор накунем. Муштарии оқил одатан дар бораи ин медонад ва онро кэш мекунад.
Масалан, дар ин чо чизе тагьир ёфтааст. Як намуди ариза вуҷуд дорад. Роҳбари нав интихоб шуд, ки масалан, барои коркарди амалиёти навиштан масъул аст. Ва мо мехоҳем, ки маълумотро такрор кунем. Як ҳалли он аст, ки онро дар як ҳалқа ҷойгир кунед. Ва мо доимо хидмати худро зери шубҳа мегузорем - оё чизе тағйир ёфт? Варианти дуюм оптималтар аст. Ин як механизми соатест, ки ба шумо имкон медиҳад, ки муштариёнро дар бораи тағир додани чизе огоҳ кунед. Ин усули арзонтар аз ҷиҳати захираҳо ва барои муштариён қулайтар аст.

Мизоҷ корбарест, ки ZooKeeper-ро истифода мебарад.
Сервер худи раванди ZooKeeper аст.
Znode чизи асосӣ дар ZooKeeper аст. Ҳама znodeҳо аз ҷониби ZooKeeper дар хотира нигоҳ дошта мешаванд ва дар шакли диаграммаи иерархӣ, дар шакли дарахт ташкил карда мешаванд.
Ду намуди амалиёт вуҷуд дорад. Якум ин навсозӣ/навиштан аст, вақте ки ягон амалиёт ҳолати дарахти моро тағир медиҳад. Дарахт маъмул аст.
Ва мумкин аст, ки муштарӣ як дархостро иҷро намекунад ва ҷудо карда мешавад, аммо метавонад сессияеро таъсис диҳад, ки тавассути он бо ZooKeeper ҳамкорӣ мекунад.

Модели додаҳои ZooKeeper ба системаи файлӣ шабоҳат дорад. Як решаи стандартӣ вуҷуд дорад ва он гоҳ мо гӯё тавассути директорияҳое гузаштем, ки аз реша меравад. Ва он гоҳ каталоги сатҳи якум, сатҳи дуюм. Ин ҳама znodes аст.
Ҳар як znode метавонад баъзе маълумотро нигоҳ дорад, одатан на он қадар калон, масалан, 10 килобайт. Ва ҳар як znode метавонад шумораи муайяни кӯдакон дошта бошад.

Znodes дар якчанд намуд меоянд. Онҳо метавонанд эҷод карда шаванд. Ва ҳангоми сохтани znode, мо навъи онро муайян мекунем, ки он бояд ба он тааллуқ дошта бошад.
Ду намуд вуҷуд дорад. Аввалин парчами эфемерӣ мебошад. Znode дар як сессия зиндагӣ мекунад. Масалан, муштарӣ сессия таъсис додааст. Ва то даме, ки ин иҷлосия зинда аст, вуҷуд хоҳад дошт. Ин барои он зарур аст, ки чизи нолозим ба вуҷуд наояд. Ин инчунин барои лаҳзаҳое мувофиқ аст, ки барои мо нигоҳ доштани ибтидоии додаҳо дар як сессия муҳим аст.
Навъи дуюм парчами пайдарпай аст. Он ҳисобкунакро дар роҳ ба znode меафзояд. Масалан, мо феҳрист бо барномаи 1_5 доштем. Ва ҳангоме ки гиреҳи аввалро сохтем, он p_1 гирифт, дуюм - p_2. Ва вақте ки мо ҳар дафъа ин усулро даъват мекунем, мо роҳи пурраро мегузарем, ки танҳо як қисми роҳро нишон медиҳад ва ин рақам ба таври худкор афзоиш меёбад, зеро мо навъи гиреҳ - пайдарпайро нишон медиҳем.
Зиндагии муқаррарӣ. Вай ҳамеша зинда хоҳад монд ва номеро, ки мо ба ӯ мегӯем, хоҳад дошт.

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

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

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

Сеюм, он мавҷудияти znode-ро месанҷад. Агар гиреҳ мавҷуд бошад, ҳақиқиро бармегардонад, дар акси ҳол нодуруст аст.
Ва он гоҳ тамошои парчам пайдо мешавад, ки ба шумо имкон медиҳад ин гиреҳро назорат кунед.
Шумо метавонед ин парчамро ҳатто дар гиреҳи вуҷуднадошта насб кунед ва ҳангоми пайдо шудани он огоҳинома гиред. Ин ҳам метавонад муфид бошад.
Якчанд мушкилоти дигар ҳастанд гирифтани маълумот. Маълум аст, ки мо метавонем маълумотро тавассути znode қабул кунем. Шумо инчунин метавонед тамошои парчамро истифода баред. Дар ин ҳолат, агар гиреҳ мавҷуд набошад, он насб карда намешавад. Аз ин рӯ, шумо бояд фаҳмед, ки он вуҷуд дорад ва сипас маълумотро қабул кунед.

Инчунин вуҷуд дорад SetData. Дар ин ҷо мо версияро мегузарем. Ва агар мо инро гузаронем, маълумот дар znode версияи муайян нав карда мешавад.
Шумо инчунин метавонед "-1" -ро барои истисно кардани ин чек муайян кунед.
Усули дигари муфид аст ба даст кӯдакон. Мо инчунин метавонем рӯйхати ҳамаи znodes, ки ба он тааллуқ доранд, ба даст. Мо метавонем инро тавассути танзими тамошои парчам назорат кунем.
Ва усул синк имкон медиҳад, ки ҳамаи тағиротҳо якбора фиристода шаванд ва ба ин васила кафолат додани он, ки онҳо захира карда мешаванд ва тамоми маълумотҳо комилан тағир дода шудаанд.
Агар мо бо барномасозии муқаррарӣ аналогӣ бардорем, пас вақте ки шумо усулҳоеро ба мисли навиштан, ки чизе ба диск менависанд ва пас аз он ки он ба шумо ҷавоб медиҳад, кафолат намедиҳад, ки шумо маълумотро ба диск навиштаед. Ва ҳатто вақте ки системаи оператсионӣ боварӣ дорад, ки ҳама чиз навишта шудааст, дар худи диск механизмҳое мавҷуданд, ки раванд тавассути қабатҳои буферҳо мегузарад ва танҳо пас аз он маълумот дар диск ҷойгир карда мешавад.

Асосан зангҳои асинхронӣ истифода мешаванд. Ин ба муштарӣ имкон медиҳад, ки дар баробари дархостҳои гуногун кор кунад. Шумо метавонед равиши синхронӣ истифода баред, аммо он камтар самаранок аст.
Ду амалиёте, ки мо дар бораи он сӯҳбат кардем, навсозӣ/навиштан мебошанд, ки маълумотро тағир медиҳанд. Инҳо эҷод, setData, ҳамоҳангсозӣ, нест кардан мебошанд. Ва хондан вуҷуд дорад, getData, getChildren.

Акнун чанд мисол дар бораи чӣ гуна шумо метавонед примитивҳоро барои кор дар системаи тақсимшуда созед. Масалан, вобаста ба конфигуратсияи чизе. Коргари нав пайдо шуд. Мо машинаро илова карда, процессро сар кардем. Ва се саволи зерин вуҷуд дорад. Чӣ тавр он ZooKeeper-ро барои конфигуратсия дархост мекунад? Ва агар мо хоҳем, ки конфигуратсияро тағир диҳем, мо онро чӣ гуна тағир медиҳем? Ва пас аз он ки мо онро иваз кардем, он коргароне, ки мо доштем, онро чй тавр ба даст меоранд?
ZooKeeper ин корро нисбатан осон мекунад. Масалан, дарахти znode мо вуҷуд дорад. Дар ин ҷо як гиреҳ барои замимаи мо мавҷуд аст, мо дар он гиреҳи иловагӣ эҷод мекунем, ки маълумотро аз конфигуратсия дар бар мегирад. Инҳо метавонанд параметрҳои алоҳида бошанд ё набошанд. Азбаски андоза хурд аст, андозаи конфигуратсия одатан хурд аст, бинобар ин онро дар ин ҷо нигоҳ доштан комилан имконпазир аст.
Шумо усулро истифода мебаред гирифтани маълумот ки конфигурацияи коргарро аз гирех ба даст оварад. Ба ҳақиқӣ таъин кунед. Агар бо ягон сабаб ин гиреҳ вуҷуд надошта бошад, вақте ки он пайдо мешавад ё ҳангоми тағирёбанда мо дар ин бора огоҳ мешавем. Агар мо хоҳем донем, ки чизе тағйир ёфтааст, пас мо онро дуруст месозем. Ва агар маълумот дар ин гиреҳ тағир ёбад, мо дар ин бора медонем.
SetData. Мо маълумотро муқаррар мекунем, "-1" -ро муқаррар мекунем, яъне мо версияро тафтиш намекунем, мо фикр мекунем, ки мо ҳамеша як конфигуратсия дорем, ба мо лозим нест, ки конфигуратсияҳои зиёдеро нигоҳ дорем. Агар ба шумо лозим аст, ки бисёр захира кунед, шумо бояд сатҳи дигарро илова кунед. Дар ин ҷо мо боварӣ дорем, ки танҳо як аст, бинобар ин мо танҳо охиринро навсозӣ мекунем, аз ин рӯ версияро тафтиш намекунем. Дар айни замон, ҳамаи муштариёне, ки қаблан обуна шудаанд, огоҳинома мегиранд, ки чизе дар ин гиреҳ тағир ёфтааст. Ва пас аз он ки онҳо онро гирифтанд, онҳо бояд маълумотро дубора дархост кунанд. Огоҳӣ дар он аст, ки онҳо худи маълумотро қабул намекунанд, балки танҳо огоҳии тағиротро мегиранд. Пас аз ин, онҳо бояд маълумоти навро талаб кунанд.

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


Ин як амали даҳшатноки он аст, ки чӣ тавр инро дар коди Java иҷро кардан мумкин аст. Биёед аз охир, бо усули асосӣ оғоз кунем. Ин синфи мост, биёед усули онро созем. Ҳамчун далели аввал мо хостеро истифода мебарем, ки дар он ҷо пайваст мешавем, яъне мо онро ҳамчун аргумент муқаррар мекунем. Ва далели дуюм номи гурӯҳ аст.
Пайвастшавӣ чӣ гуна сурат мегирад? Ин як мисоли оддии API аст, ки истифода мешавад. Дар ин ҷо ҳама чиз нисбатан оддӣ аст. Синфи стандартии ZooKeeper мавҷуд аст. Мо мизбонҳоро ба он мегузарем. Ва танаффусро, масалан, то 5 сония муқаррар кунед. Ва мо як узви бо номи connectSignal дорем. Аслан, мо дар баробари роҳи интиқол гурӯҳе эҷод мекунем. Мо дар он ҷо маълумот наменависем, гарчанде ки чизе навишта метавонист. Ва гиреҳ дар ин ҷо аз навъи доимӣ аст. Аслан, ин гиреҳи муқаррарии муқаррарӣ аст, ки ҳамеша вуҷуд хоҳад дошт. Дар ин ҷо сессия таъсис дода мешавад. Ин амалисозии худи муштарӣ аст. Муштарии мо мунтазам паёмҳо мефиристад, ки нишон медиҳад, ки сессия зинда аст. Ва ҳангоме ки мо сессияро ба итмом мерасонем, мо ба наздик занг мезанем ва ҳамин тавр, сессия қатъ мешавад. Ин дар сурате аст, ки чизе барои мо нопадид шавад, то ZooKeeper аз ин огоҳ шавад ва сессияро қатъ кунад.

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

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

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

ZooKeeper аз чӣ иборат аст? 4 чизи асосӣ вуҷуд дорад. Ин равандҳои коркард аст - Дархост. Ва инчунин пахши Atomic ZooKeeper. Дар он ҷо ҳамаи амалиётҳо сабт карда мешаванд, як гузориши ӯҳдадорӣ мавҷуд аст. Ва худи МД-и Replicated In-memory, яъне худи махзани маълумот, ки дар он тамоми дарахт нигоҳ дошта мешавад.
Қобили зикр аст, ки ҳама амалиёти навиштан тавассути Протсессори дархост мегузарад. Ва амалиётҳои хониш мустақиман ба пойгоҳи додаҳои хотираи дохилӣ мераванд.

Худи базаи маълумот пурра такрор карда шудааст. Ҳама намунаҳои ZooKeeper нусхаи пурраи маълумотро нигоҳ медоранд.
Барои барқарор кардани пойгоҳи додаҳо пас аз садама, як гузориши Commit мавҷуд аст. Таҷрибаи стандартӣ ин аст, ки пеш аз ворид шудани маълумот ба хотира, он ҷо навишта мешавад, то дар сурати аз байн рафтани он, ин гузоришро бознавозад ва ҳолати система барқарор карда шавад. Ва аксҳои даврии пойгоҳи додаҳо низ истифода мешаванд.

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








Манбаъ: will.com
