Ngiphakamisa ukuthi ufunde okulotshiweyo kwenkulumo ethi "Hadoop. ZooKeeper" kusukela ochungechungeni oluthi "Izindlela zokusabalalisa ukucubungula kwedatha enkulu ku-Hadoop"
Iyini i-ZooKeeper, indawo yayo ku-ecosystem ye-Hadoop. Amanga mayelana nekhompyutha esabalalisiwe. Umdwebo wesistimu esabalalisiwe ejwayelekile. Ubunzima bokuxhumanisa amasistimu asabalalisiwe. Izinkinga zokuxhumanisa ezijwayelekile. Izimiso ezingemuva komklamo we-ZooKeeper. Imodeli yedatha ye-ZooKeeper. amafulegi we-znode. Amaseshini. I-Client API. Ama-Primitives (ukumisa, ubulungu beqembu, izingidi ezilula, ukhetho lwabaholi, ukukhiya ngaphandle komphumela womhlambi). ZooKeeper architecture. I-ZooKeeper DB. ZAB. Cela isibambi.


Namuhla sizokhuluma nge-ZooKeeper. Le nto iwusizo kakhulu. Yona, njenganoma yimuphi umkhiqizo we-Apache Hadoop, inophawu. Ifanekisa indoda.
Ngaphambi kwalokhu, sikhulume kakhulu ngokuthi idatha ingacutshungulwa kanjani lapho, indlela yokuyigcina, okungukuthi, indlela yokuyisebenzisa ngandlela-thile futhi usebenze ngayo ngandlela-thile. Futhi namuhla ngithanda ukukhuluma kancane mayelana nokwakha izicelo ezisabalalisiwe. Futhi i-ZooKeeper ingenye yalezo zinto ezikuvumela ukuthi wenze lolu daba lube lula. Lolu uhlobo lwesevisi oluhloselwe uhlobo oluthile lokuxhumanisa ukusebenzisana kwezinqubo kumasistimu asabalalisiwe, ezinhlelweni ezisabalalisiwe.
Isidingo sezicelo ezinjalo siya ngokuya sikhula nsuku zonke, yilokho isifundo sethu esiphathelene nakho. Ngakolunye uhlangothi, i-MapReduce kanye nalolu hlaka olwenziwe ngomumo lukuvumela ukuthi ukhiphe lobu bunzima futhi ukhulule umhleli ekubhaleni izinto zokuqala ezinjengokusebenzelana nokuxhumana kwezinqubo. Kodwa ngakolunye uhlangothi, akekho oqinisekisayo ukuthi lokhu ngeke kudingeke ukuba kwenziwe noma kunjalo. I-MapNciphisa noma ezinye izinhlaka esezilungile azihlali zishintsha ngokuphelele ezinye izimo ezingakwazi ukusetshenziswa kusetshenziswa lokhu. Kubandakanya i-MapReduce kanye nenqwaba yamaphrojekthi we-Apache, empeleni, nawo asabalalisiwe. Futhi ukwenza ukubhala kube lula, babhale i-ZooKeeper.
Njengazo zonke izinhlelo zokusebenza ezihlobene ne-Hadoop, yathuthukiswa yi-Yahoo! Manje sekuyisicelo esisemthethweni se-Apache. Ayithuthukiswanga ngenkuthalo njenge-HBase. Uma uya ku-JIRA HBase, khona-ke nsuku zonke kuba nenqwaba yemibiko yesiphazamisi, inqwaba yeziphakamiso zokuthuthukisa okuthile, okungukuthi, impilo kuphrojekthi iqhubeka njalo. Futhi i-ZooKeeper, ngakolunye uhlangothi, iwumkhiqizo olula, futhi ngakolunye uhlangothi, lokhu kuqinisekisa ukwethembeka kwayo. Futhi kulula ukuyisebenzisa, yingakho isiphenduke indinganiso ezinhlelweni zokusebenza ngaphakathi kwe-ecosystem ye-Hadoop. Ngakho-ke ngicabange ukuthi kungaba usizo ukuyibuyekeza ukuze ngiqonde ukuthi isebenza kanjani nokuthi isetshenziswa kanjani.

Lesi yisithombe esivela kwenye inkulumo ebesinayo. Singasho ukuthi i-orthogonal kukho konke esesikucubungulile kuze kube manje. Futhi yonke into ekhonjisiwe lapha, ngokwezinga elithile noma kwelinye, isebenza ne-ZooKeeper, okungukuthi, isevisi esebenzisa yonke le mikhiqizo. I-HDFS noma i-MapReduce ayibhali awabo amasevisi afanayo angawasebenzela ngokuqondile. Ngokufanelekile, i-ZooKeeper isetshenziswa. Futhi lokhu kwenza kube lula ukuthuthuka nezinye izinto ezihlobene namaphutha.

