Molaim duit athscríbhinn na léachta "Hadoop. ZooKeeper" a léamh ón tsraith "Modhanna chun líon mór sonraí a phróiseáil dáilte i Hadoop"
Cad é ZooKeeper, a áit in éiceachóras Hadoop. An fhírinne faoi ríomhaireacht dáilte. Léaráid de chóras caighdeánach dáilte. Deacracht maidir le córais dáilte a chomhordú. Fadhbanna comhordaithe tipiciúla. Na prionsabail atá taobh thiar de dhearadh ZooKeeper. Múnla sonraí ZooKeeper. bratacha znode. Seisiúin. API Cliant. Primitives (cumraíocht, ballraíocht grúpa, glais simplí, toghchán ceannaire, glasáil gan éifeacht tréada). Ailtireacht ZooKeeper. Zú Coimeádaí DB. ZAB. Láimhseálaí iarratais.


Inniu beimid ag caint faoi ZooKeeper. Tá an rud seo an-úsáideach. Tá lógó aige, cosúil le haon táirge Apache Hadoop. Léiríonn sé fear.
Roimhe seo, labhair muid go príomha faoi conas is féidir sonraí a phróiseáil ann, conas é a stóráil, is é sin, conas é a úsáid ar bhealach éigin agus oibriú leis ar bhealach éigin. Agus inniu ba mhaith liom labhairt beagán faoi iarratais dáilte tógála. Agus is é ZooKeeper ceann de na rudaí sin a ligeann duit an t-ábhar seo a shimpliú. Is cineál seirbhíse é seo atá beartaithe le haghaidh comhordú de shaghas éigin ar idirghníomhaíocht na bpróiseas i gcórais dáilte, in iarratais dháilte.
Tá an gá atá le hiarratais den sórt sin ag éirí níos mó gach lá, is é sin atá i gceist lenár gcúrsa. Ar thaobh amháin, ceadaíonn MapReduce agus an creat réidh seo duit an chastacht seo a leibhéalú agus an ríomhchláraitheoir a shaoradh ó phrimitives a scríobh mar idirghníomhú agus comhordú próisis. Ach ar an láimh eile, ní ráthaíonn aon duine nach gcaithfear é seo a dhéanamh ar aon nós. Ní i gcónaí a thagann MapReduce nó creataí réamhdhéanta eile in ionad cásanna áirithe nach féidir a chur i bhfeidhm ag baint úsáide as seo. Lena n-áirítear MapReduce féin agus dornán de thionscadail Apache eile; Agus chun an scríbhneoireacht a dhéanamh níos éasca, scríobh siad ZooKeeper.
Cosúil le gach feidhmchlár a bhaineann le Hadoop, d’fhorbair Yahoo! Is feidhmchlár oifigiúil Apache é anois freisin. Níl sé chomh forbartha go gníomhach le HBase. Má théann tú chuig JIRA HBase, ansin gach lá tá go leor tuairiscí ar fhabhtanna, sraith moltaí chun rud éigin a bharrfheabhsú, i.e. bíonn saol an tionscadail ag dul ar aghaidh i gcónaí. Agus is táirge réasúnta simplí é ZooKeeper, ar thaobh amháin, agus ar an láimh eile, cinntíonn sé seo a iontaofacht. Agus tá sé sách éasca le húsáid, agus is é sin an fáth go bhfuil sé ina chaighdeán in iarratais laistigh d'éiceachóras Hadoop. Mar sin shíl mé go mbeadh sé úsáideach é a athbhreithniú chun tuiscint a fháil ar conas a oibríonn sé agus conas é a úsáid.

Seo pictiúr ó léacht éigin a bhí againn. Is féidir linn a rá go bhfuil sé orthogonal le gach rud atá curtha san áireamh againn go dtí seo. Agus oibríonn gach rud a shonraítear anseo, go pointe nó go pointe eile, le ZooKeeper, i.e., is seirbhís í a úsáideann na táirgí seo go léir. Ní scríobhann HDFS ná MapReduce a gcuid seirbhísí cosúla féin a d’oibreodh go sonrach dóibh. Dá réir sin, úsáidtear ZooKeeper. Agus simplíonn sé seo forbairt agus roinnt rudaí a bhaineann le hearráidí.

