Ndicebisa ukuba ufunde umbhalo wentetho ethi "Hadoop. ZooKeeper "kuluhlu "Iindlela zokusasazwa kokuhanjiswa kwedatha enkulu kwiHadoop"
Yintoni iZooKeeper, indawo yayo kwi-ecosystem ye-Hadoop. Ubuxoki malunga nekhompyuter esasazwayo. Umzobo wenkqubo eqhelekileyo esasazwayo. Ubunzima bokulungelelanisa iinkqubo ezisasazwayo. Iingxaki zolungelelwaniso oluqhelekileyo. Imigaqo emva koyilo lweZooKeeper. Imodeli yedatha yeZooKeeper. iiflegi ze-znode. Iiseshoni. Client API. Iiprimitives (uqwalaselo, ubulungu beqela, izitshixo ezilula, unyulo lweenkokeli, ukutshixa ngaphandle kwesiphumo somhlambi). Uyilo lweZooKeeper. ZooKeeper DB. ZAB. Isicelo somphathi.


Namhlanje siza kuthetha ngeZooKeeper. Le nto iluncedo kakhulu. Yona, njengayo nayiphi na imveliso ye-Apache Hadoop, inophawu. Ibonisa indoda.
Ngaphambi koku, sasithetha kakhulu malunga nendlela idatha enokucutshungulwa ngayo apho, indlela yokugcina, oko kukuthi, indlela yokuyisebenzisa ngandlela-thile kwaye usebenze nayo ngandlela-thile. Kwaye namhlanje ndingathanda ukuthetha kancinci malunga nokwakhiwa kwezicelo ezisasaziweyo. Kwaye iZooKeeper yenye yezo zinto zikuvumela ukuba wenze lula lo mbandela. Olu luhlobo lwenkonzo ejoliswe kuhlobo oluthile lokulungelelanisa ukusebenzisana kweenkqubo kwiinkqubo ezisasazwayo, kwizicelo ezisasazwayo.
Isidingo sezicelo ezinjalo siya sisiba ngakumbi nangakumbi imihla ngemihla, yile nto ikhosi yethu imalunga nayo. Kwelinye icala, iMapReduce kunye nesi sikhokelo senziweyo sikuvumela ukuba ukhuphe obu bunzima kwaye ukhulule umdwelisi wenkqubo ekubhaleni izinto zokuqala ezifana nokusebenzisana kunye nolungelelwaniso lweenkqubo. Kodwa kwelinye icala, akukho mntu uqinisekisayo ukuba oku akusayi kufuneka kwenziwe nakanjani na. Imephu Nciphisa okanye ezinye izakhelo esele zenziwe azisoloko zibuyisela ngokupheleleyo ezinye iimeko ezingenakuphunyezwa ngokusebenzisa oku. Kubandakanya iMapReduce ngokwayo kunye neqela lezinye iiprojekthi ze-Apache; Kwaye ukwenza ukubhala kube lula, babhala ZooKeeper.
Njengazo zonke izicelo ezinxulumene neHadoop, yaphuhliswa nguYahoo! Ngoku ikwasisicelo esisemthethweni se-Apache. Ayiphuhliswanga ngokukhutheleyo njenge-HBase. Ukuba uya kwi-JIRA HBase, ngoko yonke imihla kukho iqela leengxelo ze-bug, iqela leziphakamiso zokuphucula into ethile, oko kukuthi ubomi kwiprojekthi buhlala buqhubeka. Kwaye iZooKeeper, kwelinye icala, yimveliso elula, kwaye kwelinye icala, oku kuqinisekisa ukuthembeka kwayo. Kwaye kulula kakhulu ukuyisebenzisa, yiyo loo nto iye yaba ngumgangatho kwizicelo ngaphakathi kweHadoop ecosystem. Ke ndiye ndacinga ukuba kuya kuba luncedo ukuyiphonononga ukuze ndiqonde indlela esebenza ngayo kunye nendlela yokuyisebenzisa.

Lo ngumfanekiso osuka kwenye intetho ebesinayo. Sinokuthi i-orthogonal kuyo yonke into esiyiqwalaselayo ukuza kuthi ga ngoku. Kwaye yonke into eboniswe apha, ukuya kwelinye idigri okanye enye, isebenza neZooKeeper, oko kukuthi, yinkonzo esebenzisa zonke ezi mveliso. I-HDFS okanye i-MapReduce azibhali ezabo iinkonzo ezifanayo eziya kubasebenzela ngokukodwa. Ngokufanelekileyo, iZooKeeper isetyenziswa. Kwaye oku kwenza lula uphuhliso kunye nezinye izinto ezinxulumene neempazamo.