Kuvelaphi konke lokhu? Kubukeka sengathi sethule izinhlelo zokusebenza ezimbili ngokufana kumakhompyutha ahlukene, sazixhuma ngentambo noma nge-mesh, futhi konke kuyasebenza. Kodwa inkinga ukuthi iNetwork ayithembekile, futhi uma uke wahogela ithrafikhi noma ubheka ukuthi kwenzekani lapho ngezinga eliphansi, ukuthi amaklayenti axhumana kanjani kwiNethiwekhi, ungabona kaningi ukuthi amanye amaphakethe alahlekile noma aphinde athunyelwe. Akuyona ize ukuthi izivumelwano ze-TCP zakhiwe, ezikuvumela ukuthi usungule iseshini ethile futhi uqinisekise ukulethwa kwemilayezo. Kodwa kunoma yikuphi, ngisho ne-TCP ayikwazi ukukulondoloza njalo. Konke kunesikhathi sokuvala. Inethiwekhi ingase iwe isikhashana. Kungase kucwayize nje. Futhi konke lokhu kuholela eqinisweni lokuthi awukwazi ukuthembela kokuthi Inethiwekhi ithembekile. Lona umehluko omkhulu ekubhaleni izinhlelo zokusebenza ezihambisanayo ezisebenza kukhompyutha eyodwa noma ku-supercomputer eyodwa, lapho ingekho Inethiwekhi, lapho kukhona ibhasi lokushintshisana ngedatha elithembeke kakhulu enkumbulweni. Futhi lona umehluko oyisisekelo.
Phakathi kwezinye izinto, lapho usebenzisa Inethiwekhi, kuhlale kukhona ukubambezeleka okuthile. Idiski nayo inayo, kodwa Inethiwekhi inokuningi kwayo. Ukubambezeleka isikhathi esithile sokulibala, esingaba sincane noma sibaluleke kakhulu.
I-topology yenethiwekhi iyashintsha. Iyini i-topology - lokhu ukubekwa kwemishini yethu yenethiwekhi. Kukhona izikhungo zedatha, kukhona ama-rack ami lapho, kukhona amakhandlela. Konke lokhu kungaxhunywa kabusha, kuhanjiswe, njll. Konke lokhu nakho kudinga ukunakwa. Amagama e-IP ayashintsha, umzila lapho ithrafikhi yethu ehamba khona iyashintsha. Nalokhu kumele kubhekwe.
Inethiwekhi ingase futhi ishintshe ngokuya ngemishini. Kusukela ekusebenzeni, ngingasho ukuthi onjiniyela bethu benethiwekhi bathanda ngempela ukuvuselela okuthile emakhandleleni. Kungazelelwe kwaphuma i-firmware entsha futhi babengenantshisekelo ngokukhethekile kwelinye iqoqo le-Hadoop. Banomsebenzi wabo. Kubo, into eyinhloko ukuthi Inethiwekhi isebenza. Ngakho-ke, bafuna ukuphinda balayishe okuthile lapho, benze ukukhanya ku-hardware yabo, futhi i-hardware nayo ishintsha ngezikhathi ezithile. Konke lokhu ngandlela thize kufanele kucatshangelwe. Konke lokhu kuthinta isicelo sethu esisabalalisiwe.
Ngokuvamile abantu abaqala ukusebenza ngenani elikhulu ledatha ngesizathu esithile bakholelwa ukuthi i-inthanethi ayinamkhawulo. Uma kukhona ifayela lama-terabytes ambalwa lapho, ungaliyisa kuseva yakho noma ikhompuyutha futhi ulivule usebenzisa cat futhi ubuke. Elinye iphutha lingenile Vim bheka izingodo. Ungalokothi wenze lokhu ngoba kubi. Ngoba i-Vim izama ukufaka kubhafa yonke into, layisha yonke into enkumbulweni, ikakhulukazi uma siqala ukuhamba kulolu logi futhi sifuna okuthile. Lezi yizinto ezikhohliwe, kodwa okufanele zicatshangelwe.

Kulula ukubhala uhlelo olulodwa olusebenza kukhompuyutha eyodwa ngephrosesa eyodwa.
Lapho uhlelo lwethu lukhula, sifuna ukukufanisa konke, futhi sikufanise hhayi kukhompyutha kuphela, kodwa nakuqoqo. Umbuzo uphakama: kanjani ukuxhumanisa lolu daba? Izinhlelo zethu zokusebenza zingahle zingasebenzisani, kodwa senze izinqubo ezimbalwa ngokufana kumaseva ambalwa. Futhi kanjani ukuqapha ukuthi konke kubahambela kahle? Isibonelo, bathumela okuthile nge-inthanethi. Kumelwe babhale mayelana nesimo sabo ndawana thize, isibonelo, kolunye uhlobo lwesizindalwazi noma ilogi, bese behlanganisa lolu logi bese beluhlaziya ndawana thize. Ngaphezu kwalokho, sidinga ukunaka ukuthi inqubo yayisebenza futhi isebenza, kungazelelwe kwavela iphutha elithile kuyo noma yaphahlazeka, khona-ke sizothola ngokushesha kangakanani ngakho?
Kuyacaca ukuthi konke lokhu kungagadwa ngokushesha. Lokhu kuhle futhi, kodwa ukuqapha kuyinto elinganiselwe ekuvumela ukuthi uqaphe ezinye izinto ezingeni eliphezulu kakhulu.
Uma sifuna izinqubo zethu ziqale ukusebenzisana, isibonelo, ukuthumelana idatha ethile, khona-ke umbuzo uphakama - lokhu kuzokwenzeka kanjani? Ngabe kuzoba khona uhlobo oluthile lwesimo somjaho, bazobhala ngaphezulu, imininingwane izofika ngendlela efanele, ngabe kukhona okuzolahleka endleleni? Kudingeka sakhe uhlobo oluthile lwephrothokholi, njll.
Ukudidiyela zonke lezi zinqubo akuyona into encane. Futhi kuphoqa umthuthukisi ukuthi ehlele ezingeni eliphansi kakhulu, futhi abhale amasistimu kusuka ekuqaleni, noma hhayi ukusuka ekuqaleni, kepha lokhu akulula kangako.
Uma uqhamuka ne-cryptographic algorithm noma uze uyisebenzise, bese uyilahla ngokushesha, ngoba cishe ngeke ikusebenzele. Cishe izoqukatha inqwaba yamaphutha okhohlwe ukuhlinzeka ngawo. Ungalokothi uyisebenzisele noma yini ebucayi ngoba cishe izozinza. Ngoba wonke ama-algorithms akhona ahlolwe yisikhathi isikhathi eside kakhulu. Iphazanyiswe wumphakathi. Lesi isihloko esihlukile. Futhi kuyafana lapha. Uma kungenzeka ukuthi ungasebenzisi uhlobo oluthile lwenqubo yokuvumelanisa ngokwakho, khona-ke kungcono ukungakwenzi lokhu, ngoba kuyinkimbinkimbi futhi kukuholela endleleni enyakazayo yokufuna amaphutha njalo.
Namuhla sikhuluma ngeZooKeeper. Ngakolunye uhlangothi, iwuhlaka, ngakolunye uhlangothi, iyisevisi eyenza ukuphila kube lula kumthuthukisi futhi yenza kube lula ukuqaliswa kokusebenza kwengqondo nokuxhumana kwezinqubo zethu ngangokunokwenzeka.