Cad as a dtagann sé seo go léir? Is cosúil gur sheolamar dhá fheidhmchlár ag an am céanna ar ríomhairí éagsúla, iad a nascadh le sreang nó le mogalra, agus oibríonn gach rud. Ach is í an fhadhb atá ann go bhfuil an Líonra neamhiontaofa, agus má sniffed tú an trácht nó d'fhéach sé ar an méid atá ag tarlú ann ag leibhéal íseal, conas a idirghníomhaíonn cliaint ar an Líonra, is féidir leat a fheiceáil go minic go bhfuil roinnt paicéid caillte nó athsheoladh. Ní haon rud é gur ceapadh prótacail TCP, a ligeann duit seisiún áirithe a bhunú agus seachadadh teachtaireachtaí a ráthú. Ach in aon chás, ní féidir fiú TCP a shábháil tú i gcónaí. Tá teorainn ama ag gach rud. Seans go dtitfidh an líonra as ar feadh tamaill. D'fhéadfadh sé ach blink. Agus is é is cúis leis sin go léir nach féidir brath ar an Líonra a bheith iontaofa. Is é seo an príomhdhifríocht ó scríobh feidhmchláir chomhthreomhara a ritheann ar ríomhaire amháin nó ar shárríomhaire amháin, áit nach bhfuil Líonra ann, áit a bhfuil bus malartaithe sonraí níos iontaofa sa chuimhne. Agus is difríocht bhunúsach é seo.
I measc rudaí eile, nuair a bhíonn an Líonra á úsáid, bíonn latency áirithe i gcónaí. Tá sé ar an diosca freisin, ach tá níos mó de ag an Líonra. Is éard atá i gceist le foighne ná roinnt moille, ar féidir leis a bheith beag nó suntasach.
Tá topology an líonra ag athrú. Cad é topology - is é seo an socrúchán ar ár trealamh líonra. Tá ionaid sonraí ann, tá racaí ann a sheasann, tá coinnle ann. Is féidir é seo go léir a athcheangal, a bhogadh, etc. Ní mór é seo go léir a chur san áireamh freisin. Athraíonn ainmneacha IP, athraíonn an bealach trína dtaistealaíonn ár dtrácht. Ní mór é seo a chur san áireamh freisin.
Féadfaidh an líonra athrú freisin i dtéarmaí trealaimh. Ó chleachtas, is féidir liom a rá gur maith lenár n-innealtóirí líonra go mór rud éigin ar na coinnle a nuashonrú go tréimhsiúil. Go tobann tháinig firmware nua amach agus ní raibh suim ar leith acu i roinnt braisle Hadoop. Tá a bpost féin acu. Chun iad, is é an rud is mó go n-oibríonn an Líonra. Dá réir sin, tá siad ag iarraidh rud éigin a ath-uaslódáil ansin, flashing a dhéanamh ar a gcuid crua-earraí, agus athraíonn na crua-earraí go tréimhsiúil freisin. Ní mór é seo go léir a chur san áireamh ar bhealach éigin. Cuireann sé seo go léir isteach ar ár n-iarratas dáilte.
De ghnáth, creideann daoine a thosaíonn ag obair le méideanna móra sonraí ar chúis éigin go bhfuil an Idirlíon gan teorainn. Má tá comhad roinnt terabytes ann, is féidir leat é a thabhairt chuig do fhreastalaí nó do ríomhaire agus é a oscailt le húsáid conas agus faire. Tá earráid eile i vim breathnú ar na logs. Ná déan é seo riamh mar tá sé go dona. Toisc go ndéanann Vim iarracht gach rud a mhaolánú, gach rud a luchtú i gcuimhne, go háirithe nuair a thosaímid ag bogadh tríd an logáil seo agus ag lorg rud éigin. Is rudaí iad seo a ndéantar dearmad orthu, ach is fiú smaoineamh orthu.

Tá sé níos éasca clár amháin a scríobh a ritheann ar ríomhaire amháin le próiseálaí amháin.
Nuair a fhásann ár gcóras, ba mhaith linn é a chomhthreomharú go léir, agus é a chomhthreomharú ní hamháin ar ríomhaire, ach freisin ar bhraisle. Éiríonn an cheist: conas an t-ábhar seo a chomhordú? B’fhéidir nach n-idirghníomhaíonn ár bhfeidhmchláir fiú lena chéile, ach ritheamar go leor próiseas ag an am céanna ar roinnt freastalaithe. Agus conas monatóireacht a dhéanamh go bhfuil gach rud ag dul go maith dóibh? Mar shampla, cuireann siad rud éigin ar an Idirlíon. Caithfidh siad scríobh faoina staid áit éigin, mar shampla, i mbunachar sonraí nó logáil de chineál éigin, ansin an logáil seo a chomhiomlánú agus ansin é a anailísiú áit éigin. Ina theannta sin, ní mór dúinn a chur san áireamh go raibh an próiseas ag obair agus ag obair, go tobann tháinig earráid éigin le feiceáil ann nó gur thit sé, ansin cé chomh tapa agus a gheobhaidh muid amach faoi?
Is léir gur féidir monatóireacht tapa a dhéanamh ar seo go léir. Tá sé seo go maith freisin, ach is rud teoranta é monatóireacht a ligeann duit monatóireacht a dhéanamh ar roinnt rudaí ag an leibhéal is airde.
Nuair a theastaíonn uainn go dtosóidh ár bpróisis ag idirghníomhú lena chéile, mar shampla, roinnt sonraí a sheoladh chuig a chéile, éiríonn an cheist freisin - conas a tharlóidh sé seo? An mbeidh riocht cine de chineál éigin ann, an ndéanfaidh siad a chéile a fhorscríobh, an dtiocfaidh na sonraí i gceart, an gcaillfear aon rud ar an mbealach? Ní mór dúinn prótacal de chineál éigin a fhorbairt, etc.
Ní rud fánach é comhordú na bpróiseas seo go léir. Agus cuireann sé iallach ar an bhforbróir dul síos go dtí leibhéal níos ísle fós, agus córais a scríobh ón tús, nó ní ó thús, ach níl sé seo chomh simplí.
Má thagann tú suas le algartam cripteagrafach nó fiú é a chur i bhfeidhm, ansin é a chaitheamh láithreach, mar is dócha nach n-oibreoidh sé duit. Is dóichí go mbeidh alán earráidí ann a ndearna tú dearmad orthu soláthar a dhéanamh dóibh. Ná húsáid riamh é le haghaidh aon rud tromchúiseach mar is dócha go mbeidh sé éagobhsaí. Toisc go ndearnadh tástáil ama ar na halgartaim go léir atá ann le tamall an-fhada. Tá sé fabhtáilte ag an bpobal. Is ábhar ar leith é seo. Agus tá sé mar an gcéanna anseo. Más féidir gan próiseas sioncrónaithe de chineál éigin a chur i bhfeidhm duit féin, ansin is fearr gan é seo a dhéanamh, toisc go bhfuil sé casta go leor agus go dtiocfaidh tú síos an cosán shaky de shíor ag cuardach earráidí.
Inniu táimid ag caint faoi ZooKeeper. Ar thaobh amháin, is creat é, ar an láimh eile, is seirbhís é a dhéanann an saol níos éasca don fhorbróir agus a shimplíonn cur i bhfeidhm loighic agus comhordú ár bpróisis a oiread agus is féidir.