Ivela phi yonke le nto? Kubonakala ngathi siqalise izicelo ezimbini ngokuhambelana kwiikhompyuter ezahlukeneyo, sizidibanise ngomtya okanye kumnatha, kwaye yonke into iyasebenza. Kodwa ingxaki yeyokuba iNethiwekhi ayithembekanga, kwaye ukuba uthe waphunga i-traffic okanye ujonge okwenzekayo apho kwinqanaba eliphantsi, indlela abathengi abasebenzisana ngayo kwiNethiwekhi, unokubona ukuba ezinye iipakethi zilahlekile okanye zithunyelwe kwakhona. Ayisiyonto iprothokholi ye-TCP yaqanjwa, ekuvumela ukuba umisele iseshoni ethile kwaye uqinisekise ukuhanjiswa kwemiyalezo. Kodwa kuyo nayiphi na imeko, nokuba i-TCP ayinakuhlala ikugcina. Yonke into inexesha layo. Umsebenzi womnatha unokuwa nje ixeshana. Isenokuqhwanyaza nje. Kwaye oku konke kukhokelela kwinto yokuba awukwazi ukuxhomekeka kwiNethiwekhi ethembekileyo. Lo ngowona mahluko uphambili ekubhaleni izicelo ezihambelanayo ezisebenza kwikhompyuter enye okanye kwikhompyuter enye, apho kungekho Network, apho kukho ibhasi yokutshintshiselana ngedatha ethembekileyo kwimemori. Kwaye lo ngumahluko osisiseko.
Phakathi kwezinye izinto, xa usebenzisa iNethiwekhi, kuhlala kukho i-latency ethile. Idiski nayo inayo, kodwa iNethiwekhi inento eninzi yayo. Ukubambezeleka lixesha lokulibaziseka, elinokuba lincinci okanye libaluleke kakhulu.
I-topology yenethiwekhi iyatshintsha. Yintoni i-topology - oku kukubekwa kwezixhobo zethu zenethiwekhi. Kukho amaziko edatha, kukho iiracks ezima apho, kukho amakhandlela. Konke oku kungaqhagamshelwa kwakhona, kuhanjiswe, njl njl. Konke oku kufuneka kuthathelwe ingqalelo. Amagama e-IP ayatshintsha, indlela ehamba ngayo itrafikhi yethu iyatshintsha. Oku nako kufuneka kuthathelwe ingqalelo.
Inethiwekhi inokutshintsha kwakhona ngokwezixhobo. Ukusuka ekusebenzeni, ndingatsho ukuba iinjineli zethu zenethiwekhi zithanda ngokwenene ukuhlaziya into ethile kumakhandlela. Ngequbuliso kwaphuma i-firmware entsha kwaye babengenamdla ngakumbi kwiqela leHadoop. Banomsebenzi wabo. Kubo, into ephambili kukuba iNethiwekhi isebenza. Ngokufanelekileyo, bafuna ukuphinda balayishe into apho, benze ukukhanya kwi-hardware yabo, kwaye i-hardware iyatshintsha ngamaxesha athile. Konke oku kufuneka kuthathelwe ingqalelo ngandlel’ ithile. Konke oku kuchaphazela isicelo sethu esisasazwayo.
Ngokuqhelekileyo abantu abaqala ukusebenza ngeemali ezinkulu zedatha ngesizathu esithile bakholelwa ukuba i-Intanethi ayinamda. Ukuba kukho ifayile yeeterabytes ezininzi apho, ungayisa kwiseva yakho okanye kwikhompyuter kwaye uyivule usebenzisa cat kwaye ubukele. Enye impazamo ingaphakathi vím jonga iinkuni. Ungaze uyenze le nto kuba imbi. Ngenxa yokuba iVim izama ukuphazamisa yonke into, layisha yonke into kwimemori, ngakumbi xa siqala ukuhamba kule log kwaye sijonge into ethile. Ezi zizinto ezilityelweyo, kodwa kufuneka ziqwalaselwe.

Kulula ukubhala inkqubo enye esebenza kwikhompyuter enye ngeprosesa enye.
Xa inkqubo yethu ikhula, sifuna ukuyilinganisa yonke into, kwaye ihambelane nayo kungekuphela nje kwikhompyuter, kodwa nakwiqela. Umbuzo uvela: indlela yokulungelelanisa lo mbandela? Usetyenziso lwethu lusenokungadibanisi omnye nomnye, kodwa siqhube iinkqubo ezininzi ngaxeshanye kwiiseva ezininzi. Kwaye njani ukubeka iliso ukuba yonke into ihamba kakuhle kubo? Umzekelo, bathumela into nge-Intanethi. Kufuneka babhale malunga nobume babo kwindawo ethile, umzekelo, kuhlobo oluthile lwesiseko sedatha okanye ilogi, emva koko badibanise le log kwaye bayihlalutye kwenye indawo. Ngaphezu koko, kufuneka sithathele ingqalelo ukuba inkqubo yayisebenza kwaye isebenza, ngokukhawuleza kwavela uhlobo oluthile lwempazamo kuyo okanye yaphuka, ngoko siya kufumanisa ngokukhawuleza kangakanani ngayo?
Kucacile ukuba konke oku kunokujongwa ngokukhawuleza. Oku kukwalungile, kodwa ukubeka esweni yinto elinganiselweyo ekuvumela ukuba ujonge ezinye izinto kwinqanaba eliphezulu.
Xa sifuna ukuba iinkqubo zethu ziqale ukusebenzisana omnye nomnye, umzekelo, ukuthumelana idatha ethile, ngoko ke umbuzo uvela - kuya kwenzeka njani oku? Ngaba kuya kubakho uhlobo oluthile lwemeko yobuhlanga, ngaba baya kubhala ngaphezulu, ngaba idatha iya kufika ngokuchanekileyo, ngaba kukho nantoni na elahlekileyo endleleni? Kufuneka siphuhlise uhlobo oluthile lweprotocol, njl.
Ukulungelelaniswa kwazo zonke ezi nkqubo akuyonto ingenamsebenzi. Kwaye inyanzela umphuhlisi ukuba ehle ukuya kwinqanaba elisezantsi, kwaye abhale iinkqubo ukusuka ekuqaleni, okanye hayi ukusuka ekuqaleni, kodwa oku akukho lula.
Ukuba uza kunye ne-algorithm ye-cryptographic okanye uyiphumeze, yilahle ngokukhawuleza, kuba kunokwenzeka ukuba ayiyi kusebenza kuwe. Iza kuqulatha iqela leempazamo olibale ukuzibonelela. Ungaze uyisebenzisele nantoni na enzulu kuba isenokungazinzi. Kuba zonke ii-algorithms ezikhoyo ziye zavavanywa lixesha ixesha elide kakhulu. Ikhathazwa luluntu. Lo ngumxholo owahlukileyo. Kwaye kuyafana apha. Ukuba kunokwenzeka ukuba ungaphumezi uhlobo oluthile lwenkqubo yongqamaniso ngokwakho, ngoko kungcono ukungakwenzi oku, kuba kunzima kakhulu kwaye kukukhokelela ezantsi kwindlela eguquguqukayo yokukhangela rhoqo iimpazamo.
Namhlanje sithetha ngeZooKeeper. Ngakolunye uhlangothi, yinkqubo-sikhokelo, kwelinye icala, yinkonzo eyenza ubomi bube lula kumphuhlisi kwaye yenza lula ukuphunyezwa kwengqiqo kunye nokulungelelaniswa kweenkqubo zethu kangangoko kunokwenzeka.