Masikhumbule ukuthi isistimu esabalalisiwe ejwayelekile ingase ibukeke kanjani. Yilokhu esikhulume ngakho - HDFS, HBase. Kukhona inqubo ye-Master elawula izinqubo zabasebenzi kanye nezigqila. Unomthwalo wemfanelo wokuxhumanisa nokusabalalisa imisebenzi, ukuqalisa kabusha izisebenzi, ukwethula emisha, nokusabalalisa umthwalo.

Into ethuthuke kakhulu Isevisi Yokuxhumanisa, okungukuthi, ukuhambisa umsebenzi wokuxhumanisa ngokwawo uwenze inqubo ehlukile, futhi usebenzise uhlobo oluthile lwekhophi yasenqolobaneni noma i-stanby Master ngokuhambisana, ngoba u-Master angase ahluleke. Futhi uma uMfundisi ewa, uhlelo lwethu ngeke lusebenze. Sisebenzisa ukwenza isipele. Abanye bathi i-Master idinga ukuphindwa kabusha ukwenza isipele. Lokhu kungase futhi kuphathiswe Isevisi Yokuxhumanisa. Kodwa kulo mdwebo, u-Master ngokwakhe unesibopho sokuxhumanisa abasebenzi;

Inketho ethuthuke kakhulu yilapho konke ukudidiyela kuphathwa isevisi yethu, njengoba kuvamise ukwenziwa. Uthatha isibopho sokuqinisekisa ukuthi konke kuyasebenza. Futhi uma okuthile kungasebenzi, sithola ngakho futhi sizame ukuzungeza lesi simo. Kunoma ikuphi, sisele noMphathi osebenzisana nezigqila ngandlela thize futhi angathumela imininingwane, ulwazi, imiyalezo, njll. ngenkonzo ethile.

Kunohlelo oluthuthuke nakakhulu, lapho singenayo iNkosi, wonke ama-node ayizigqila eziyinhloko, ahlukile ngokuziphatha kwawo. Kodwa basadinga ukusebenzisana, ngakho-ke kusenesevisi ethile esele ukuze kuhlanganiswe lezi zenzo. Mhlawumbe, uCassandra, osebenza kulesi simiso, uhambisana nalolu hlelo.
Kunzima ukusho ukuthi yiziphi kulezi zinhlelo ezisebenza kangcono. Ngayinye inobuhle bayo kanye nebubi bayo.

Futhi asikho isidingo sokwesaba ezinye izinto noMfundisi, ngoba, njengoba umkhuba ubonisa, akathinteki kangako ekukhonzeni njalo. Into eyinhloko lapha ukukhetha isisombululo esifanele sokusingatha le nsizakalo ku-node enamandla ehlukile, ukuze ibe nezinsiza ezanele, ukuze uma kungenzeka, abasebenzisi abanakho ukufinyelela lapho, ukuze bangabulali ngengozi le nqubo. Kodwa ngesikhathi esifanayo, ohlelweni olunjalo kulula kakhulu ukuphatha abasebenzi kusukela ku-Master inqubo, okungukuthi lolu hlelo lulula kusukela ekubukeni kokuqaliswa.

Futhi lolu hlelo (ngenhla) cishe luyinkimbinkimbi, kodwa luthembeke kakhulu.

Inkinga enkulu ukwehluleka ingxenye. Isibonelo, uma sithumela umlayezo ngeNethiwekhi, kwenzeka uhlobo oluthile lwengozi, futhi lowo othumele umyalezo ngeke azi ukuthi umlayezo wakhe wamukelwe yini nokuthi kwenzekeni ngasohlangothini lomamukeli, ngeke azi ukuthi umlayezo ucutshungulwe ngendlela efanele yini. , okungukuthi ngeke athole noma yisiphi isiqinisekiso.
Ngokunjalo, kumele sisicubungule lesi simo. Futhi into elula ukuthumela kabusha lo mlayezo bese ulinda size sithole impendulo. Kulesi simo, akunakwa ukuthi ngabe isimo somamukeli sishintshile. Singase sithumele umlayezo futhi sengeze idatha efanayo kabili.
I-ZooKeeper inikeza izindlela zokubhekana nokwenqaba okunjalo, okwenza izimpilo zethu zibe lula.