Cuimhnímis ar an gcuma a bheadh ar chóras caighdeánach dáilte. Is é seo an méid a labhair muid faoi - HDFS, HBase. Tá próiseas Máistir ann a bhainistíonn próisis oibrithe agus sclábhaithe. Tá sé freagrach as tascanna a chomhordú agus a dháileadh, oibrithe a atosú, cinn nua a sheoladh, agus an t-ualach a dháileadh.

Rud níos forbartha ná an tSeirbhís Chomhordaithe, is é sin, an tasc comhordaithe féin a bhogadh isteach i bpróiseas ar leith, chomh maith le cineál éigin máistir cúltaca nó cúltaca a reáchtáil ag an am céanna, toisc go bhféadfadh sé go dteipeann ar an Máistir. Agus má thiteann an Máistir, ansin ní bheidh ár gcóras ag obair. Táimid ag rith cúltaca. Deir cuid acu gur gá an Máistir a mhacasamhlú go cúltaca. Is féidir é seo a chur ar iontaoibh na Seirbhíse Comhordaithe freisin. Ach sa léaráid seo, tá an Máistir féin freagrach as na hoibrithe a chomhordú; anseo tá an tseirbhís ag comhordú gníomhaíochtaí macasamhlú sonraí.

Rogha níos forbartha ná nuair a láimhseálann ár seirbhís an comhordú go léir, mar a dhéantar de ghnáth. Glacann sé freagracht as a chinntiú go n-oibríonn gach rud. Agus mura n-oibríonn rud éigin, faighimid amach faoi agus déanaimid iarracht dul timpeall ar an gcás seo. Ar aon chuma, fágtar Máistir linn a idirghníomhaíonn ar bhealach éigin le sclábhaithe agus is féidir sonraí, faisnéis, teachtaireachtaí, etc. a sheoladh trí sheirbhís éigin.

Tá scéim níos forbartha fós, nuair nach bhfuil Máistir againn, is máistir-sclábhaithe iad na nóid go léir, difriúil ina n-iompraíocht. Ach caithfidh siad idirghníomhú lena chéile fós, agus mar sin tá seirbhís éigin fágtha chun na gníomhartha seo a chomhordú. Is dócha go n-oireann Cassandra, a oibríonn ar an bprionsabal seo, an scéim seo.
Is deacair a rá cé acu de na scéimeanna seo a oibríonn is fearr. Tá a buntáistí agus míbhuntáistí féin ag gach ceann acu.

Agus ní gá a bheith eaglach roimh roinnt rudaí leis an Máistir, mar, mar a léiríonn an cleachtas, nach bhfuil sé chomh so-ghabhálach chun freastal de shíor. Is é an rud is mó anseo ná an réiteach ceart a roghnú chun an tseirbhís seo a óstáil ar nód cumhachtach ar leith, ionas go mbeidh go leor acmhainní aige, ionas nach mbeidh rochtain ag úsáideoirí, más féidir, ionas nach maraíonn siad an próiseas seo trí thimpiste. Ach ag an am céanna, i scéim den sórt sin tá sé i bhfad níos éasca oibrithe a bhainistiú ón bpróiseas Máistir, i.e. tá an scéim seo níos simplí ó thaobh cur i bhfeidhm de.

Agus is dócha go bhfuil an scéim seo (thuas) níos casta, ach níos iontaofa.

Is é an fhadhb is mó teipeanna páirteach. Mar shampla, nuair a sheolaimid teachtaireacht thar an Líonra, tarlaíonn timpiste de chineál éigin, agus ní bheidh a fhios ag an té a sheol an teachtaireacht an bhfuarthas a theachtaireacht agus cad a tharla ar thaobh an ghlacadóra, ní bheidh a fhios an ndearnadh an teachtaireacht a phróiseáil i gceart. , i.e. ní bhfaighidh sé aon deimhniú.
Dá réir sin, ní mór dúinn an cás seo a phróiseáil. Agus is é an rud is simplí an teachtaireacht seo a athsheoladh agus fanacht go bhfaighimid freagra. Sa chás seo, ní chuirtear san áireamh an bhfuil athrú tagtha ar staid an ghlacadóra. B'fhéidir go seolfaimid teachtaireacht agus cuirimid na sonraí céanna faoi dhó.
Cuireann ZooKeeper bealaí ar fáil chun déileáil le diúltú den sórt sin, rud a fhágann go bhfuil ár saol níos éasca.

Mar a luadh beagán níos luaithe, tá sé seo cosúil le cláir il-snáithithe a scríobh, ach is é an príomh-difríocht ná go dtógfaimid an t-aon bhealach chun cumarsáid a dhéanamh ar mheaisíní éagsúla in iarratais dháilte a thógfaimid ar mheaisíní éagsúla. Go bunúsach, is ailtireacht roinnte-rud ar bith é seo. Tá a chuimhne féin, a dhiosca féin, a phróiseálaí féin ag gach próiseas nó seirbhís a ritheann ar mheaisín amháin, rud nach roinneann sé le haon duine.
Má scríobhaimid clár il-snáithithe ar ríomhaire amháin, is féidir linn cuimhne roinnte a úsáid chun sonraí a mhalartú. Tá lasc comhthéacs againn ansin, is féidir le próisis athrú. Cuireann sé seo isteach ar fheidhmíocht. Ar thaobh amháin, níl a leithéid de rud sa chlár ar bhraisle, ach tá fadhbanna leis an Líonra.

