Liithuti tse hlano le tse tharo li ile tsa abela mabenkele a bohlokoa

Kapa kamoo re ngotseng laeborari ea C++ ea moreki bakeng sa ZooKeeper, etcd le Consul KV

Lefats'eng la litsamaiso tse ajoang, ho na le mesebetsi e mengata e tloaelehileng: ho boloka tlhahisoleseling mabapi le sebopeho sa sehlopha, ho laola tlhophiso ea li-node, ho bona li-node tse fosahetseng, ho khetha moetapele. le ba bang. Ho rarolla mathata ana, ho entsoe litsamaiso tse khethehileng tse ajoang - lits'ebeletso tsa khokahano. Hona joale re tla thahasella tse tharo tsa tsona: ZooKeeper, etcd le Consul. Har'a mesebetsi eohle e ruileng ea Consul, re tla tsepamisa maikutlo ho Consul KV.

Liithuti tse hlano le tse tharo li ile tsa abela mabenkele a bohlokoa

Ha e le hantle, litsamaiso tsena kaofela ha li na liphoso, li na le mabenkele a bohlokoa a bohlokoa. Le hoja mehlala ea bona ea data e na le phapang e khōlō, eo re tla e tšohla hamorao, e rarolla mathata a tšoanang a sebetsang. Ho totobetse hore kopo e 'ngoe le e' ngoe e sebelisang tšebeletso ea ho hokahanya e tlameletsoe ho e 'ngoe ea tsona, e ka lebisang tlhokahalong ea ho tšehetsa mekhoa e mengata setsing se le seng sa data se rarollang mathata a tšoanang bakeng sa likopo tse fapaneng.

Khopolo ea ho rarolla bothata bona e simolohile setsing sa boeletsi sa Australia, 'me se ile sa oela ho rona, sehlopha se senyenyane sa liithuti, ho se phethahatsa, e leng seo ke tla bua ka sona.

Re khonne ho theha laebrari e fanang ka sebopeho se tloaelehileng sa ho sebetsa le ZooKeeper, etcd le Consul KV. Laebrari e ngotsoe ka C ++, empa ho na le merero ea ho e fetisetsa lipuong tse ling.

Mehlala ea Lintlha

Ho theha sebopeho se tloaelehileng bakeng sa litsamaiso tse tharo tse fapaneng, o hloka ho utloisisa hore na li tšoana joang le hore na li fapana joang. Ha re e utloisise.

ZooKeeper

Liithuti tse hlano le tse tharo li ile tsa abela mabenkele a bohlokoa

Linotlolo li hlophisitsoe ka sefate 'me li bitsoa nodes. Ka hona, bakeng sa node u ka fumana lethathamo la bana ba eona. Ts'ebetso ea ho theha znode (etsa) le ho fetola boleng (setData) e arohane: ke linotlolo tse teng feela tse ka baloang le ho fetoloa. Lioache li ka hokelloa ts'ebetsong ea ho lekola boteng ba node, ho bala boleng le ho fumana bana. Ho shebella ke sesebelisoa sa nako e le 'ngoe se tukang ha mofuta oa data e lumellanang le seva e fetoha. Li-ephemeral nodes li sebelisetsoa ho lemoha ho hlōleha. Li tlameletsoe sebokeng sa mofani ea li entseng. Ha moreki a koala lenaneo kapa a emisa ho tsebisa ZooKeeper ka boteng ba eona, li-node tsena lia hlakoloa ka bo eona. Litšebelisano tse bonolo lia tšehetsoa - sete sa lits'ebetso tseo kaofela li atlehang kapa li hlolehang haeba sena se sa khonehe ho e 'ngoe ea tsona.

jj

Liithuti tse hlano le tse tharo li ile tsa abela mabenkele a bohlokoa