Njengoba kushiwo ngaphambili, lokhu kufana nokubhala izinhlelo ezinezintambo eziningi, kodwa umehluko omkhulu wukuthi ezinhlelweni ezisabalalisiwe esizakha emishinini ehlukene, okuwukuphela kwendlela yokuxhumana yiNethiwekhi. Empeleni, lena i-architecture engahlanganyelwa lutho. Inqubo ngayinye noma isevisi esebenza emshinini owodwa inenkumbulo yayo, idiski yayo, iphrosesa yayo, engabelani ngayo nanoma ubani.
Uma sibhala uhlelo olunemicu eminingi kukhompuyutha eyodwa, khona-ke singasebenzisa inkumbulo eyabiwe ukushintshanisa idatha. Sinokushintsha kokuqukethwe lapho, izinqubo zingashintsha. Lokhu kuthinta ukusebenza. Ngakolunye uhlangothi, ayikho into enjalo ohlelweni ku-cluster, kodwa kunezinkinga ngeNethiwekhi.

Ngakho-ke, izinkinga eziyinhloko ezivela lapho kubhalwa izinhlelo ezisabalalisiwe ziwukucushwa. Sibhala uhlobo oluthile lwesicelo. Uma ilula, khona-ke si-hardcode zonke izinhlobo zezinombolo kukhodi, kodwa lokhu akulungile, ngoba uma sinquma ukuthi esikhundleni sokuphuma kwesigamu sesekhondi sifuna isikhathi sokuvala umzuzwana owodwa, khona-ke sidinga ukuhlanganisa uhlelo lokusebenza futhi khipha konke futhi. Kuyinto eyodwa uma isemshinini owodwa, lapho ungavele uyiqale kabusha, kodwa uma sinemishini eminingi, kufanele sikopishe yonke into njalo. Kufanele sizame ukwenza uhlelo lokusebenza lulungiseke.
Lapha sikhuluma ngokumisa okumile kwezinqubo zesistimu. Lokhu akukhona ngokuphelele, mhlawumbe ngokombono wesistimu yokusebenza, kungase kube ukucushwa okumile kwezinqubo zethu, okungukuthi lokhu ukulungiselelwa okungeke kuvele kuthathwe futhi kubuyekezwe.
Kukhona nokucushwa okuguquguqukayo. Lawa amapharamitha esifuna ukuwashintsha empukaneni ukuze acoshwe lapho.
Ikuphi inkinga lapha? Sibuyekeze ukucushwa, sikukhiphe, yini-ke? Inkinga kungenzeka ukuthi ngakolunye uhlangothi sikhiphe i-config, kodwa sikhohlwe ngento entsha, ukulungiselelwa kwahlala lapho. Okwesibili, ngenkathi sisakhipha, ukucushwa kwabuyekezwa kwezinye izindawo, kodwa hhayi kwezinye. Futhi ezinye izinqubo zohlelo lwethu lokusebenza ezisebenza emshinini owodwa zaqalwa kabusha ngokulungiselelwa okusha, futhi ndawana thize ngomdala. Lokhu kungaholela ekutheni uhlelo lwethu lokusebenza olusabalalisiwe lungahambisani nombono wokucushwa. Le nkinga ivamile. Ngokucushwa okuguquguqukayo, kuhambisana kakhulu ngoba kusho ukuthi kungashintshwa ngokuhamba kwesikhathi.
Enye inkinga ubulungu beqembu. Sihlale sineqoqo labasebenzi, sihlala sifuna ukwazi ukuthi ubani kubo ophilayo, yimuphi kubo ongasekho. Uma kukhona u-Master, kufanele aqonde ukuthi yiziphi izisebenzi ezingaphinde ziqondiswe kumakhasimende ukuze enze izibalo noma asebenze ngedatha, futhi iziphi ezingakwazi. Inkinga ehlala iqhamuka wukuthi sidinga ukwazi ukuthi ubani osebenza eqenjini lethu.
Enye inkinga evamile okhethweni lwabaholi, lapho sifuna ukwazi ukuthi ubani ophethe. Isibonelo esisodwa ukuphindaphinda, lapho sinenqubo ethile ethola imisebenzi yokubhala bese iphinda iphinde phakathi kwezinye izinqubo. Uyoba umholi, bonke abanye bayomlalela, bayomlandela. Kudingeka ukuthi kukhethwe uhlelo ukuze lungacaci kuwo wonke umuntu, ukuze kungaveli ukuthi kukhethwa abaholi ababili.
Kukhona futhi ukufinyelela okukhethekile. Inkinga lapha iyinkimbinkimbi kakhulu. Kukhona into enjenge-mutex, lapho ubhala izinhlelo ezinemicu eminingi futhi ufuna ukufinyelela esisetshenziswa esithile, ngokwesibonelo, iseli lememori, elizonqunyelwa futhi liqhutshwe ngentambo eyodwa kuphela. Lapha insiza ingaba yinto engabonakali. Futhi izinhlelo zokusebenza ezihlukene ezivela kumanodi ahlukene Enethiwekhi yethu kufanele zithole ukufinyelela okukhethekile kuphela esisetshenziswa esinikeziwe, hhayi ukuze wonke umuntu akwazi ukukushintsha noma ukubhala okuthile lapho. Lezi okuthiwa yizingidi.
I-ZooKeeper ikuvumela ukuthi uxazulule zonke lezi zinkinga ngezinga elilodwa noma elinye. Futhi ngizokukhombisa ngezibonelo ukuthi ikuvumela kanjani ukwenza lokhu.