Dá réir sin, is iad cumraíocht na príomhfhadhbanna a thagann chun cinn agus córais dáilte á scríobh. Táimid ag scríobh roinnt iarratais. Más rud é go bhfuil sé simplí, ansin déanaimid crua-chódú ar gach cineál uimhreacha sa chód, ach tá sé seo deacair, mar má chinnimid go dteastaíonn teorainn ama laistigh de shoicind in ionad am istigh de leath soicind, ansin caithfimid an t-iarratas a athchruinniú agus rolladh amach gach rud arís. Is rud amháin é nuair a bhíonn sé ar mheaisín amháin, nuair is féidir leat é a atosú, ach nuair a bhíonn go leor meaisíní againn, ní mór dúinn gach rud a chóipeáil i gcónaí. Ní mór dúinn iarracht a dhéanamh an feidhmchlár a chumrú.
Anseo táimid ag caint faoi chumraíocht statach do phróisis chórais. Níl sé seo go hiomlán, b'fhéidir ó thaobh an chórais oibriúcháin de, d'fhéadfadh sé a bheith ina chumraíocht statach dár bpróisis, i.e. is cumraíocht é seo nach féidir a thógáil agus a nuashonrú go simplí.
Tá cumraíocht dhinimiciúil ann freisin. Is iad seo na paraiméadair ba mhaith linn a athrú ar an eitilt ionas go mbailítear agus a scaoiltear ann.
Cad é an fhadhb anseo? Nuashonraíomar an cumraíocht, rolladh amach é, mar sin cad é? B'fhéidir gurb í an fhadhb atá ann ná gur chuireamar an cumraíocht i bhfeidhm ar thaobh amháin, ach rinneamar dearmad ar an rud nua, d'fhan an cumraíocht ann. Ar an dara dul síos, agus muid á rolladh amach, nuashonraíodh an chumraíocht i roinnt áiteanna, ach ní in áiteanna eile. Agus rinneadh roinnt próisis dár n-iarratas a ritheann ar mheaisín amháin a atosú le cumraíocht nua, agus áit éigin le seancheann. D’fhéadfadh go mbeadh ár bhfeidhmchlár dáilte ar neamhréir ó thaobh na cumraíochta de. Tá an fhadhb seo coitianta. Maidir le cumraíocht dhinimiciúil, tá sé níos ábhartha toisc go dtugann sé le tuiscint gur féidir é a athrú ar an eitilt.
Fadhb eile is ea ballraíocht grúpa. Bíonn foireann éigin oibrithe againn i gcónaí, ba mhaith linn i gcónaí fios a bheith againn cé acu díobh atá beo, cé acu atá marbh. Má tá Máistir ann, caithfidh sé a thuiscint cé na hoibrithe is féidir a atreorú chuig cliaint ionas go rithfidh siad ríomhaireachtaí nó go n-oibreoidh siad le sonraí, agus nach féidir. Fadhb a thagann chun cinn i gcónaí ná go gcaithfimid fios a bheith againn cé atá ag obair inár mbraisle.
Fadhb tipiciúil eile is ea toghcháin cheannairí, nuair is mian linn a fháil amach cé atá i gceannas. Sampla amháin is ea macasamhlú, nuair a bhíonn próiseas éigin againn a fhaigheann oibríochtaí scríbhneoireachta agus a dhéanann iad a mhacasamhlú i measc próisis eile. Beidh sé ina cheannaire, géillfidh gach duine eile dó, leanfaidh sé é. Is gá próiseas a roghnú ionas go mbeidh sé gan athbhrí do gach duine, ionas nach dtiocfaidh sé amach go roghnófar dhá cheannaire.
Tá rochtain chomheisiatach ann freisin. Tá an fhadhb anseo níos casta. Tá a leithéid de rud ann agus mutex, nuair a scríobhann tú cláir il-snáithithe agus gur mhaith leat rochtain ar acmhainn éigin, mar shampla, cill chuimhne, a theorannú agus a chur i gcrích le snáithe amháin. Anseo d'fhéadfadh an acmhainn a bheith rud éigin níos teibí. Agus níor cheart go bhfaigheadh feidhmchláir éagsúla ó nóid éagsúla ár Líonra ach rochtain eisiach ar acmhainn ar leith, agus ní ionas gur féidir le gach duine é a athrú nó rud éigin a scríobh ann. Is iad seo na glais mar a thugtar orthu.
Ligeann ZooKeeper duit na fadhbanna seo go léir a réiteach go pointe nó go pointe eile. Agus taispeánfaidh mé le samplaí conas a ligeann sé duit é seo a dhéanamh.

Níl aon primitives blocála ann. Nuair a thosaímid ag baint úsáide as rud éigin, ní bheidh an primitive seo ag fanacht le himeacht ar bith. Is dócha go n-oibreoidh an rud seo go neamhshioncronach, rud a fhágann nach féidir próisis a chrochadh agus iad ag fanacht le rud éigin. Is rud an-úsáideach é seo.
Déantar gach iarratas ó chliaint a phróiseáil in ord na scuaine ginearálta.
Agus bíonn deis ag cliaint fógra a fháil faoi athruithe i stát éigin, faoi athruithe ar shonraí, sula bhfeiceann an cliant na sonraí athraithe iad féin.