Baetsi ba tsamaiso ena ba ne ba bululetsoe ka ho hlaka ke ZooKeeper, kahoo ba etsa ntho e 'ngoe le e' ngoe ka tsela e fapaneng. Ha ho na sehlopha sa linotlolo, empa li theha sete e hlophisitsoeng ka mokhoa oa mantsoe. U ka fumana kapa ua hlakola linotlolo tsohle tsa mofuta o itseng. Sebopeho sena se ka bonahala se makatsa, empa ha e le hantle se hlalosa maikutlo haholo, 'me pono ea maemo a phahameng e ka etsisoa habonolo ka eona.

etcd ha e na ts'ebetso e tloaelehileng ea ho bapisa-le-sete, empa e na le ho hong ho betere: litšebelisano. Ehlile, li teng lits'ebetsong tsohle tse tharo, empa litšebelisano tsa etcd li ntle haholo. Li na le li-blocks tse tharo: hlahloba, katleho, ho hlōleha. Sebaka sa pele se na le sete sa maemo, sa bobeli le sa boraro - ts'ebetso. The transaction e etsoa atomically. Haeba maemo ohle e le 'nete, joale thibelo ea katleho e phethiloe, ho seng joalo thibelo ea ho hlōleha e etsoa. Ho API 3.3, li-block tsa katleho le ho hloleha li ka ba le litšebelisano tse behiloeng. Ka mantsoe a mang, hoa khoneha ho etsa lihahi tsa maemo tse batlang li sa tloaeleha. U ka ithuta haholoanyane ka hore na licheke le ts'ebetso li teng ho tsoa ho eng litokomane.

Lioache li teng le mona, leha li rarahane ho feta 'me li ka sebelisoa hape. Ka mantsoe a mang, ka mor'a ho kenya oache lethathamong la linotlolo, u tla fumana lintlafatso tsohle sebakeng sena ho fihlela u hlakola oache, eseng ea pele feela. Ho joalo-joalo, analog ea linako tsa bareki ba ZooKeeper ke likhiriso.

Moemeli oa K.V.

Hape ha ho na sebopeho se thata sa maemo a phahameng mona, empa Consul e ka etsa ponahalo ea hore e teng: o ka fumana le ho hlakola linotlolo tsohle ka sehlomathiso se boletsoeng, ke hore, sebetsa le "subtree" ea senotlolo. Lipotso tse joalo li bitsoa recursive. Ntle le moo, Consul e ka khetha linotlolo feela tse se nang sebopeho se boletsoeng kamora sehlomathiso, se tsamaellanang le ho fumana "bana" hanghang. Empa ke habohlokoa ho hopola hore sena ke hantle ponahalo ea sebopeho sa maemo a phahameng: ho ka khoneha ho etsa senotlolo haeba motsoali oa hae a le sieo kapa ho tlosa senotlolo se nang le bana, ha bana ba ntse ba tsoela pele ho bolokoa tsamaisong.

Liithuti tse hlano le tse tharo li ile tsa abela mabenkele a bohlokoa
Sebakeng sa lioache, Consul e thibela likopo tsa HTTP. Ha e le hantle, tsena ke mehala e tloaelehileng ho mokhoa oa ho bala data, oo, hammoho le litekanyo tse ling, phetolelo ea ho qetela e tsejoang ea data e bontšitsoeng. Haeba phetolelo ea morao-rao ea data e lumellanang le seva e kholo ho feta e boletsoeng, karabo e khutlisetsoa hang-hang, ho seng joalo - ha boleng bo fetoha. Ho boetse ho na le mananeo a ka hokeloang ho linotlolo ka nako efe kapa efe. Ho bohlokoa ho hlokomela hore ho fapana le joalo-joalo le ZooKeeper, moo ho hlakola linako ho lebisang ho hlakoloeng ha linotlolo tse amanang, ho na le mokhoa oo seboka se sa hokahaneng le bona. E fumaneha ditransekshene, ntle le makala, empa ka mefuta eohle ea licheke.

Ho kopanya kaofela