Awekho ama-primitives okuvimbela. Uma siqala ukusebenzisa okuthile, lesi sakudala ngeke silinde ukuthi kwenzeke noma yimuphi umcimbi. Ngokunokwenzeka, le nto izosebenza ngokulinganayo, ngaleyo ndlela ivumele izinqubo ukuthi zingalengi ngenkathi zisalinde okuthile. Lokhu kuyinto ewusizo kakhulu.
Zonke izicelo zamaklayenti zicutshungulwa ngokulandelana komugqa ojwayelekile.
Futhi amaklayenti anethuba lokuthola isaziso mayelana nezinguquko esimweni esithile, mayelana nezinguquko kudatha, ngaphambi kokuba iklayenti libone idatha eshintshiwe ngokwalo.

I-ZooKeeper ingasebenza ngezindlela ezimbili. Eyokuqala izimele, ku-node eyodwa. Lokhu kulula ukukuhlola. Ingasebenza futhi kumodi yeqoqo, kunoma yiliphi inani lama-node. amasevaUma sineqoqo lemishini eyi-100, akudingeki ukuthi lisebenze emishini eyi-100. Kwanele ukwaba imishini embalwa lapho i-ZooKeeper ingasebenza khona. Futhi inamathela esimisweni sokutholakala okuphezulu. I-ZooKeeper igcina ikhophi ephelele yedatha kusimo ngasinye esisebenzayo. Ngizochaza ukuthi ikwenza kanjani lokhu kamuva. Ayihlukanisi noma ihlukanise idatha. Ngakolunye uhlangothi, lokhu kuyiphutha ngoba asikwazi ukugcina okuningi, kodwa ngakolunye uhlangothi, akudingeki. Ayenzelwe lokho; akuyona isizindalwazi.
Idatha ingafakwa kunqolobane ohlangothini lweklayenti. Lona umgomo ojwayelekile ukuze singaphazamisi isevisi futhi singayilayishi ngezicelo ezifanayo. Iklayenti elihlakaniphile livamise ukwazi ngalokhu futhi likugcine kunqolobane.
Ngokwesibonelo, kukhona okushintshile lapha. Kukhona uhlobo oluthile lwesicelo. Umholi omusha wakhethwa, onesibopho, isibonelo, ukucubungula imisebenzi yokubhala. Futhi sifuna ukuphindaphinda idatha. Isixazululo esisodwa ukuyifaka ku-loop. Futhi sihlala sizibuza ngenkonzo yethu - kukhona okushintshile? Inketho yesibili ingcono kakhulu. Lena indlela yewashi evumela ukuthi wazise amaklayenti ukuthi kukhona okushintshile. Lena indlela engabizi kakhulu ngokwezinsiza futhi elungele amakhasimende.

Iklayenti umsebenzisi osebenzisa i-ZooKeeper.
Iseva iyinqubo ye-ZooKeeper ngokwayo.
I-Znode iyinto ebalulekile ku-ZooKeeper. Wonke ama-znode agcinwa enkumbulweni yi-ZooKeeper futhi ahlelwe ngendlela yomdwebo we-hierarchical, ngesimo sesihlahla.
Kunezinhlobo ezimbili zokusebenza. Eyokuqala iwukuvuselela/ukubhala, lapho umsebenzi othile ushintsha isimo sesihlahla sethu. Isihlahla sijwayelekile.
Futhi kungenzeka ukuthi iklayenti aliqedi isicelo esisodwa futhi linqanyuliwe, kodwa lingasungula iseshini lapho lixhumana ne-ZooKeeper.

Imodeli yedatha ye-ZooKeeper ifana nesistimu yefayela. Kukhona impande ejwayelekile bese sihamba sengathi ngokusebenzisa ama-directory asuka empandeni. Bese kuba ikhathalogu yezinga lokuqala, izinga lesibili. Konke lokhu ngama-znode.
I-znode ngayinye ingagcina idatha ethile, ngokuvamile ayinkulu kakhulu, isibonelo, amakhilobhayithi angu-10. Futhi i-znode ngayinye ingaba nenani elithile lezingane.

Ama-Znode eza ngezinhlobo eziningana. Angadalwa. Futhi lapho sidala i-znode, sicacisa uhlobo okufanele ibe kulo.
Kunezinhlobo ezimbili. Esokuqala yifulegi le-ephemeral. U-Znode uhlala phakathi neseshini. Isibonelo, iklayenti lisungule iseshini. Futhi inqobo nje uma le seshini isaphila, izoba khona. Lokhu kuyadingeka ukuze kungakhiqizi okuthile okungadingekile. Lokhu kufanele futhi izikhathi lapho kubalulekile ukuthi sigcine okokuqala kwedatha phakathi neseshini.
Uhlobo lwesibili ifulegi elilandelanayo. Inyusa ikhawunta endleleni eya ku-znode. Isibonelo, besinohla lwemibhalo olunohlelo lokusebenza 1_5. Futhi lapho sidala inodi yokuqala, yathola p_1, eyesibili - p_2. Futhi lapho sibiza le ndlela isikhathi ngasinye, sidlula indlela egcwele, ebonisa ingxenye kuphela yendlela, futhi le nombolo iyanda ngokuzenzakalelayo ngoba sibonisa uhlobo lwe-node - ngokulandelana.
I-znode evamile. Uyohlala ephila futhi enegama esimtshela lona.