Masikhumbule ukuba injani inkqubo esasazwayo eqhelekileyo. Yile nto ebesithetha ngayo - HDFS, HBase. Kukho inkqubo yeMasters elawula abasebenzi kunye neenkqubo zamakhoboka. Unoxanduva lokulungelelanisa nokusasaza imisebenzi, ukuqalisa kwakhona abasebenzi, ukusungula emitsha, nokusasaza umthwalo.

Enye into ephucuke ngakumbi yiNkonzo yoLungelelaniso, oko kukuthi, ukuhambisa umsebenzi wolungelelwaniso ngokwawo ube yinkqubo eyahlukileyo, kunye nokuqhuba uhlobo oluthile lwe-backup okanye i-stanby Master ngokunxuseneyo, kuba uMphathi unokusilela. Kwaye ukuba iNkosi iyawa, ngoko inkqubo yethu ayiyi kusebenza. Siqhuba ugcino. Abanye bathi i-Master kufuneka iphindwe kwi-backup. Oku kunokuthi kunikezelwe kwiNkonzo yoLungelelaniso. Kodwa kulo mzobo, uMninimzi ngokwakhe unoxanduva lokulungelelanisa abasebenzi;

Inketho ephezulu kakhulu kuxa lonke ulungelelwaniso lusingathwa yinkonzo yethu, njengoko kuqhele ukwenziwa. Uthatha uxanduva lokuqinisekisa ukuba yonke into iyasebenza. Kwaye ukuba kukho into engasebenzi, sifumanisa ngayo kwaye sizame ukujikeleza le meko. Kwimeko nayiphi na into, sishiywe noMninimzi othi ngandlela-thile inxibelelane namakhoboka kwaye inokuthumela idatha, ulwazi, imiyalezo, njl. ngenkonzo ethile.

Kukho inkqubo ehambele phambili ngakumbi, xa singenayo iNkosi, zonke iindawo zingamakhoboka anobuchule, ahlukeneyo ngokuziphatha kwawo. Kodwa basafuna ukusebenzisana omnye nomnye, ngoko ke kusekho inkonzo eseleyo yokulungelelanisa ezi zenzo. Mhlawumbi, uCassandra, osebenza kulo mgaqo, uhambelana nesi sikimu.
Kunzima ukuchaza ukuba yeyiphi kwezi nkqubo isebenza ngcono. Nganye ineenzuzo zayo kunye neengxaki.

Kwaye akukho mfuneko yokoyika ezinye izinto kunye ne-Master, kuba, njengoko uqheliselo lubonisa, akanakukwazi ukukhonza rhoqo. Into ephambili apha kukukhetha isisombululo esifanelekileyo sokubamba le nkonzo kwi-node enamandla eyahlukileyo, ukwenzela ukuba ibe nezixhobo ezaneleyo, ukwenzela ukuba ukuba kunokwenzeka, abasebenzisi abanako ukufikelela apho, ukwenzela ukuba bangayibulali ngengozi le nkqubo. Kodwa ngelo xesha, kwiskimu esinjalo kulula kakhulu ukulawula abasebenzi abavela kwinkqubo ye-Master, oko kukuthi le nkqubo ilula ukusuka kwindawo yokujonga ukuphunyezwa.

Kwaye esi sikimu (ngasentla) sinzima ngakumbi, kodwa sithembeke ngakumbi.

Ingxaki ephambili kukungaphumeleli kwenxalenye. Ngokomzekelo, xa sithumela umyalezo kwiNethiwekhi, uhlobo oluthile lwengozi lwenzeka, kwaye lowo uwuthumeleyo umyalezo akayi kukwazi ukuba umyalezo wakhe ufunyenwe kwaye kwenzeke ntoni kwicala lommkeli, akayi kukwazi ukuba umyalezo uqhutywe ngokuchanekileyo. , okt akayi kufumana nasiphi na isiqinisekiso.
Ngokufanelekileyo, kufuneka siyiqhube le meko. Kwaye into elula kukuthumela lo myalezo kwaye ulinde de sifumane impendulo. Kule meko, akuthathelwa ngqalelo ukuba ngaba imeko yomamkeli itshintshile. Sinokuthumela umyalezo kwaye songeze idatha efanayo kabini.
I-ZooKeeper inikezela ngeendlela zokujongana nokwala okunjalo, okwenza ubomi bethu bube lula.