ZooKeeper e na le mofuta oa data o thata ka ho fetesisa. Lipotso tse hlakileng tse fumanehang ho etcd li ke ke tsa etsisoa hantle ho ZooKeeper kapa Consul. Ho leka ho kenyelletsa tse ntle ka ho fetisisa ho tsoa lits'ebeletso tsohle, re ile ra qetella re e-na le sebopeho se batlang se lekana le sebopeho sa ZooKeeper se nang le mekhelo e latelang ea bohlokoa:

  • tatelano, setshelo le TTL nodes ha e tshehetsoe
  • Li-ACL ha li tšehetsoe
  • mokhoa o behiloeng o theha senotlolo haeba se le sieo (ho ZK setData e khutlisa phoso tabeng ena)
  • mekhoa e behiloeng le ea cas e arohane (ka ZK ke ntho e tšoanang)
  • mokhoa oa ho hlakola o hlakola node hammoho le subtree ea eona (ho ZK hlakola e khutlisa phoso haeba node e na le bana)
  • Bakeng sa senotlolo ka seng ho na le mofuta o le mong feela - mofuta oa boleng (ho ZK ho teng tse tharo)

Ho hana li-node tse latellanang ho bakoa ke taba ea hore etcd le Consul ha ba na tšehetso e hahiloeng bakeng sa bona, 'me ba ka kenngoa ts'ebetsong habonolo ke mosebedisi holim'a sebopeho sa laebrari se hlahisoang.

Ho kenya ts'ebetsong boits'oaro bo ts'oanang le ZooKeeper ha u hlakola vertex ho tla hloka ho boloka k'haontareng e arohaneng ea bana bakeng sa senotlolo ka seng ho etcd le Consul. Kaha re lekile ho qoba ho boloka tlhahisoleseling ea meta, ho ile ha etsoa qeto ea ho hlakola subtree kaofela.

Lintlha tse poteletseng tsa ts'ebetsong

Ha re shebisiseng lintlha tse ling tsa ho kenya tšebetsong sebopeho sa laeborari mekhoeng e fapaneng.

Hierarchy in etcd

Ho boloka pono ea maemo ho etcd e bile o mong oa mesebetsi e khahlisang haholo. Lipotso tse fapaneng li etsa hore ho be bonolo ho fumana lethathamo la linotlolo tse nang le sehlongwapele se itseng. Ka mohlala, haeba u hloka ntho e 'ngoe le e' ngoe e qalang "/foo", o kopa sebaka ["/foo", "/fop"). Empa sena se ka khutlisa subtree eohle ea senotlolo, e kanna ea se amoheloe haeba subtree e le kholo. Qalong re ne re rerile ho sebelisa mokhoa oa bohlokoa oa ho fetolela, kenngwa tshebetsong ho zetcd. E kenyelletsa ho eketsa byte e le 'ngoe qalong ea senotlolo, ho lekana le botebo ba node sefateng. E-re ke u fe mohlala.

"/foo" -> "u01/foo"
"/foo/bar" -> "u02/foo/bar"

Ebe u fumana bana bohle ba hang-hang ba senotlolo "/foo" ho khoneha ka ho kopa marang-rang ["u02/foo/", "u02/foo0"). E, ho ASCII "0" e ema hang kamora "/".

Empa mokhoa oa ho kenya ts'ebetsong ho tlosoa ha vertex tabeng ee? Hoa fumaneha hore o hloka ho hlakola mefuta eohle ea mefuta ["uXX/foo/", "uXX/foo0") bakeng sa XX ho tloha 01 ho isa FF. Mme yaba re mathela ho kena moeli oa nomoro ea ts'ebetso ka har'a khoebo e le 'ngoe.

Ka lebaka leo, ho ile ha qaptjoa mokhoa o bonolo oa ho fetola senotlolo, o entseng hore ho khonehe ho kenya ts'ebetsong ka katleho ho tlosa senotlolo le ho fumana lethathamo la bana. Ho lekane ho eketsa sebopeho se khethehileng pele ho letšoao la ho qetela. Ka mohlala:

"/very" -> "/u00very"
"/very/long" -> "/very/u00long"
"/very/long/path" -> "/very/long/u00path"

Ebe o hlakola senotlolo "/very" e fetoha ho hlakolwa "/u00very" le mefuta ["/very/", "/very0"), le ho fumana bana bohle - ka kopo ea linotlolo ho tloha mofuteng ["/very/u00", "/very/u01").