Enye into ewusizo ifulege lewashi. Uma siyifaka, iklayenti lingakwazi ukubhalisela imicimbi ethile yenodi ethile. Ngizokukhombisa kamuva ngesibonelo ukuthi lokhu kwenziwa kanjani. I-ZooKeeper ngokwayo yazisa iklayenti ukuthi idatha ekunodi ishintshile. Nokho, izaziso aziqinisekisi ukuthi enye idatha entsha isifikile. Bamane bathi kukhona okushintshile, ngakho-ke kusafanele uqhathanise idatha kamuva namakholi ahlukene.
Futhi njengoba ngishilo kakade, ukuhleleka kwedatha kunqunywa ama-kilobytes. Asikho isidingo sokugcina idatha yombhalo omkhulu lapho, ngoba akuyona isizindalwazi, iyiseva yokuhlanganisa isenzo.

Ake ngikutshele kancane ngamaseshini. Uma sinamaseva amaningana, singashintsha ngokusobala sisuka kwesinye iseva siye kwesinye. iseva, usebenzisa i-session ID. Lokhu kulula kakhulu.
Iseshini ngayinye inohlobo oluthile lokuvala. Iseshini ichazwa ngokuthi iklayenti lithumela noma yini kuseva phakathi naleso sikhathi. Uma engazange adlulise lutho ngesikhathi sokuvala, iseshini iyawa, noma iklayenti lingazivala ngokwalo.

Ayinazo izici eziningi kangako, kodwa ungenza izinto ezihlukile ngale API. Lolo cingo silubonile ludala i-znode futhi luthatha amapharamitha amathathu. Lena indlela eya ku-znode, futhi kufanele icaciswe ngokugcwele ukusuka empandeni. Futhi futhi lena idatha ethile esifuna ukuyidlulisela lapho. Nohlobo lwefulegi. Futhi ngemva kokudala ibuyisela indlela eya ku-znode.
Okwesibili, ungayisusa. Iqhinga lapha ukuthi ipharamitha yesibili, ngaphezu kwendlela eya ku-znode, ingacacisa inguqulo. Ngokufanelekile, leyo znode izosuswa uma inguqulo yayo esiyidlulisile ilingana naleyo ekhona ngempela.
Uma singafuni ukuhlola le nguqulo, sizobe sidlula ukuphikisana kuka-"-1".

Okwesithathu, ihlola ubukhona be-znode. Ibuyisela iqiniso uma inodi ikhona, kungenjalo amanga.
Bese kuvela iwashi lefulegi, elikuvumela ukuthi uqaphe le nodi.
Ungasetha leli fulegi ngisho naku-nodi engekho futhi uthole isaziso uma sivela. Lokhu kungase futhi kube usizo.
Izinselelo ezimbalwa ezengeziwe getData. Kuyacaca ukuthi singathola idatha nge-znode. Ungasebenzisa futhi iwashi lefulegi. Kulokhu, ngeke ifake uma ingekho i-node. Ngakho-ke, udinga ukuqonda ukuthi ikhona, bese uthola idatha.

Kukhona futhi SethaData. Lapha sidlula inguqulo. Futhi uma sidlulisela lokhu, idatha eku-znode yenguqulo ethile izobuyekezwa.
Ungaphinda ucacise okuthi "-1" ukuze ukhiphe leli sheke.
Enye indlela ewusizo tholaIzingane. Singathola nohlu lwawo wonke ama-znode okungowawo. Singaqapha lokhu ngokusetha iwashi lefulegi.
Futhi indlela ukuvumelanisa ivumela zonke izinguquko ukuthi zithunyelwe ngesikhathi esisodwa, ngaleyo ndlela kuqinisekiswe ukuthi zigciniwe futhi yonke idatha ishintshwe ngokuphelele.
Uma sidweba ama-analogi ngezinhlelo ezijwayelekile, khona-ke uma usebenzisa izindlela ezinjengokubhala, ezibhala okuthile kudiski, futhi ngemva kokubuyisela impendulo kuwe, asikho isiqinisekiso sokuthi ubhale idatha kudiski. Futhi ngisho nalapho uhlelo lokusebenza luqiniseka ukuthi konke kubhaliwe, kunezinqubo ku-disk ngokwayo lapho inqubo ihamba ngezingqimba zama-buffers, futhi ngemva kwalokho idatha ifakwe kudiski.

Izingcingo eziningi ezingasetshenziswanga ziyasetshenziswa. Lokhu kuvumela iklayenti ukuthi lisebenze ngokuhambisana nezicelo ezahlukene. Ungasebenzisa indlela yokuvumelanisa, kodwa ikhiqiza kancane.
Imisebenzi emibili esikhulume ngayo ibuyekeza/ibhala, eshintsha idatha. Lokhu kungukudala, i-setData, ukuvumelanisa, susa. Futhi ukufunda kukhona, getData, getChildren.