Is féidir le ZooKeeper oibriú i dhá mhodh. Is modh neamhspleách é an chéad cheann, ar nód amháin. Tá sé seo áisiúil le haghaidh tástála. Is féidir leis oibriú i mód braisle freisin, ar aon líon nóid. freastalaitheMura bhfuil ach braisle 100 meaisín againn, ní gá go rithfeadh sé ar 100 meaisín. Is leor cúpla meaisín a leithdháileadh ar féidir le ZooKeeper rith orthu. Agus cloíonn sé le prionsabal na hinfhaighteachta arda. Stórálann ZooKeeper cóip iomlán de na sonraí ar gach cás atá ag rith. Míneoidh mé conas a dhéanann sé seo níos déanaí. Ní dhéanann sé na sonraí a roinnt ná a dheighilt. Ar thaobh amháin, is míbhuntáiste é seo mar ní féidir linn mórán a stóráil, ach ar an taobh eile, níl gá leis. Níl sé deartha chuige sin; ní bunachar sonraí é.
Is féidir sonraí a thaisceadh ar thaobh an chliaint. Is prionsabal caighdeánach é seo ionas nach gcuirfimid isteach ar an tseirbhís agus nach lódálaimid é leis na hiarratais chéanna. De ghnáth bíonn a fhios ag cliant cliste faoi seo agus cuireann sé i dtaisce é.
Mar shampla, tá rud éigin tar éis athrú anseo. Tá iarratas de shaghas éigin ann. Toghadh ceannaire nua, atá freagrach, mar shampla, as oibríochtaí scríbhneoireachta a phróiseáil. Agus ba mhaith linn na sonraí a mhacasamhlú. Is é réiteach amháin ná é a chur i lúb. Agus ceistíonn muid ár seirbhís i gcónaí - an bhfuil aon rud athraithe? Tá an dara rogha níos fearr. Is meicníocht faire é seo a ligeann duit a chur in iúl do chliaint go bhfuil rud éigin athraithe. Is modh níos saoire é seo i dtéarmaí acmhainní agus níos áisiúla do chliaint.

Is é an cliant an t-úsáideoir a úsáideann ZooKeeper.
Is é an freastalaí an próiseas ZooKeeper féin.
Is é Znode an rud is tábhachtaí i ZooKeeper. Stóráiltear gach znodes mar chuimhne ag ZooKeeper agus eagraítear iad i bhfoirm léaráide ordlathach, i bhfoirm crann.
Tá dhá chineál oibríochta ann. Is é an chéad cheann ná nuashonrú/scríobh, nuair a athraíonn oibríocht éigin staid ár gcrann. Tá an crann coitianta.
Agus is féidir nach ndéanann an cliant iarratas amháin agus go bhfuil sé dícheangailte, ach is féidir leis seisiún a bhunú trína n-idirghníomhaíonn sé le ZooKeeper.

Tá samhail sonraí ZooKeeper cosúil le córas comhaid. Tá fréamh caighdeánach ann agus ansin chuaigh muid amhail is dá mba trí na heolairí a théann ón bhfréamh. Agus ansin an chatalóg ar an chéad leibhéal, dara leibhéal. Tá sé seo go léir znodes.
Is féidir le gach znode roinnt sonraí a stóráil, de ghnáth nach bhfuil an-mhór, mar shampla, 10 cilibheart. Agus is féidir go mbeadh líon áirithe leanaí ag gach znode.

Znodes teacht i cineálacha éagsúla. Is féidir iad a chruthú. Agus nuair a chruthaítear znode, sonraímid an cineál lena mbaineann sé.
Tá dhá chineál ann. Is é an chéad cheann an brat gearrshaolach. Tá Znode ina chónaí laistigh de sheisiún. Mar shampla, tá seisiún bunaithe ag an gcliant. Agus fad a bheidh an seisiún seo beo, beidh sé ann. Tá sé seo riachtanach ionas nach dtairgfear rud éigin gan ghá. Tá sé seo oiriúnach freisin le haghaidh chuimhneacháin nuair a bhíonn sé tábhachtach dúinn primitives sonraí a stóráil laistigh de sheisiún.
Is é an dara cineál bratach seicheamhach. Ardaíonn sé an cuntar ar an mbealach chuig an znode. Mar shampla, bhí eolaire againn le feidhmchlár 1_5. Agus nuair a chruthaigh muid an chéad nód, fuair sé p_1, an dara - p_2. Agus nuair a ghlaoimid an modh seo gach uair, déanaimid pas ar an gcosán iomlán, rud a léiríonn ach cuid den chosán, agus déantar an uimhir seo a mhéadú go huathoibríoch toisc go léirímid an cineál nód - seicheamhach.
znode rialta. Mairfidh sí i gcónaí agus beidh an t-ainm a insímid di.

Rud úsáideach eile is ea an bhratach faire. Má shuiteáilimid é, ansin is féidir leis an gcliant síntiús a íoc le roinnt imeachtaí le haghaidh nód ar leith. Taispeánfaidh mé duit níos déanaí le sampla conas a dhéantar é seo. Cuireann ZooKeeper féin in iúl don chliant go bhfuil na sonraí ar an nód athraithe. Mar sin féin, ní ráthaíonn fógraí go bhfuil roinnt sonraí nua tagtha. Deir siad go simplí go bhfuil rud éigin tar éis athrú, mar sin caithfidh tú fós sonraí a chur i gcomparáid níos déanaí le glaonna ar leithligh.
Agus mar a dúirt mé cheana, déantar ord na sonraí a chinneadh ag cilibheart. Níl gá le sonraí téacs móra a stóráil ann, toisc nach bunachar sonraí é, is freastalaí comhordaithe gníomhaíochta é.