Njengoko kukhankanyiwe kancinane ngaphambili, oku kufana nokubhala iinkqubo ezininzi ezinemisonto, kodwa umahluko omkhulu kukuba kwizicelo ezisasazwayo esizakha koomatshini abahlukeneyo, indlela yodwa yokunxibelelana yiNethiwekhi. Ngokusisiseko, olu lulwakhiwo olwabiweyo alunanto. Inkqubo nganye okanye inkonzo esebenza kumatshini omnye inenkumbulo yayo, idiski yayo, iprosesa yayo, engabelani ngayo nabani na.
Ukuba sibhala inkqubo enemisonto emininzi kwikhompyuter enye, ngoko sinokusebenzisa imemori ekwabelwana ngayo ukutshintshiselana ngedatha. Sinokutshintsha kwemeko apho, iinkqubo zinokutshintsha. Oku kuchaphazela ukusebenza. Kwelinye icala, akukho nto injalo kwinkqubo kwiqela, kodwa kukho iingxaki ngeNethiwekhi.

Ngokufanelekileyo, iingxaki eziphambili ezivelayo xa kubhalwa iinkqubo ezisasazwayo kuqwalaselo. Sibhala uhlobo oluthile lwesicelo. Ukuba ilula, ngoko ke si-hardcode zonke iintlobo zamanani kwikhowudi, kodwa oku akunzima, kuba ukuba sithatha isigqibo sokuba endaweni yexesha lokuphuma kwesiqingatha sesibini sifuna ixesha lokuphuma kwisekhondi enye, ngoko kufuneka siphinde sihlanganise isicelo kwaye khupha yonke into kwakhona. Yinto enye xa ikumatshini omnye, xa unokuwuqala ngokutsha, kodwa xa sinoomatshini abaninzi, kufuneka sihlale sikopa yonke into. Kufuneka sizame ukwenza isicelo siqwalaselwe.
Apha sithetha ngoqwalaselo olungatshintshiyo lweenkqubo zesixokelelwano. Oku akuphelelanga, mhlawumbi ngokwembono yesixokelelwano sokusebenza, inokuba luqwalaselo olungatshintshiyo lweenkqubo zethu, oko kukuthi, olu luqwalaselo olungenakuthathwa lula kwaye luhlaziywe.
Kukho kwakhona uqwalaselo oluguquguqukayo. Ezi zi parameters esifuna ukuzitshintsha kwimpukane ukuze zicholwe phaya.
Yintoni ingxaki apha? Sihlaziye i-config, sayiqengqa, yintoni ke? Ingxaki inokuba kwelinye icala sikhuphe uqwalaselo, kodwa silibale ngento entsha, uqwalaselo lwahlala lukhona. Okwesibini, ngelixa sasikhupha, ulungelelwaniso lwahlaziywa kwezinye iindawo, kodwa hayi kwezinye. Kwaye ezinye iinkqubo zesicelo sethu ezisebenza kumatshini omnye zaphinda zaqalwa ngoqwalaselo olutsha, kwaye kwenye indawo enomdala. Oku kunokubangela ukuba usetyenziso lwethu olusasaziweyo lungahambelani ngokwembono yoqwalaselo. Le ngxaki ixhaphakile. Kuqwalaselo oluguquguqukayo, lufanelekile ngakumbi kuba luthetha ukuba lunokutshintshwa kubhabho.
Enye ingxaki kubulungu beqela. Sisoloko sineseti yabasebenzi, sihlala sifuna ukwazi ukuba ngubani kubo ophilayo, ngubani kubo ofileyo. Ukuba kukho i-Master, ngoko kufuneka aqonde ukuba ngabaphi abasebenzi abanokuthunyelwa kwakhona kubaxhasi ukuze baqhube izibalo okanye basebenze ngedatha, kwaye abangenako. Ingxaki ehlala ivela kukuba kufuneka sazi ukuba ngubani osebenza kwiqela lethu.
Enye ingxaki eqhelekileyo lunyulo lweenkokeli, xa sifuna ukwazi ukuba ngubani ophetheyo. Omnye umzekelo kukuphindaphinda, xa sinenkqubo ethile efumana imisebenzi yokubhala kwaye emva koko siyiphindaphinda phakathi kwezinye iinkqubo. Uya kuba yinkokeli, bonke abanye baya kumthobela, baya kumlandela. Kuyimfuneko ukuba ukhethe inkqubo ukwenzela ukuba ingabonakali kumntu wonke, ukuze kungabonakali ukuba iinkokeli ezimbini zikhethiweyo.
Kukwakho nofikelelo olukhethekileyo. Ingxaki apha inzima ngakumbi. Kukho into enjenge-mutex, xa ubhala iinkqubo ezinemisonto emininzi kwaye ufuna ukufikelela kumthombo othile, umzekelo, iseli yememori, iya kunqunyulwa kwaye iqhutywe ngumsonto omnye kuphela. Apha isibonelelo sinokuba yinto engabonakaliyo. Kwaye izicelo ezahlukeneyo ezivela kwiindawo ezahlukeneyo zeNethiwekhi yethu kufuneka zifumane ufikelelo olukhethekileyo kwisixhobo esinikiweyo, kwaye hayi ukuze wonke umntu akwazi ukuyitshintsha okanye abhale into apho. Ezi zitshixo kuthiwa.
I-ZooKeeper ikuvumela ukuba uzisombulule zonke ezi ngxaki ukuya kwinqanaba elinye okanye kwelinye. Kwaye ndiza kubonisa ngemizekelo indlela ekuvumela ukuba wenze oku.