Manje izibonelo ezimbalwa zendlela ongayenza ngayo ama-primitives okusebenza ohlelweni olusabalalisiwe. Isibonelo, okuhlobene nokucushwa kokuthile. Kuqhamuke isisebenzi esisha. Sengeze umshini futhi saqala inqubo. Futhi kukhona imibuzo emithathu elandelayo. Ibuza kanjani i-ZooKeeper ukuze icushwe? Futhi uma sifuna ukushintsha ukucushwa, sikushintsha kanjani? Futhi ngemva kokuyishintsha, labo basebenzi esasinabo bayithola kanjani?
I-ZooKeeper yenza lokhu kube lula. Isibonelo, kukhona isihlahla sethu se-znode. Kukhona i-node yohlelo lwethu lokusebenza lapha, sakha i-node eyengeziwe kuyo, equkethe idatha evela ekucushweni. Lokhu kungase kube amapharamitha ahlukene noma angabi nawo. Njengoba usayizi mncane, usayizi wokumisa uvame ukuba mncane, ngakho-ke kungenzeka ukukugcina lapha.
Usebenzisa indlela getData ukuze uthole ukucushwa kwesisebenzi ku-node. Setha kuqiniso. Uma ngesizathu esithile le nodi ingekho, sizokwaziswa ngayo uma ivela, noma uma ishintsha. Uma sifuna ukwazi ukuthi kukhona okushintshile, sibeka iqiniso. Futhi uma idatha ekule nodi ishintsha, sizokwazi ngayo.
SethaData. Setha idatha, setha "-1", i.e. asihloli inguqulo, sicabanga ukuthi sihlala sinokucushwa okukodwa, asidingi ukugcina ukucushwa okuningi. Uma udinga ukugcina okuningi, uzodinga ukungeza elinye izinga. Lapha sikholwa ukuthi kukhona eyodwa kuphela, ngakho sibuyekeza eyakamuva kuphela, ukuze singayihloli inguqulo. Njengamanje, wonke amaklayenti abhalise ngaphambilini athola isaziso sokuthi kukhona okushintshile kule nodi. Futhi ngemva kokuba sebeyitholile, kufanele baphinde bacele idatha futhi. Isaziso siwukuthi abayitholi idatha ngokwayo, kodwa kuphela isaziso sezinguquko. Ngemva kwalokhu kufanele bacele idatha entsha.

Inketho yesibili yokusebenzisa i-primitive ubulungu beqembu. Sinesicelo esisabalalisiwe, kunenqwaba yabasebenzi futhi sifuna ukuqonda ukuthi bonke basesimweni. Ngakho-ke, kufanele bazibhalise bona ukuthi bayasebenza esicelweni sethu. Futhi sifuna ukuthola, kuhlelo lukaMaster noma kwenye indawo, ngabo bonke abasebenzi abakhuthele esinabo njengamanje.
Sikwenza kanjani lokhu? Ngohlelo lokusebenza, sakha inodi yabasebenzi bese sengeza i-sublevel lapho sisebenzisa indlela yokudala. Nginephutha kusilayidi. Lapha udinga ngokulandelana cacisa, khona-ke bonke abasebenzi bazodalwa ngamunye ngamunye. Futhi isicelo, sicela yonke idatha mayelana nezingane zale nodi, ithola zonke izisebenzi ezisebenzayo ezikhona.


Lokhu ukuqaliswa okubi kakhulu kokuthi lokhu kungenziwa kanjani kukhodi ye-Java. Ake siqale kusukela ekugcineni, ngendlela eyinhloko. Leli ikilasi lethu, masidale indlela yalo. Njengengxabano yokuqala sisebenzisa umsingathi, lapho sixhuma khona, okungukuthi siyibeka njengengxabano. Futhi ingxabano yesibili yigama leqembu.
Ukuxhumana kwenzeka kanjani? Lesi isibonelo esilula se-API esisetshenziswayo. Konke kulula lapha. Kukhona i-ZooKeeper yekilasi elijwayelekile. Sidlulisela ababungazi kuyo. Bese usetha isikhathi sokuvala, isibonelo, sibe yimizuzwana emi-5. Futhi sinelungu elibizwa ngokuthi i-connectedSignal. Empeleni, sakha iqembu endleleni edluliswayo. Asibhali idatha lapho, nakuba kukhona okwakungabhalwa. Futhi i-node lapha iwuhlobo oluqhubekayo. Empeleni, lena i-node evamile evamile ezoba khona ngaso sonke isikhathi. Yilapho iseshini idalwa khona. Lokhu ukuqaliswa kweklayenti ngokwalo. Iklayenti lethu lizothumela imilayezo ngezikhathi ezithile ebonisa ukuthi iseshini iyaphila. Futhi lapho siqeda iseshini, sibiza eduze futhi yilokho, iseshini iyawa. Lokhu kungenzeka ukuthi kukhona okungasehlela, ukuze i-ZooKeeper ithole ngakho futhi inqamule iseshini.

Indlela yokukhiya insiza? Lapha konke kuyinkimbinkimbi ngokwengeziwe. Sineqoqo labasebenzi, kukhona izinsiza esifuna ukuzikhiya. Ukwenza lokhu, sakha i-node ehlukile, isibonelo, ebizwa ngokuthi i-lock1. Uma sikwazile ukuyidala, sizobe sesithola isikhiya lapha. Futhi uma asikwazanga ukuyidala, khona-ke isisebenzi sizama ukuthola i-GetData kusuka lapha, futhi njengoba i-node isivele idaliwe, bese sibeka umlindi lapha kanye nomzuzu lapho isimo sale node sishintsha, sizokwazi ngakho. Futhi singazama ukuba nesikhathi sokuyidala kabusha. Uma sisuse le nodi, sasusa lesi sikhiya, khona-ke ngemva kokuba singasadingi ukukhiya, sizoyishiya, ngoba i-node ikhona kuphela ngaphakathi kweseshini. Ngokuvumelana nalokho, izonyamalala. Futhi elinye iklayenti, ngaphakathi kohlaka lwesinye iseshini, lizokwazi ukuthatha ukukhiya kule node, noma kunalokho, lizothola isaziso sokuthi kukhona okushintshile futhi angazama ukukwenza ngesikhathi.