Ho tlosa senotlolo ho ZooKeeper

Joalokaha ke se ke boletse, ho ZooKeeper u ke ke ua hlakola node haeba e na le bana. Re batla ho hlakola senotlolo hammoho le subtree. Ke etseng? Re etsa sena ka tšepo. Ntlha ea pele, re ntse re pota-pota subtree, re fumana bana ba vertex ka 'ngoe ka potso e arohaneng. Ebe re theha transaction e lekang ho hlakola li-node tsohle tsa subtree ka tatellano e nepahetseng. Ehlile, liphetoho li ka etsahala lipakeng tsa ho bala subtree le ho e hlakola. Tabeng ena, transaction e tla hlōleha. Ho feta moo, subtree e ka fetoha nakong ea ts'ebetso ea ho bala. Kopo bakeng sa bana ba node e latelang e ka khutlisa phoso haeba, ka mohlala, node ena e se e tlositsoe. Maemong ana ka bobeli, re pheta ts'ebetso eohle hape.

Mokhoa ona o etsa hore ho hlakola senotlolo ho se sebetse hantle haeba ho na le bana, le ho feta haeba ts'ebeliso e ntse e tsoela pele ho sebetsa le subtree, ho hlakola le ho theha linotlolo. Leha ho le joalo, sena se ile sa re lumella ho qoba ho thatafatsa ts'ebetsong ea mekhoa e meng ho etcd le Consul.

e behiloeng ho ZooKeeper

Ho ZooKeeper ho na le mekhoa e fapaneng e sebetsang le sebopeho sa sefate (etsa, hlakola, getChildren) le tse sebetsang ka data ho node (setData, getData) Ho feta moo, mekhoa eohle e na le maemo a thata a pele: theha e tla khutlisa phoso haeba node e se e ntse e le teng. e entsoe, hlakola kapa setData - haeba e se e le sieo. Re ne re hloka mokhoa o behiloeng o ka bitsoa ntle le ho nahana ka boteng ba senotlolo.

Khetho e 'ngoe ke ho nka mokhoa o nang le tšepo, joalo ka ha o hlakola. Sheba hore na node e teng. Haeba e le teng, letsetsa setData, ho seng joalo theha. Haeba mokhoa oa ho qetela o khutlisitse phoso, e phete hape. Ntho ea pele eo u lokelang ho e ela hloko ke hore tlhahlobo ea boteng ha e na thuso. O ka letsetsa theha hang hang. Ho phethoa ka katleho ho tla bolela hore node ha e eo 'me e entsoe. Ho seng joalo, theha e tla khutlisa phoso e nepahetseng, ka mor'a moo o hloka ho letsetsa setData. Ehlile, lipakeng tsa mehala, vertex e ka hlakoloa ke mohala o hlolisanoang, mme setData le eona e tla khutlisa phoso. Tabeng ena, u ka e etsa hape, empa na ke ea bohlokoa?

Haeba mekhoa ka bobeli e khutlisa phoso, joale re tseba hantle hore ho hlakoloa ho hlolisanoang ho etsahetse. Ha re nahane hore sena se hlakotsoe ka mor'a hore ho behoe mohala. Joale moelelo ofe kapa ofe oo re lekang ho o theha o se o hlakotsoe. Sena se bolela hore re ka nka hore sete e phethiloe ka katleho, le haeba ha e le hantle ho ne ho se letho le ngotsoeng.

Lintlha tse ling tsa tekheniki

Karolong ena re tla phomola ho tsoa lits'ebetsong tse ajoang ebe re bua ka likhoutu.
E 'ngoe ea litlhoko tsa mantlha tsa moreki e ne e le sethala sa marang-rang: bonyane e 'ngoe ea litšebeletso e tlameha ho tšehetsoa ho Linux, MacOS le Windows. Qalong, re ile ra ntšetsa pele Linux feela, 'me ra qala ho etsa liteko lits'ebetsong tse ling hamorao. Sena se ile sa baka mathata a mangata, ao ka nako e itseng a neng a sa hlaka hore na a atameloe joang. Ka lebaka leo, lits'ebeletso tsohle tse tharo tsa khokahano li se li tšehetsoa ho Linux le MacOS, athe Consul KV feela e tšehetsoa ho Windows.