Lig dom beagán a insint duit faoi sheisiúin. Má tá roinnt freastalaithe againn, is féidir linn aistriú go trédhearcach ó fhreastalaí amháin go freastalaí eile. freastalaí, ag baint úsáide as an ID seisiúin. Tá sé seo sách áisiúil.
Bíonn teorainn ama de shaghas éigin ag gach seisiún. Sainmhínítear seisiún cibé an seolann an cliant rud ar bith chuig an bhfreastalaí le linn an tseisiúin sin. Mura dtarchuir sé rud ar bith le linn an teorainn ama, titeann an seisiún as, nó is féidir leis an gcliant é a dhúnadh é féin.

Níl an oiread sin gnéithe aige, ach is féidir leat rudaí éagsúla a dhéanamh leis an API seo. Cruthaíonn an glao sin a chonaic muid a chruthú znode agus tógann sé trí pharaiméadar. Is é seo an cosán go dtí an znode, agus ní mór é a shonrú go hiomlán ón bhfréamh. Agus freisin tá sé seo roinnt sonraí gur mhaith linn a aistriú ann. Agus an cineál bratach. Agus tar éis a chruthú filleann sé an cosán chuig an znode.
Sa dara háit, is féidir leat é a scriosadh. Is é an cleas anseo ná gur féidir leis an dara paraiméadar, chomh maith leis an gcosán chuig an znode, an leagan a shonrú. Dá réir sin, scriosfar an znode sin má tá an leagan a d’aistrigh muid comhionann leis an leagan atá ann i ndáiríre.
Más rud é nach bhfuil muid ag iarraidh a sheiceáil leis an leagan seo, ansin ní mór dúinn pas a fháil ach an "-1" argóint.

Ar an tríú dul síos, seiceálann sé go bhfuil znode ann. Filleann sé fíor má tá an nód ann, bréagach ar shlí eile.
Agus ansin feictear faire bratach, rud a ligeann duit monatóireacht a dhéanamh ar an nód seo.
Is féidir leat an bhratach seo a shocrú fiú ar nód nach bhfuil ann agus fógra a fháil nuair a thaispeánfar é. Is féidir é seo a bheith úsáideach freisin.
Tá cúpla dúshlán eile getData. Is léir gur féidir linn sonraí a fháil trí znode. Is féidir leat faire bratach a úsáid freisin. Sa chás seo, ní shuiteáilfidh sé mura bhfuil nód ann. Dá bhrí sin, ní mór duit a thuiscint go bhfuil sé ann, agus ansin sonraí a fháil.

Tá freisin SetData. Anseo táimid ag pas leagan. Agus má chuirimid é seo ar aghaidh, déanfar na sonraí ar an znode de leagan áirithe a nuashonrú.
Is féidir leat "-1" a shonrú freisin chun an seiceáil seo a eisiamh.
Is modh úsáideach eile fháil Leanaí. Is féidir linn a fháil freisin liosta de na znodes a bhaineann leis. Is féidir linn monatóireacht a dhéanamh air seo trí fhaire brataí a shocrú.
Agus modh info ceadaíonn sé gach athrú a sheoladh ag an am céanna, rud a chinntíonn go ndéantar iad a shábháil agus go bhfuil na sonraí go léir athraithe go hiomlán.
Má tharraingímid analógacha le ríomhchlárú rialta, ansin nuair a úsáideann tú modhanna cosúil le scríobh, a scríobhann rud éigin ar diosca, agus tar éis dó freagra a thabhairt ar ais chugat, níl aon ráthaíocht ann go bhfuil na sonraí scríofa agat ar diosca. Agus fiú nuair a bhíonn an córas oibriúcháin muiníneach go bhfuil gach rud scríofa, tá meicníochtaí sa diosca féin ina dtéann an próiseas trí shraith maoláin, agus ach amháin ina dhiaidh sin cuirtear na sonraí ar an diosca.

Úsáidtear glaonna asincrónacha den chuid is mó. Ligeann sé seo don chliant oibriú go comhthreomhar le hiarratais éagsúla. Is féidir leat an cur chuige sioncrónach a úsáid, ach níl sé chomh táirgiúil.
Is iad an dá oibríocht ar labhair muid faoi ná nuashonrú/scríobh, a athraíonn sonraí. Is iad seo cruthaigh, setData, sioncronaigh, scrios. Agus tá léamh ann, getData, getChildren.