Akukho zithintelo zokuqala. Xa siqala ukusebenzisa into, le yakudala ayizukulinda nasiphi na isiganeko ukuba senzeke. Okunokwenzeka, le nto iya kusebenza ngokungafaniyo, ngaloo ndlela ivumela iinkqubo ukuba zingaxhonywa ngelixa zilindele into ethile. Le yinto eluncedo kakhulu.
Zonke izicelo zabaxumi zisetyenzwa ngokulandelelana komgca jikelele.
Kwaye abathengi banethuba lokufumana isaziso malunga notshintsho kwimeko ethile, malunga notshintsho kwidatha, ngaphambi kokuba umxhasi abone idatha etshintshileyo ngokwabo.

I-ZooKeeper ingasebenza ngeendlela ezimbini. Eyokuqala izimele, kwi-node enye. Oku kulula ukukuvavanya. Ingasebenza nakwi-cluster mode, kuyo nayiphi na inani le-nodes. abancedisiUkuba sineqela leemashini ezili-100, akufuneki ukuba lisebenze kwiimashini ezili-100. Kwanele ukwabela oomatshini abambalwa apho iZooKeeper inokusebenza khona. Kwaye inamathela kumgaqo wokufumaneka okuphezulu. IZooKeeper igcina ikopi epheleleyo yedatha kwimeko nganye esebenzayo. Ndiza kuchaza indlela ekwenza ngayo oku kamva. Ayiqhekezi okanye yahlule idatha. Kwelinye icala, oku kuyingxaki kuba asinakugcina okuninzi, kodwa kwelinye icala, akufuneki. Ayenzelwanga loo nto; ayisiyo database.
Idatha ingagcinwa kwicala lomxhasi. Lo ngumgaqo oqhelekileyo ukuze singaphazamisi inkonzo kwaye singayilayishi ngezicelo ezifanayo. Umxhasi ohlakaniphile uhlala eyazi malunga noku kwaye uyayigcina.
Umzekelo, kukho into etshintshileyo apha. Kukho uhlobo oluthile lwesicelo. Inkokeli entsha yonyulwa, enoxanduva, umzekelo, ukucubungula imisebenzi yokubhala. Kwaye sifuna ukuphinda idatha. Esinye isisombululo kukubeka kwi-loop. Kwaye sihlala sithandabuza inkonzo yethu - ngaba kukho into etshintshileyo? Olwesibini ukhetho lulunge ngakumbi. Le yindlela yokubukela ekuvumela ukuba uxelele abathengi ukuba kukho into etshintshileyo. Le yindlela engabizi kakhulu ngokwezibonelelo kwaye ilungele abathengi.

Umxhasi ngumsebenzisi osebenzisa iZooKeeper.
Umncedisi yinkqubo yeZooKeeper ngokwayo.
I-Znode yeyona nto iphambili kwiZooKeeper. Zonke ii-znodes zigcinwe kwimemori yi-ZooKeeper kwaye zihlelwe ngendlela ye-hierarchical diagram, ngendlela yomthi.
Kukho iindidi ezimbini zokusebenza. Eyokuqala kukuhlaziya/ukubhala, xa umsebenzi othile utshintsha imeko yomthi wethu. Umthi uxhaphakile.
Kwaye kunokwenzeka ukuba umxhasi akagqibezeli isicelo esinye kwaye uqhawulwe, kodwa unokuseka iseshoni apho asebenzisana neZooKeeper.

Imodeli yedatha yeZooKeeper ifana nenkqubo yefayile. Kukho ingcambu esemgangathweni kwaye emva koko siye sahamba ngokungathi ngokusebenzisa abalawuli abasuka kwingcambu. Kwaye ke ikhathalogu yenqanaba lokuqala, inqanaba lesibini. Oku zonke znodes.
I-znode nganye inokugcina idatha ethile, ngokuqhelekileyo ayinkulu kakhulu, umzekelo, i-10 kilobytes. Kwaye i-znode nganye ingaba nenani elithile labantwana.

Ii-Znodes ziza kwiindidi ezininzi. Ziyakwazi ukudalwa. Kwaye xa usenza i-znode, sichaza uhlobo ekumele ukuba yeyalo.
Kukho iindidi ezimbini. Eyokuqala yiflegi ye-ephemeral. UZnode uhlala ngaphakathi kwiseshoni. Ngokomzekelo, umxhasi useke iseshoni. Kwaye lo gama nje le seshoni isaphila, iya kubakho. Oku kuyimfuneko ukuze kungavelisi into engeyomfuneko. Oku kukwafanelekile kumaxesha apho kubalulekile ukuba sigcine iiprimitives zedatha ngaphakathi kwiseshoni.
Uhlobo lwesibini lulandelelwano iflegi. Inyusa ikhawuntari kwindlela eya kwiznode. Umzekelo, besinoluhlu olunesicelo 1_5. Kwaye xa sasidala indawo yokuqala, yafumana p_1, eyesibini - p_2. Kwaye xa sibiza le ndlela ngexesha ngalinye, sidlula umendo opheleleyo, ebonisa kuphela inxalenye yendlela, kwaye eli nani linyuswa ngokuzenzekelayo kuba sibonisa uhlobo lwe-node - ngokulandelelana.
Znode rhoqo. Uya kuhlala ephila kwaye enegama esimxelela lona.