Esinye isibonelo sokuthi ungakhetha kanjani umholi oyinhloko. Lokhu kuyinkimbinkimbi, kodwa futhi kulula. Kwenzakalani lapha? Kukhona i-node eyinhloko ehlanganisa bonke abasebenzi. Sizama ukuthola idatha mayelana nomholi. Uma lokhu kwenzeke ngempumelelo, okungukuthi sithole idatha ethile, isisebenzi sethu siqala ukulandela lo mholi. Ukholwa wukuthi sekukhona umholi.
Uma umholi eshone ngesizathu esithile, isibonelo, wawa, bese sizama ukwakha umholi omusha. Futhi uma siphumelela, isisebenzi sethu siba umholi. Futhi uma othile okwamanje ekwazile ukudala umholi omusha, khona-ke sizama ukuqonda ukuthi ungubani bese simlandela.
Lapha kuvela lokho okubizwa ngokuthi umphumela womhlambi, okungukuthi umphumela womhlambi, ngoba uma kushona umholi, oqalayo ngokuhamba kwesikhathi nguyena ozoba umholi.

Lapho uthwebula insiza, ungazama ukusebenzisa indlela ehluke kancane, enjena. Isibonelo, sifuna ukuthola ukhiye, kodwa ngaphandle komphumela we-hert. Kuzobandakanya iqiniso lokuthi isicelo sethu sicela uhlu lwawo wonke ama-id we-node ye-node ekhona kakade enokhiye. Futhi uma ngaphambi kwalokho i-node esiyidalele ukukhiya incane kakhulu kwesethi esiyitholile, khona-ke lokhu kusho ukuthi sithumbe ilokhi. Siyahlola ukuthi siyitholile ingidi. Njengesheke, kuzoba nombandela wokuthi i-id esiyitholile lapho sidala ukukhiya okusha incane. Futhi uma sikutholile, khona-ke sisebenza ngokuqhubekayo.
Uma kukhona i-id ethile encane kunokhiye wethu, sibeka umlindi kulo mcimbi bese silinda isaziso kuze kube yilapho kushintsha okuthile. Okusho ukuthi, sithole lesi sikhiye. Futhi ize iwe, ngeke sibe ubunikazi obuncane futhi ngeke sithole ukukhiya okuncane, futhi ngaleyo ndlela sizokwazi ukungena ngemvume. Futhi uma lesi simo singahlangatshezwana nayo, khona-ke siyahamba masinyane lapha futhi sizame ukuthola lesi sihluthulelo futhi, ngoba kungenzeka ukuthi kukhona okushintshile ngalesi sikhathi.

I-ZooKeeper iqukethe ini? Kukhona izinto ezi-4 ezibalulekile. Lokhu kuyizinqubo zokucubungula - Isicelo. Futhi futhi ZooKeeper Atomic Broadcast. Kukhona Ilogi Yokuzibophezela lapho yonke imisebenzi irekhodwa. Futhi i-In-memory Replicated DB ngokwayo, okungukuthi i-database ngokwayo lapho lesi sihlahla sigcinwa khona.
Kuyaqapheleka ukuthi yonke imisebenzi yokubhala ihamba ngeProsesa Yesicelo. Futhi imisebenzi yokufunda iya ngqo kusizindalwazi se-In-memory.

I-database ngokwayo iphindaphindwe ngokuphelele. Zonke izimo ze-ZooKeeper zigcina ikhophi ephelele yedatha.
Ukuze ubuyisele isizindalwazi ngemva kokuphahlazeka, kunelogi Yokuzibophezela. Umkhuba ojwayelekile wukuthi ngaphambi kokuthi idatha ingene enkumbulweni, ibhalwa lapho ukuze uma iphahlazeka, le log ingadlalwa futhi isimo sesistimu singabuyiselwa. Futhi kusetshenziswa izifinyezo ngezikhathi ezithile ze-database.

I-ZooKeeper Atomic Broadcast iyinto esetshenziselwa ukugcina idatha ephindaphindiwe.
I-ZAB ngaphakathi ikhetha umholi ngokombono we-ZooKeeper node. Amanye ama-node abe abalandeli bakhe futhi alindele izenzo ezithile kuye. Uma bethola imingenelo, bayidlulisela kumholi wonke. Uqale enze umsebenzi wokubhala abese ethumela umyalezo ngalokho okushintshile kubalandeli bakhe. Lokhu, empeleni, kufanele kwenziwe nge-athomu, okungukuthi ukusebenza kokurekhodwa nokusakaza kwayo yonke into kufanele kwenziwe nge-athomu, ngaleyo ndlela kuqinisekiswe ukuhambisana kwedatha.
Icubungula kuphela izicelo zokubhala. Umsebenzi wayo oyinhloko ukuthi iguqule ukusebenza kube isibuyekezo sokuthengiselana. Lesi isicelo esakhiwe ngokukhethekile.
Futhi lapha kubalulekile ukuqaphela ukuthi ukungabi namandla kwezibuyekezo zokusebenza okufanayo kuqinisekisiwe. Yini? Le nto, uma yenziwe kabili, izoba nesimo esifanayo, okungukuthi isicelo ngokwaso ngeke sishintshe. Futhi lokhu kudinga ukwenziwa ukuze uma kwenzeka ingozi, ungakwazi ukuqala kabusha ukusebenza, ngaleyo ndlela ubuyisela emuva izinguquko eziwile okwamanje. Kulokhu, isimo sesistimu sizofana, okungukuthi akufanele kube njalo ukuthi uchungechunge olufanayo, isibonelo, izinqubo zokuvuselela, eziholela ezifundeni ezihlukene zokugcina zesistimu.








Source: www.habr.com