Ho tloha qalong, re ile ra leka ho sebelisa lilaebrari tse seng li entsoe ho fumana litšebeletso. Tabeng ea ZooKeeper, khetho e ile ea oela ZooKeeper C++, eo qetellong e ileng ea hloleha ho bokella Windows. Leha ho le joalo, sena ha se makatse: laebrari e behiloe e le linux-feela. Bakeng sa Consul khetho feela e ne e le ppconsul. Tšehetso e ne e tlameha ho ekeletsoa ho eona linako и ditransekshene. Bakeng sa joalo-joalo, laeborari e felletseng e tšehetsang mofuta oa morao-rao oa protocol ha ea ka ea fumanoa, kahoo re bonolo moreki oa grpc o hlahisitsoeng.

E bululetsoe ke sebopeho sa asynchronous sa laeborari ea ZooKeeper C ++, re nkile qeto ea ho kenya tšebetsong sebopeho sa asynchronous. ZooKeeper C++ e sebelisa li-primitives tsa bokamoso / tsa ts'episo bakeng sa sena. Ho STL, ka bomalimabe, li kenngoa ts'ebetsong ka mokhoa o itekanetseng haholo. Ka mohlala, che ebe mokhoa, e sebelisang mosebetsi o fetisitsoeng ho sephetho sa bokamoso ha se fumaneha. Tabeng ea rona, mokhoa o joalo oa hlokahala ho fetolela sephetho ho sebopeho sa laeborari ea rona. Ho rarolla bothata bona, re ile ra tlameha ho kenya ts'ebetsong letamo la rona le bonolo, hobane ka kopo ea moreki re ne re ke ke ra sebelisa lilaebrari tse boima tsa mokha oa boraro tse kang Boost.

Joale ts'ebetsong ea rona e sebetsa tjena. Ha ho bitsoa, ​​​​tšepiso e eketsehileng / para e tlang e etsoa. Bokamoso bo bocha bo khutlisoa, 'me e fetisitsoeng e behiloe hammoho le ts'ebetso e ts'oanang le ts'episo e eketsehileng moleng. Khoele e tsoang letamong e khetha bokamoso ba 'maloa ho tsoa mokolokong ebe e ba khetha ka ho sebelisa wait_for. Ha sephetho se fumaneha, ts'ebetso e ts'oanang e bitsoa mme boleng ba eona ba ho khutla bo fetisetsoa tšepisong.

Re sebelisitse letamo le le leng ho botsa lipotso ho etcd le Consul. Sena se bolela hore lilaebrari tse ka tlase li ka fihlelleha ka likhoele tse ngata tse fapaneng. ppconsul ha e bolokehe ka khoele, kahoo mehala ho eona e sirelelitsoe ke linotlolo.
O ka sebetsa le grpc ho tsoa likhoeleng tse ngata, empa ho na le lintho tse poteletseng. Ho etcd lioache li kengoa tšebetsong ka melapo ea grpc. Tsena ke litsela tse peli tsa melaetsa ea mofuta o itseng. Laeborari e etsa khoele e le 'ngoe bakeng sa lioache tsohle le khoele e le 'ngoe e sebetsanang le melaetsa e kenang. Kahoo grpc e thibela ho ngoloa ha parallel ho phallela. Sena se bolela hore ha o qala kapa o hlakola oache, o tlameha ho ema ho fihlela kopo e fetileng e phethela ho e romella pele o romella e latelang. Re sebelisa bakeng sa ho amahanya mefuta e fapaneng ya maemo.

Phello

Iponele: libofkv.

Sehlopha sa rona: Raed Romanov, Ivan Glushenkov, Dmitry Kamaldinov, Victor Krapivensky, Vitaly Ivanin.

Source: www.habr.com

Eketsa ka tlhaloso