Anois roinnt samplaí de conas is féidir leat primitives a dhéanamh le haghaidh oibriú i gcóras dáilte. Mar shampla, a bhaineann le cumraíocht rud éigin. Tá oibrí nua le feiceáil. Chuireamar an meaisín leis agus chuireamar tús leis an bpróiseas. Agus tá na trí cheist seo a leanas. Conas a chuireann sé ceist ar ZooKeeper maidir le cumraíocht? Agus más mian linn an chumraíocht a athrú, conas a dhéanaimid é a athrú? Agus tar éis dúinn é a athrú, conas a fhaigheann na hoibrithe sin a bhí againn é?
Déanann ZooKeeper é seo sách éasca. Mar shampla, tá ár gcrann znode ann. Tá nód dár bhfeidhmchlár anseo, cruthaímid nód breise ann, ina bhfuil sonraí ón gcumraíocht. Féadfaidh nó nach paraiméadair ar leith iad seo. Ós rud é go bhfuil an méid beag, is gnách go mbíonn an méid cumraíochta beag freisin, agus mar sin is féidir é a stóráil anseo.
Tá an modh á úsáid agat getData chun an chumraíocht don oibrí a fháil ón nód. Socraigh go fíor. Más rud é ar chúis éigin nach bhfuil an nód seo ann, cuirfimid ar an eolas faoi nuair a thagann sé, nó nuair a athraíonn sé. Más mian linn a fháil amach go bhfuil rud éigin tar éis athrú, ansin leagaimid amach é. Agus má athraíonn na sonraí sa nód seo, beidh a fhios againn faoi.
SetData. Socraímid na sonraí, socraímid "-1", ie ní dhéanaimid seiceáil ar an leagan, glacaimid leis go bhfuil cumraíocht amháin againn i gcónaí, ní gá dúinn go leor cumraíochtaí a stóráil. Más gá duit a lán a stóráil, beidh ort leibhéal eile a chur leis. Anseo creidimid nach bhfuil ach ceann amháin ann, mar sin ní nuashonraímid ach an ceann is déanaí, mar sin ní dhéanaimid seiceáil ar an leagan. Ag an nóiméad seo, faigheann gach cliant a shuibscríobh roimhe seo fógra go bhfuil rud éigin athraithe sa nód seo. Agus tar éis dóibh é a fháil, ní mór dóibh na sonraí a iarraidh arís freisin. Is é an fógra nach bhfaigheann siad na sonraí féin, ach amháin fógra athruithe. Ina dhiaidh sin caithfidh siad sonraí nua a iarraidh.

Is é an dara rogha maidir le húsáid an primitive ballraíocht ghrúpa. Tá iarratas dáilte againn, tá dornán oibrithe ann agus ba mhaith linn a thuiscint go bhfuil siad ar fad i bhfeidhm. Mar sin, ní mór dóibh iad féin a chlárú go n-oibríonn siad inár n-iarratas. Agus ba mhaith linn freisin a fháil amach, ón bpróiseas Máistir nó áit éigin eile, faoi na hoibrithe gníomhacha go léir atá againn faoi láthair.
Conas a dhéanaimid é seo? Don fheidhmchlár, cruthaímid nód oibrithe agus cuirimid fo-leibhéal ann ag baint úsáide as an modh cruthaigh. Tá earráid agam ar an sleamhnán. Anseo is gá duit seicheamhach sonraigh, ansin cruthófar gach oibrí ceann ar cheann. Agus faigheann an t-iarratas, ag iarraidh na sonraí go léir faoi leanaí an nód seo, na hoibrithe gníomhacha go léir atá ann.


Is cur i bhfeidhm uafásach é seo ar conas is féidir é seo a dhéanamh i gcód Java. Let tús ón deireadh, leis an modh is mó. Is é seo ár rang, a ligean ar a chruthú a modh. Mar an chéad argóint a úsáidimid óstach, áit a bhfuil muid ag nascadh, i.e. leagaimid amach é mar argóint. Agus is é an dara argóint ainm an ghrúpa.
Conas a tharlaíonn an nasc? Is sampla simplí é seo den API a úsáidtear. Tá gach rud sách simplí anseo. Tá ZooKeeper den rang caighdeánach ann. Tugaimid ina hóstach dó. Agus socraigh an teorainn ama, mar shampla, go 5 soicind. Agus tá ball againn ar a dtugtar connectedSignal. Go bunúsach, cruthaímid grúpa feadh an chosáin tarchurtha. Ní scríobhaimid sonraí ann, cé go bhféadfadh rud éigin a bheith scríofa. Agus tá an nód anseo den chineál leanúnach. Go bunúsach, is gnáthnód rialta é seo a bheidh ann an t-am ar fad. Seo an áit a gcruthaítear an seisiún. Is é seo an cliant féin a chur i bhfeidhm. Seolfaidh ár gcliant teachtaireachtaí tréimhsiúla ag léiriú go bhfuil an seisiún beo. Agus nuair a chríochnaíonn muid an seisiún, glaoimid gar agus sin é, titeann an seisiún as. Seo ar eagla go dtitfidh rud éigin uainn, ionas go bhfaighidh ZooKeeper amach faoi agus go gcuirfidh sé deireadh leis an seisiún.

Conas acmhainn a ghlasáil? Anseo tá gach rud beagán níos casta. Tá sraith oibrithe againn, tá acmhainn éigin ann a theastaíonn uainn a ghlasáil. Chun seo a dhéanamh, cruthaímid nód ar leith, mar shampla, ar a dtugtar lock1. Má bhí muid in ann é a chruthú, ansin fuair muid glas anseo. Agus más rud é nach raibh muid in ann é a chruthú, ansin déanann an t-oibrí iarracht getData a fháil ó anseo, agus ós rud é go bhfuil an nód cruthaithe cheana féin, ansin cuirimid faireoir anseo agus an nóiméad a athraíonn staid an nód seo, beidh a fhios againn faoi. Agus is féidir linn iarracht a dhéanamh am a bheith againn chun é a athchruthú. Má ghlacamar an nód seo, ghlacamar an glas seo, ansin tar éis dúinn an glas a thuilleadh, déanfaimid é a thréigean, ós rud é nach bhfuil an nód ann ach amháin laistigh den seisiún. Dá réir sin, beidh sé imíonn siad. Agus beidh cliant eile, faoi chuimsiú seisiún eile, in ann an glas a ghlacadh ar an nód seo, nó ina áit sin, gheobhaidh sé fógra go bhfuil rud éigin tar éis athrú agus is féidir leis iarracht a dhéanamh é a dhéanamh in am.