Enye into eluncedo yiflegi yokubukela. Ukuba siyayifaka, ngoko umxhasi unokubhalisa kwezinye iziganeko kwi-node ethile. Ndiza kukubonisa kamva ngomzekelo ukuba kwenziwa njani oku. I-ZooKeeper ngokwayo yazisa umxhasi ukuba idatha kwi-node itshintshile. Nangona kunjalo, izaziso aziqinisekisi ukuba enye idatha entsha ifikile. Bathetha nje ukuba kukho into etshintshileyo, ngoko ke kusafuneka uthelekise idatha kamva kunye neefowuni ezahlukeneyo.
Kwaye njengoko besenditshilo, ukulandelelana kwedatha kugqitywa ngamakhilobhayithi. Akukho mfuneko yokugcina idatha enkulu yokubhaliweyo apho, kuba akusiyo isiseko sedatha, ngumncedisi wokulungelelanisa isenzo.

Makhe ndikuxelele kancinci ngeeseshoni. Ukuba sineeseva ezininzi, singatshintsha ngokubonakalayo ukusuka kwenye iseva ukuya kwenye. umncedisi, usebenzisa i-session ID. Oku kulula kakhulu.
Iseshoni nganye inohlobo oluthile lwexesha lokuvala. Iseshoni ichazwa ngokuba umxhasi uthumela nantoni na kumncedisi ngelo xesha. Ukuba akazange athumele nantoni na ngexesha lokuvala, iseshoni iyawa, okanye umxhasi unokuvala ngokwakhe.

Ayinayo loo nto zininzi, kodwa unokwenza izinto ezahlukeneyo ngale API. Loo mnxeba siyibonile idala i-znode kwaye ithatha iiparamitha ezintathu. Le yindlela eya kwi-znode, kwaye kufuneka ichazwe ngokupheleleyo kwingcambu. Kwaye kwakhona le yidatha ethile esifuna ukuyidlulisela apho. Kwaye uhlobo lweflegi. Kwaye emva kokudala ibuyisela indlela eya kwi-znode.
Okwesibini, ungayicima. Iqhinga apha kukuba iparameter yesibini, ukongeza kwindlela eya kwi-znode, ingacacisa uguqulelo. Ngokufanelekileyo, loo znode iya kucinywa ukuba inguqulelo yayo esiyidlulisileyo ilingana naleyo ikhona ngokwenene.
Ukuba asifuni kukhangela olu guqulelo, ngoko sidlula ngokulula "-1" ingxoxo.

Okwesithathu, ijonga ubukho be-znode. Ibuyisela inyani ukuba indawo ikhona, bubuxoki ngenye indlela.
Kwaye ke iwotshi yeflegi ibonakala, ekuvumela ukuba ubeke iliso kule node.
Ungacwangcisa le flegi nakwindawo engekhoyo kwaye ufumane isaziso xa sivela. Oku kunokuba luncedo.
Isibini eminye imingeni getData. Kucacile ukuba sinokufumana idatha nge-znode. Unokusebenzisa iwotshi yeflegi. Kule meko, ayiyi kufakwa ukuba akukho node. Ngoko ke, kufuneka uqonde ukuba ikhona, kwaye emva koko ufumane idatha.

Kukho kwakhona SetData. Apha sidlula inguqulelo. Kwaye ukuba sidlulisela oku, idatha kwi-znode yenguqulo ethile iya kuhlaziywa.
Ungakhankanya kwakhona "-1" ukukhuphela ngaphandle olu qwalaselo.
Enye indlela eluncedo yi fumana Abantwana. Sinokufumana uluhlu lwazo zonke ii-znodes ezizezalo. Singakubeka esweni oku ngokuseta iwotshi yeflegi.
Kwaye indlela Ukuvumelanisa ivumela zonke iinguqu ukuba zithunyelwe kanye, ngaloo ndlela ziqinisekisa ukuba zigciniwe kwaye yonke idatha itshintshiwe ngokupheleleyo.
Ukuba sidweba i-analogies kunye neprogram eqhelekileyo, ngoko xa usebenzisa iindlela ezinjengokubhala, ezibhala into kwidiski, kwaye emva kokuba ibuyisele impendulo kuwe, akukho siqinisekiso sokuba ubhale idatha kwidiski. Kwaye nangona inkqubo yokusebenza iqinisekile ukuba yonke into ibhaliwe, kukho iindlela kwidisk ngokwayo apho inkqubo ihamba ngeengqimba ze-buffers, kwaye emva kokuba idatha ifakwe kwidiski.

Ubukhulu becala iminxeba engahambelaniyo iyasetyenziswa. Oku kuvumela umxhasi ukuba asebenze ngokuhambelana nezicelo ezahlukeneyo. Ungasebenzisa indlela ehambelanayo, kodwa imveliso encinci.
Imisebenzi emibini esithethe ngayo ihlaziya / ibhala, etshintsha idatha. Ezi ziyila, setData, sync, cima. Kwaye ukufunda ikhona, getData, getChildren.

