Ophunzira asanu ndi atatu adagawira masitolo ofunika kwambiri
Kapena momwe tidalembera laibulale ya kasitomala C ++ ya ZooKeeper, etcd ndi Consul KV
M'dziko la machitidwe ogawidwa, pali ntchito zingapo zomwe zimachitika: kusunga zambiri zamagulu a gulu, kuyang'anira kasinthidwe ka node, kuzindikira mfundo zolakwika, kusankha mtsogoleri. ndi zina. Kuti athetse mavutowa, machitidwe apadera ogawidwa apangidwa - ntchito zogwirizanitsa. Tsopano tikhala ndi chidwi ndi atatu mwa iwo: ZooKeeper, etcd ndi Consul. Pazinthu zonse zolemera za Consul, tiyang'ana pa Consul KV.
M'malo mwake, machitidwe onsewa ndi olekerera zolakwika, masitolo amtengo wapatali okhoza kutsatiridwa. Ngakhale kuti ma data awo ali ndi kusiyana kwakukulu, zomwe tidzakambirana pambuyo pake, amathetsa mavuto omwewo. Mwachiwonekere, ntchito iliyonse yomwe imagwiritsa ntchito ntchito yogwirizanitsa imamangirizidwa ndi imodzi mwa izo, zomwe zingayambitse kufunikira kothandizira machitidwe angapo mu malo amodzi a data omwe amathetsa mavuto omwewo pa ntchito zosiyanasiyana.
Lingaliro lothetsera vutoli linachokera ku bungwe la alangizi la ku Australia, ndipo linagwera kwa ife, gulu laling'ono la ophunzira, kuti tigwiritse ntchito, zomwe ndikunena.
Tinatha kupanga laibulale yomwe imapereka mawonekedwe wamba ogwirira ntchito ndi ZooKeeper, etcd ndi Consul KV. Laibulaleyi imalembedwa mu C ++, koma pali mapulani oti atumize ku zilankhulo zina.
Makiyi amapangidwa kukhala mtengo ndipo amatchedwa node. Choncho, kwa mfundo mukhoza kupeza mndandanda wa ana ake. Ntchito zopanga znode (pangani) ndikusintha mtengo (setData) zimalekanitsidwa: makiyi omwe alipo okha amatha kuwerengedwa ndi kusinthidwa. Mawotchi amatha kulumikizidwa ndi ntchito zowunika kukhalapo kwa node, kuwerenga phindu, ndikupeza ana. Watch ndi choyambitsa kamodzi chomwe chimayaka pomwe mtundu wa data yofananira pa seva usintha. Ephemeral node amagwiritsidwa ntchito kuti azindikire zolephera. Amamangirizidwa ku gawo la kasitomala amene adawalenga. Wogula akatseka gawo kapena kusiya kudziwitsa ZooKeeper za kukhalapo kwake, ma node awa amachotsedwa. Zochita zosavuta zimathandizidwa - machitidwe omwe onse amapambana kapena kulephera ngati izi sizingatheke kwa chimodzi mwazo.
etcd
Omwe akupanga dongosololi adauziridwa momveka bwino ndi ZooKeeper, motero adachita chilichonse mosiyana. Palibe utsogoleri wa makiyi, koma amapanga seti yolembedwa motsatira mawu. Mutha kupeza kapena kuchotsa makiyi onse amtundu wina. Kapangidwe kameneka kangawonekere kwachilendo, koma kwenikweni kamvekedwe kake, ndipo kawonedwe kaulamuliro kamatha kutsanziridwa mosavuta kudzera mu izo.
etcd ilibe ntchito yofananiza-ndi-kuyika, koma ili ndi china chake chabwinoko: kugulitsa. Zachidziwikire, zilipo m'makina onse atatu, koma zochitika za etcd ndizabwino kwambiri. Amakhala ndi midadada itatu: cheke, kupambana, kulephera. Chida choyamba chili ndi zikhalidwe, chachiwiri ndi chachitatu - ntchito. The transaction ikuchitika atomiki. Ngati mikhalidwe yonse ndi yowona, ndiye kuti chipika chopambana chimachitidwa, apo ayi chipika cholephera chimachitidwa. Mu API 3.3, midadada yopambana ndi yolephera imatha kukhala ndi zochitika zomwe zasungidwa. Ndiko kuti, ndizotheka kupanga ma atomu okhala ndi zokhazikika pafupifupi mulingo wokhazikika wa zisa. Mutha kudziwa zambiri za zomwe macheke ndi magwiridwe antchito alipo zolemba.
Mawotchi aliponso pano, ngakhale ndi ovuta kwambiri ndipo amatha kugwiritsidwanso ntchito. Ndiye kuti, mutatha kuyika wotchi pamakiyi ofunikira, mudzalandira zosintha zonse pamndandandawu mpaka mutaletsa wotchiyo, osati yoyamba yokha. Mu etcd, analogue ya ZooKeeper kasitomala magawo ndi lease.
Kazembe K.V.
Palibenso dongosolo lokhazikika laulamuliro pano, koma Consul imatha kupanga mawonekedwe omwe alipo: mutha kupeza ndikuchotsa makiyi onse ndi prefix yodziwika, ndiye kuti, gwiritsani ntchito "subtree" ya kiyi. Mafunso otere amatchedwa recursive. Kuphatikiza apo, Consul amatha kusankha makiyi omwe alibe zilembo zomwe zatchulidwa pambuyo pa prefix, zomwe zimagwirizana ndi kupeza "ana" nthawi yomweyo. Koma ndi bwino kukumbukira kuti izi ndi maonekedwe a dongosolo hierarchical: n'zotheka kulenga kiyi ngati palibe kholo kapena kuchotsa fungulo ali ana, pamene ana adzapitiriza kusungidwa mu dongosolo.
M'malo mwa mawotchi, Consul akuletsa zopempha za HTTP. Kwenikweni, awa ndi mafoni wamba ku njira yowerengera deta, yomwe, pamodzi ndi magawo ena, mawonekedwe omaliza a data akuwonetsedwa. Ngati ndondomeko yamakono ya deta yofanana pa seva ndi yaikulu kuposa yomwe yatchulidwa, yankho limabwezedwa mwamsanga, mwinamwake - pamene mtengo ukusintha. Palinso magawo omwe amatha kulumikizidwa ku makiyi nthawi iliyonse. Ndizofunikira kudziwa kuti mosiyana ndi etcd ndi ZooKeeper, komwe kuchotsa magawo kumabweretsa kuchotsedwa kwa makiyi ogwirizana, pali njira yomwe gawoli limangokhala losagwirizana nawo. Likupezeka zochita, wopanda nthambi, koma ndi mitundu yonse ya macheke.
Kuziyika zonse pamodzi
ZooKeeper ili ndi mtundu wokhazikika wa data. Mafunso osiyanasiyana omwe amapezeka mu etcd sangathe kutsatiridwa bwino mu ZooKeeper kapena Consul. Poyesera kuphatikizira zabwino kwambiri pazantchito zonse, tidakhala ndi mawonekedwe ofanana ndi mawonekedwe a ZooKeeper ndi izi:
Kukana kwa mfundo zotsatizana ndi chifukwa chakuti etcd ndi Consul alibe chithandizo chokhazikika kwa iwo, ndipo akhoza kukhazikitsidwa mosavuta ndi wogwiritsa ntchito pamwamba pa mawonekedwe a laibulale.
Kukhazikitsa machitidwe ofanana ndi ZooKeeper pochotsa vertex kungafune kukhala ndi kauntala yosiyana ya ana pa kiyi iliyonse mu etcd ndi Consul. Popeza tidayesetsa kupewa kusunga zidziwitso za meta, zidaganiza zochotsa subtree yonse.
Zobisika za kukhazikitsa
Tiyeni tione mwatsatanetsatane mbali zina za kukhazikitsa laibulale mawonekedwe mu machitidwe osiyanasiyana.
Hierarchy mu etcd
Kusunga mawonedwe apamwamba mu etcd kunakhala imodzi mwantchito zosangalatsa kwambiri. Mafunso osiyanasiyana amapangitsa kuti zikhale zosavuta kupeza mndandanda wa makiyi okhala ndi mawu oyambira. Mwachitsanzo, ngati mukufuna zonse zomwe zimayambira "/foo", mukupempha zosiyanasiyana ["/foo", "/fop"). Koma izi zitha kubweretsanso gawo lonse la kiyi, zomwe sizingakhale zovomerezeka ngati mtengowo ndi waukulu. Poyamba tidakonza zogwiritsa ntchito njira yomasulira, zakhazikitsidwa mu zetcd. Kumaphatikizapo kuwonjezera baiti imodzi kumayambiriro kwa kiyi, yofanana ndi kuya kwa node mumtengo. Ndiroleni ndikupatseni chitsanzo.
"/foo" -> "u01/foo"
"/foo/bar" -> "u02/foo/bar"
Kenako pezani ana onse achinsinsi "/foo" zotheka popempha osiyanasiyana ["u02/foo/", "u02/foo0"). Inde, mu ASCII "0" imayima pambuyo pake "/".
Koma momwe mungagwiritsire ntchito kuchotsa vertex mu nkhani iyi? Zikuoneka kuti muyenera kuchotsa onse osiyanasiyana a mtunduwo ["uXX/foo/", "uXX/foo0") kwa XX kuchokera ku 01 mpaka FF. Ndiyeno tinathamangira chiwerengero cha ntchito mkati mwa malonda amodzi.
Ndiye deleting kiyi "/very" kusanduka kufufutidwa "/u00very" ndi range ["/very/", "/very0"), ndi kupeza ana onse - mu pempho la makiyi osiyanasiyana ["/very/u00", "/very/u01").
Kuchotsa kiyi mu ZooKeeper
Monga ndanenera kale, mu ZooKeeper simungathe kuchotsa node ngati ili ndi ana. Tikufuna kuchotsa kiyi pamodzi ndi subtree. Kodi nditani? Timachita zimenezi ndi chiyembekezo. Choyamba, timadutsa mobwerezabwereza, ndikupeza ana a vertex iliyonse ndi funso losiyana. Kenaka timapanga malonda omwe amayesa kuchotsa ma node onse a subtree mu dongosolo lolondola. Zachidziwikire, kusintha kumatha kuchitika pakati pa kuwerenga kamphindi kakang'ono ndikuchotsa. Pankhaniyi, ntchitoyo idzalephera. Komanso, subtree ikhoza kusintha panthawi yowerengera. Pempho la ana a node yotsatira likhoza kubwezera cholakwika ngati, mwachitsanzo, node iyi yachotsedwa kale. Muzochitika zonsezi, timabwereza ndondomeko yonse kachiwiri.
Njirayi imapangitsa kuchotsa chinsinsi kukhala chosagwira ntchito ngati ili ndi ana, ndipo makamaka ngati ntchitoyo ikupitiriza kugwira ntchito ndi subtree, kuchotsa ndi kupanga makiyi. Komabe, izi zidatithandiza kupewa kusokoneza kugwiritsa ntchito njira zina mu etcd ndi Consul.
khalani mu ZooKeeper
Mu ZooKeeper pali njira zosiyana zomwe zimagwira ntchito ndi mtengo wamtengo (pangani, fufutani, getChildren) ndi zomwe zimagwira ntchito ndi deta mu node (setData, getData) Komanso, njira zonse zimakhala ndi zovomerezeka zokhazikika: kulenga kudzabweretsa zolakwika ngati node ili kale kale. idapangidwa, kufufuta kapena setData - ngati kulibe. Tinafunikira njira yokhazikitsidwa yomwe ingatchulidwe popanda kuganizira za kukhalapo kwa kiyi.
M'chigawo chino tikhala ndi nthawi yopuma kuchokera ku machitidwe ogawidwa ndikulankhula za coding.
Chimodzi mwazofunikira kwambiri kwa kasitomala chinali nsanja: chimodzi mwazinthuzo ziyenera kuthandizidwa pa Linux, MacOS ndi Windows. Poyambirira, tidapangira Linux yokha, ndikuyamba kuyesa pamakina ena pambuyo pake. Izi zinayambitsa mavuto ambiri, omwe kwa nthawi ndithu sankadziwika bwino momwe angayankhire. Zotsatira zake, mautumiki onse atatu ogwirizira tsopano akuthandizidwa pa Linux ndi MacOS, pomwe Consul KV yokha imathandizidwa pa Windows.
Kuyambira pachiyambi, tinkayesetsa kugwiritsa ntchito malaibulale okonzedwa kale kuti tipeze ntchito. Pankhani ya ZooKeeper, kusankha kudagwa ZooKeeper C++, zomwe pamapeto pake zidalephera kuphatikiza pa Windows. Izi, komabe, sizodabwitsa: laibulaleyi ili ngati linux-only. Kwa Consul njira yokhayo inali ppconsul. Thandizo linayenera kuwonjezeredwa kwa izo magawo и zochita. Kwa etcd, laibulale yathunthu yochirikiza mtundu waposachedwa wa protocol sinapezeke, kotero ife mophweka opangidwa grpc kasitomala.
Kutengera mawonekedwe a asynchronous laibulale ya ZooKeeper C ++, tidaganiza zokhazikitsanso mawonekedwe asynchronous. ZooKeeper C++ imagwiritsa ntchito zoyambira zamtsogolo / zolonjeza pa izi. Mu STL, mwatsoka, amagwiritsidwa ntchito modzichepetsa kwambiri. Mwachitsanzo, ayi ndiye njira, yomwe imagwiritsa ntchito ntchito yodutsa pazotsatira zamtsogolo ikadzapezeka. Kwa ife, njira yotereyi ndiyofunikira kuti mutembenuzire zotsatira kukhala mtundu wa laibulale yathu. Kuti tithane ndi vutoli, tidayenera kukhazikitsa dziwe lathu losavuta, chifukwa popempha kasitomala sitikanatha kugwiritsa ntchito malaibulale olemera a chipani chachitatu monga Boost.
Tidagwiritsa ntchito dziwe lomwelo kuti tiyankhe mafunso kwa etcd ndi Consul. Izi zikutanthauza kuti ma library omwe ali pansi amatha kupezeka ndi ulusi wosiyanasiyana. ppconsul siwotetezeka ulusi, chifukwa chake kuyimbirako kumatetezedwa ndi maloko.
Mutha kugwira ntchito ndi grpc kuchokera ku ulusi wambiri, koma pali zobisika. Mu etcd mawotchi amayendetsedwa kudzera pa mitsinje ya grpc. Awa ndi njira ziwiri zotumizira mauthenga amtundu wina. Laibulale imapanga ulusi umodzi wamawotchi onse ndi ulusi umodzi womwe umakonza mauthenga obwera. Chifukwa chake grpc imaletsa zolemba zofanana kuti ziziyenda. Izi zikutanthauza kuti poyambitsa kapena kuchotsa wotchi, muyenera kudikirira mpaka pempho lapitalo litamaliza kutumiza musanatumize ina. Timagwiritsa ntchito kulunzanitsa zosintha zokhazikika.