Sampla eile de conas is féidir leat an príomhcheannaire a roghnú. Tá sé seo beagán níos casta, ach freisin réasúnta simplí. Cad atá ar siúl anseo? Tá príomhnód ann a chomhiomlánaíonn na hoibrithe go léir. Táimid ag iarraidh sonraí a fháil faoin gceannaire. Má tharla sé seo go rathúil, i.e. fuair muid roinnt sonraí, ansin tosaíonn ár n-oibrí an ceannaire seo a leanúint. Creideann sé go bhfuil ceannaire ann cheana féin.
Má fuair bás an ceannaire ar chúis éigin, mar shampla, thit amach, ansin déanaimid ár ndícheall a chruthú ceannaire nua. Agus má éiríonn linn, beidh ár n-oibrí ina cheannaire. Agus má d'éirigh le duine ag an nóiméad seo ceannaire nua a chruthú, ansin déanaimid iarracht a thuiscint cé hé agus ansin é a leanúint.
Anseo tagann an éifeacht tréada, mar a thugtar air, ie an éifeacht tréada, mar nuair a fhaigheann ceannaire bás, beidh an ceannaire ar dtús.

Agus acmhainn á ghabháil agat, is féidir leat iarracht a dhéanamh cur chuige beagán difriúil a úsáid, mar a leanas. Mar shampla, ba mhaith linn glas a fháil, ach gan an éifeacht hert. Is éard a bheidh ann go n-iarrann ár n-iarratas liostaí de na haitheantais nód go léir le haghaidh nód atá ann cheana féin le glas. Agus más rud é roimhe sin gurb é an nód ar chruthaigh muid glas é an ceann is lú den tacar a fuaireamar, ansin ciallaíonn sé seo go bhfuil an glas gafa againn. Déanaimid seiceáil go bhfuil glas faighte againn. Mar sheic, beidh coinníoll ann gur beag an t-aitheantas a fuaireamar agus glas nua á chruthú. Agus má fuair muid é, ansin oibrímid a thuilleadh.
Má tá aitheantas áirithe níos lú ná an glas atá againn, cuirimid faireoir ar an imeacht seo agus fanaimid le fógra go dtí go n-athraíonn rud éigin. Is é sin, fuaireamar an glas seo. Agus go dtí go dtiteann sé amach, ní bheidh muid mar an t-aitheantas íosta agus ní bhfaighidh muid an glas íosta, agus dá bhrí sin beimid in ann logáil isteach. Agus mura gcomhlíontar an coinníoll seo, ansin téann muid anseo láithreach agus déanaimid iarracht an glas seo a fháil arís, toisc go bhféadfadh rud éigin a bheith athraithe le linn an ama seo.

Cad atá i ZooKeeper comhdhéanta de? Tá 4 phríomhrud ann. Tá sé seo próisis próiseála - Iarratas. Agus freisin ZooKeeper Craoladh Adamhach. Tá Loga Tiomanta ann ina ndéantar gach oibríocht a thaifeadadh. Agus an DB In-Memory Replicated féin, ie an bunachar sonraí féin ina bhfuil an crann iomlán seo stóráilte.
Is fiú a thabhairt faoi deara go dtéann gach oibríocht scríofa tríd an bPróiseálaí Iarratas. Agus téann oibríochtaí léite díreach chuig an mbunachar sonraí In-memory.

Tá macasamhlú iomlán ar an mbunachar sonraí féin. Stórálann gach cás de ZooKeeper cóip iomlán de na sonraí.
D'fhonn an bunachar sonraí a chur ar ais tar éis tuairteála, tá logáil Commit. Is é an cleachtas caighdeánach ná sula gcuirtear na sonraí i gcuimhne, go scríobhtar ansin iad ionas gur féidir an logáil seo a imirt ar ais agus staid an chórais a chur ar ais má thuairteanna sé. Agus baintear úsáid as grianghraif tréimhsiúla den bhunachar sonraí freisin.

Is rud é ZooKeeper Atomic Broadcast a úsáidtear chun sonraí a mhacasamhlú a choinneáil.
Roghnaíonn ZAB ceannaire go hinmheánach ó thaobh an nód ZooKeeper. Éiríonn nóid eile ina leanúna agus bíonn siad ag súil le roinnt gníomhartha uaithi. Má fhaigheann siad iontrálacha, cuireann siad iad go léir ar aghaidh chuig an gceannaire. Déanann sé oibríocht scríbhneoireachta ar dtús agus ansin cuireann sé teachtaireacht faoina bhfuil athraithe chuig a lucht leanúna. Go deimhin, ní mór é seo a dhéanamh go adamhach, i.e., ní mór oibriú taifeadta agus craolacháin an rud ar fad a dhéanamh go adamhach, rud a ráthóidh comhsheasmhacht sonraí.
Ní phróiseálann sé ach iarratais scríofa. Is é an príomhthasc atá aige ná an oibríocht a athrú ina nuashonrú idirbheartaíochta. Is iarratas a ghintear go speisialta é seo.
Agus anseo is fiú a thabhairt faoi deara go ráthaítear neamhshuim nuashonruithe don oibríocht chéanna. An rud atá ann? Má dhéantar an rud seo faoi dhó, beidh an staid chéanna aige, i.e. ní athróidh an t-iarratas féin. Agus ní mór é seo a dhéanamh ionas gur féidir leat an oibríocht a atosú i gcás timpiste, agus ar an gcaoi sin na hathruithe atá tar éis titim amach faoi láthair a thabhairt ar ais. Sa chás seo, tiocfaidh staid an chórais mar a chéile, i.e. níor cheart go mbeadh staideanna deiridh éagsúla an chórais mar thoradh ar shraith díobh, mar shampla, próisis nuashonraithe.








Foinse: will.com