Ngoku imizekelo embalwa yendlela onokwenza ngayo i-primitives yokusebenza kwinkqubo esasazwayo. Umzekelo, enxulumene noqwalaselo lwento ethile. Kuvele umsebenzi omtsha. Songeza umatshini kwaye siqalise inkqubo. Yaye kukho le mibuzo mithathu ilandelayo. Ibuza njani iZooKeeper yoqwalaselo? Kwaye ukuba sifuna ukutshintsha uqwalaselo, silutshintsha njani? Kwaye emva kokuba siyitshintshile, bayifumana njani abo basebenzi besinayo?
I-ZooKeeper yenza oku kube lula. Umzekelo, kukho umthi wethu we-znode. Kukho i-node yesicelo sethu apha, senza i-node eyongezelelweyo kuyo, equlethe idatha evela kuqwalaselo. Ezi zinokuthi okanye zingabi yiparameters eyahlukileyo. Kuba ubungakanani buncinci, ubungakanani boqwalaselo buqhelekile ukuba mncinci, ngoko ke kuyenzeka ukubugcina apha.
Usebenzisa indlela getData ukufumana uqwalaselo lomsebenzi ukusuka kwindawo. Misela kwinyani. Ukuba ngesizathu esithile le node ayikho, siya kwaziswa ngayo xa ibonakala, okanye xa itshintsha. Ukuba sifuna ukwazi ukuba kukho into etshintshileyo, ngoko siyibeka kwinyani. Kwaye ukuba idatha kule node iyatshintsha, siya kwazi ngayo.
SetData. Siseta idatha, isethi "-1", oko kukuthi asiyijongi inguqulo, sicinga ukuba sihlala sinoqwalaselo olunye, akufuneki sigcine ulungelelwaniso oluninzi. Ukuba ufuna ukugcina okuninzi, kuya kufuneka wongeze elinye inqanaba. Apha sikholelwa ukuba kukho enye kuphela, ngoko sihlaziya kuphela yamva nje, ngoko ke asiyijongi inguqulelo. Ngeli xesha, bonke abathengi abaye babhalisela ngaphambili bafumana isaziso sokuba kukho into etshintshileyo kule node. Kwaye emva kokuba beyifumene, kufuneka bacele idatha kwakhona. Isaziso kukuba abafumani idatha ngokwayo, kodwa kuphela isaziso sotshintsho. Emva koku kufuneka bacele idatha entsha.

Ukhetho lwesibini lokusebenzisa i-primitive ubulungu beqela. Sinesicelo esisasaziweyo, kukho iqela labasebenzi kwaye sifuna ukuqonda ukuba bonke basendaweni. Ke ngoko, kufuneka bazibhalise ngokwabo ukuba bayasebenza kwisicelo sethu. Kwaye sifuna ukufumanisa, nokuba kukwinkqubo yeMasters okanye kwenye indawo, malunga nabo bonke abasebenzi abasebenzayo esinabo ngoku.
Sikwenza njani oku? Kwisicelo, senza i-node yabasebenzi kwaye songeza i-sublevel apho usebenzisa indlela yokudala. Ndinempazamo kwisilayidi. Apha udinga ngokulandelelana cacisa, ke bonke abasebenzi bayakudalwa ngabanye. Kwaye isicelo, sicela yonke idatha malunga nabantwana bale node, ifumana bonke abasebenzi abasebenzayo abakhoyo.


Olu lufezekiso olubi kakhulu lwendlela enokwenziwa ngayo kwikhowudi yeJava. Masiqale ukusuka ekupheleni, kunye nendlela ephambili. Le yiklasi yethu, makhe senze indlela yayo. Njengengxabano yokuqala sisebenzisa umamkeli, apho sidibanisa khona, o.k.t. siyibeka njengengxabano. Kwaye ingxabano yesibini ligama leqela.
Unxibelelwano lwenzeka njani? Lo ngumzekelo olula we-API esetyenziswayo. Yonke into ilula apha. Kukho iklasi yeZooKeeper eqhelekileyo. Sidlulisela ababuki zindwendwe kuyo. Kwaye usete ixesha lokuvala, umzekelo, ukuya kwimizuzwana emi-5. Kwaye sinelungu elibizwa ngokuba yi-connectedSignal. Ngokusisiseko, senza iqela ecaleni kwendlela egqithisiweyo. Asibhali idatha apho, nangona kukho into enokuthi ibhaliwe. Kwaye i-node apha yeyodidi oluzingileyo. Ngokusisiseko, le yindawo eqhelekileyo eqhelekileyo eya kubakho ngalo lonke ixesha. Apha kulapho iseshini yenziwe khona. Oku kukuphunyezwa komxhasi ngokwawo. Umxhasi wethu uya kuxela ngamaxesha athile ukuba iseshoni iyaphila. Kwaye xa sigqiba iseshoni, sibiza ngokusondeleyo kwaye yiloo nto, iseshoni iyawa. Oku kwenzeka ukuba kukho into esiwela yona, ukuze iZooKeeper ifumanise ngayo kwaye inqumle iseshoni.

Indlela yokutshixa isibonelelo? Apha yonke into inzima ngakumbi. Sineqela labasebenzi, kukho isibonelelo esifuna ukusitshixa. Ukwenza oku, senza i-node eyahlukileyo, umzekelo, ebizwa ngokuba yi-lock1. Ukuba siye sakwazi ukuyidala, ngoko sifumene isitshixo apha. Kwaye ukuba asikwazanga ukuyidala, ngoko umsebenzi uzama ukufumana iData ukusuka apha, kwaye ekubeni i-node sele yenziwe, ngoko sibeka umlindi apha kunye nomzuzu ukuguqulwa kwemeko yale node, siya kukwazi ngayo. Kwaye sinokuzama ukuba nexesha lokuyiphinda. Ukuba sithathe le node, sithathe esi sitshixo, emva kokuba singasayifuni isitshixo, siya kuyishiya, kuba i-node ikhona kuphela kwiseshoni. Ngako oko, iya kunyamalala. Kwaye omnye umxhasi, ngaphakathi kwesakhelo sesinye iseshoni, uya kukwazi ukuthatha isitshixo kule node, okanye kunoko, uya kufumana isaziso sokuba kukho into etshintshileyo kwaye unokuzama ukuyenza ngexesha.

Omnye umzekelo wendlela onokukhetha ngayo inkokeli ephambili. Oku kuntsonkothile ngakumbi, kodwa kwakhona kulula. Kwenzeka ntoni apha? Kukho i-node ephambili ehlanganisa bonke abasebenzi. Sizama ukufumana idatha malunga nenkokeli. Ukuba oku kwenzeke ngempumelelo, oko kukuthi sifumene idatha ethile, ngoko umsebenzi wethu uqala ukulandela le nkokeli. Ukholelwa ukuba sele kukho inkokeli.
Ukuba inkokeli yafa ngenxa yesizathu esithile, umzekelo, yawa, ngoko sizama ukudala inkokeli entsha. Kwaye ukuba siyaphumelela, ngoko umsebenzi wethu uba yinkokeli. Kwaye ukuba umntu ngalo mzuzu ukwazile ukudala inkokeli entsha, sizama ukuqonda ukuba ngubani kwaye simlandele.
Apha kuvela into ebizwa ngokuba yi- herd effect, i.e. i-effect effect, kuba xa inkokeli isifa, lowo ungowokuqala exesheni uya kuba yinkokeli.

Xa ubamba isibonelelo, ungazama ukusebenzisa indlela eyahlukileyo kancinane, elolu hlobo lulandelayo. Umzekelo, sifuna ukufumana isitshixo, kodwa ngaphandle kwempembelelo ye-hert. Iya kubandakanya into yokuba isicelo sethu sicela uluhlu lwazo zonke ii-ID ze-node kwindawo esele ikhona enesitshixo. Kwaye ukuba ngaphambi kokuba i-node esenze ngayo isitshixo yeyona incinci kwisethi esiyifumeneyo, oku kuthetha ukuba sibambe isitshixo. Sijonga ukuba sifumene isitshixo. Njengetshekhi, kuya kubakho imeko yokuba i-id esiyifumeneyo xa usenza isitshixo esitsha sincinci. Kwaye ukuba siyifumene, sisebenza ngakumbi.
Ukuba kukho i-id ethile encinci kune-lock yethu, ngoko sibeka umlindi kwesi siganeko kwaye silinde isaziso de kubekho into etshintshileyo. Oko kukuthi, sifumene esi sitshixo. Kwaye ide iwe, asiyi kuba yeyona id incinci kwaye asizukufumana eyona lock incinci, kwaye ke siya kuba nakho ukungena. Kwaye ukuba le meko ayihlangatyezwanga, ngoko ngoko nangoko siye apha kwaye sizame ukufumana esi sitshixo kwakhona, kuba kukho into enokuba itshintshile ngeli xesha.

Ingaba iZooKeeper iqulathe ntoni? Kukho izinto ezi-4 eziphambili. Le yinkqubo yokuqhubekeka - Isicelo. Kwaye kwakhona ZooKeeper Atomic Broadcast. Kukho i-Commit Log apho yonke imisebenzi irekhodwa. Kwaye i-In-memory Replicated DB ngokwayo, oko kukuthi i-database ngokwayo apho lo mthi wonke ugcinwe khona.
Kubalulekile ukuqaphela ukuba yonke imisebenzi yokubhala idlula kwiProsesa yesicelo. Kwaye funda imisebenzi iya ngqo kwi-database ye-In-memory.

I-database ngokwayo iphindaphindwe ngokupheleleyo. Zonke iimeko zeZooKeeper zigcina ikopi epheleleyo yedatha.
Ukuze ubuyisele i-database emva kokuphazamiseka, kukho i-log ye-Commit. Ukuziqhelanisa okusemgangathweni kukuba ngaphambi kokuba idatha ingene kwimemori, ibhaliwe apho ukuze ukuba iphazamisekile, le log ingadlalwa kwakhona kwaye inkqubo yenkqubo inokubuyiselwa. Kwaye kusetyenziswa izifinyezo zamaxesha athile zedatabase.

I-ZooKeeper Atomic Broadcast yinto esetyenziselwa ukugcina idatha ephindaphindiweyo.
I-ZAB ngaphakathi ikhetha inkokeli ukusuka kwindawo yokujonga i-ZooKeeper node. Ezinye iindawo zokuhlala ziba ngabalandeli bakhe kwaye zilindele izenzo ezithile kuye. Ukuba bathe bawafumana amangenelo, bawagqithisela onke kwinkokeli. Uqala enze utyando lokubhala aze athumele umyalezo ngoko kutshintshileyo kubalandeli bakhe. Oku, eneneni, kufuneka kwenziwe nge-atom, o.k.t. ukurekhodwa kunye nokusebenza kosasazo lwento yonke kufuneka kwenziwe nge-atom, ngaloo ndlela kuqinisekisa ukuhambelana kwedatha.
Iqhuba kuphela izicelo zokubhala. Umsebenzi wayo ophambili kukuba uguqula umsebenzi ube nguhlaziyo lwentengiselwano. Esi sisicelo esenziwe ngokukodwa.
Kwaye apha kuyafaneleka ukuba uqaphele ukuba ukungabikho kokuhlaziywa komsebenzi ofanayo kuqinisekisiwe. Yintoni? Le nto, ukuba iphunyezwe kabini, iya kuba nesimo esifanayo, oko kukuthi isicelo ngokwaso asiyi kutshintsha. Kwaye oku kufuneka kwenziwe ukuze kwimeko yengozi, ungaphinda uqalise ukusebenza, ngaloo ndlela ubuyisela umva utshintsho oluthe lwawa okwangoku. Kule meko, imeko yenkqubo iya kuba yinto efanayo, oko kukuthi akufanele kube njalo ukuba uchungechunge olufanayo, umzekelo, iinkqubo zokuhlaziya, ezikhokelela kwiindawo ezahlukeneyo zokugqibela zenkqubo.








umthombo: www.habr.com
