E toalima tamaiti aoga ma faleoloa e tolu na tufatufaina atu

Po'o le auala na matou tusia ai se faletusi C++ mo le ZooKeeper, etcd ma le Consul KV

I le lalolagi o faʻasalalauga faʻasalalau, o loʻo i ai le tele o galuega masani: teuina o faʻamatalaga e uiga i le tuʻufaʻatasia o le fuifui, pulea le faʻatulagaina o nodes, suʻesuʻeina pona sese, filifilia o se taʻitaʻi. ma isi. Ina ia foia nei faʻafitauli, ua faʻavaeina faʻasalalauga faʻapitoa - auaunaga faʻatasi. O lenei o le a tatou fiafia i le tolu o latou: ZooKeeper, etcd ma Consul. Mai le tele o galuega a le Konesula, o le a tatou taula'i ile Konesula KV.

E toalima tamaiti aoga ma faleoloa e tolu na tufatufaina atu

O le mea moni, o nei faiga uma e fa'apalepale masei, laina fa'atau-taua faleoloa. E ui lava o latou faʻataʻitaʻiga faʻamatalaga e iai ni eseesega taua, lea o le a tatou talanoaina mulimuli ane, latou te foia ia lava faʻafitauli faʻapitoa. E manino lava, o talosaga taʻitasi o loʻo faʻaogaina le auaunaga faʻamaopoopo o loʻo nonoa i se tasi oi latou, lea e ono taʻitaʻia ai le manaʻoga e lagolagoina le tele o faiga i totonu o le tasi nofoaga faʻamaumauga e foia ai faʻafitauli tutusa mo talosaga eseese.

O le manatu e foia lenei faafitauli na afua mai i se ofisa faufautua a Ausetalia, ma na pau mai ia i matou, o se vaega toaitiiti o tamaiti aoga, e faatino, o le mea lena o le a ou talanoa i ai.

Na mafai ona matou fatuina se faletusi e maua ai se faʻaoga masani mo le galulue faatasi ma ZooKeeper, etcd ma Consul KV. O le faletusi o loʻo tusia i le C ++, ae o loʻo i ai fuafuaga e tuʻuina atu i isi gagana.

Fa'ata'ita'iga Fa'amaumauga

Ina ia atiaʻe se fesoʻotaʻiga masani mo faiga eseese e tolu, e tatau ona e malamalama i mea latou te tutusa ai ma pe faʻafefea ona eseese. Sei o tatou mafaufau i ai.

Faleoloa o le ZooKeeper

E toalima tamaiti aoga ma faleoloa e tolu na tufatufaina atu

O ki ua faatulagaina i se laau ma e taua o nodes. E tusa ai, mo se node e mafai ona e mauaina se lisi o ana fanau. O gaioiga o le fatuina o se znode (fausia) ma le suia o se tau (setData) e tuʻueseese: naʻo ki o loʻo iai e mafai ona faitau ma suia. E mafai ona fa'apipi'i uati i fa'agaioiga o le siakiina o le i ai o se node, faitau se tau, ma le mauaina o tamaiti. Matamata e tasi le taimi e faʻaoso ai pe a suia le faʻamatalaga o faʻamatalaga tutusa i luga o le server. Ephemeral nodes e faʻaaogaina e iloa ai faʻaletonu. E noatia i latou i le sauniga a le kalani na faia i latou. A tapunia e le tagata o tausia se sauniga pe taofi le logoina o le ZooKeeper o lo'o i ai, e otometi lava ona tape nei pona. E lagolagoina fefaʻatauaiga faigofie - o se seti o gaioiga e manuia uma pe toilalo pe afai e le mafai mo se tasi o latou.

ma isi mea

E toalima tamaiti aoga ma faleoloa e tolu na tufatufaina atu

O le au atiaʻe o lenei faiga na manino le musuia e ZooKeeper, ma o lea na faia ai mea uma i se mea ese. E leai se fa'atonuga o ki, ae o lo'o fausia ai se seti fa'atonu fa'aupuga. E mafai ona e maua pe tape uma ki o lo'o iai i se vaega patino. O lenei fausaga e foliga mai e ese, ae o le mea moni e matua faʻaalia, ma o se vaaiga faʻapitoa e mafai ona faigofie ona faʻataʻitaʻiina.

etcd e leai se faʻatusatusaga-ma-set faʻatonuga, ae o loʻo i ai se mea e sili atu: fefaʻatauaiga. Ioe, latou te i ai i faiga uma e tolu, ae o fefaʻatauaiga etcd e sili ona lelei. E aofia ai poloka e tolu: siaki, manuia, toilalo. O le poloka muamua o loʻo i ai se seti o tulaga, o le lona lua ma le tolu - gaioiga. O le fefaʻatauaiga o loʻo faʻatinoina atomically. Afai e moni uma tulaga, ona faʻataunuʻuina lea o le poloka manuia, a leai e faʻataunuʻuina le poloka toilalo. I le API 3.3, o poloka manuia ma toilalo e mafai ona aofia ai fefaʻatauaiga. O lona uiga, e mafai ona fa'atino fa'atomu fau fa'atū'uga e toetoe lava a fa'asa'oloto tulaga fa'amoega. E mafai ona e a'oa'o atili e uiga i siaki ma fa'agaioiga e maua mai fa'amaumauga.

O lo'o iai fo'i uati iinei, e ui lava e fai si lavelave ma e mafai ona toe fa'aaogaina. O lona uiga, a maeʻa ona faʻapipiʻi se uati i luga o se laina autu, o le ae mauaina uma faʻafouga i lenei laina seʻia e faʻamalo le uati, ae le naʻo le muamua. I etcd, o le tutusa o sauniga a tagata o tausia ZooKeeper o lisi.

O le Konesula K.V.

E leai fo'i se fa'atonuga fa'apitoa iinei, ae e mafai e le Konesula ona fa'aalia foliga o lo'o i ai: e mafai ona e maua ma tape uma ki fa'atasi ai ma le prefix fa'amaonia, o lona uiga, galue ma le "subtree" o le ki. O ia fesili e ta'ua o le recursive. E le gata i lea, e mafai e le Konesula ona filifili naʻo ki e le o iai le uiga faʻamaonia pe a uma le prefix, lea e fetaui ma le mauaina vave o "tamaiti". Ae e taua le manatuaina o le foliga tonu lea o se faʻatulagaga faʻapitoa: e mafai lava ona faia se ki pe afai e le o iai lona matua pe tape se ki e iai fanau, ae o tamaiti o le a faʻaauau ona teuina i totonu o le polokalama.

E toalima tamaiti aoga ma faleoloa e tolu na tufatufaina atu
Nai lo o matamata, ua poloka e le Konesula talosaga HTTP. O le mea moni, o ni vala'au masani ia i le auala e faitau ai fa'amaumauga, lea, fa'atasi ai ma isi fa'amaufa'ailoga, o lo'o fa'aalia ai le fa'amatalaga mulimuli o fa'amaumauga. Afai o le faʻamatalaga o loʻo i ai nei o faʻamatalaga tutusa i luga o le 'auʻaunaga e sili atu nai lo le faʻamaonia, o le tali e toe faʻafoʻi vave, a leai - pe a suia le tau. E iai fo'i sauniga e mafai ona fa'apipi'i i ki i so'o se taimi. E taua le maitauina e le pei o etcd ma ZooKeeper, lea o le tapeina o sauniga e oʻo atu ai i le tapeina o ki e fesoʻotaʻi, o loʻo i ai se faiga e faʻamavae ai le sauniga mai ia i latou. Avanoa fefa'ataua'iga, e leai ni lala, ae i ituaiga uma o siaki.

Tuu faatasi uma

O le ZooKeeper o loʻo i ai le faʻataʻitaʻiga faʻamatalaga sili ona faigata. O fesili fa'aalia o lo'o maua ile etcd e le mafai ona fa'ata'ita'i lelei ile ZooKeeper po'o le Konesula. I le taumafai e faʻapipiʻi le mea sili mai auaunaga uma, na matou faʻamutaina i se atinaʻe toetoe lava tutusa ma le ZooKeeper interface faʻatasi ai ma tuusaunoaga taua nei:

  • fa'asologa, pusa ma TTL nodes le lagolagoina
  • ACLs e le lagolagoina
  • o le seti metotia e fatuina ai se ki pe a le o iai (i le ZK setData toe faʻafoʻi se mea sese i lenei tulaga)
  • seti ma cas auala e vavaeese (i le ZK e tutusa lava le mea)
  • o le auala tape e tapeina ai se node ma lona la'au la'au (i le ZK delete e toe fa'afo'i mai ai se mea sese pe afai o le node e iai ni tamaiti)
  • Mo ki ta'itasi e na'o le tasi le fa'aliliuga - o le tau fa'atatau (i le ZK e toatolu i latou)

O le teenaina o nodes faasolosolo e mafua ona o le etcd ma le Konesula e leai se lagolago faufale mo i latou, ma e mafai ona faigofie ona faʻatinoina e le tagata faʻaoga i luga o le atinaʻeina o faletusi.

O le fa'atinoina o le amio e pei o le ZooKeeper pe a tapeina se pito e mana'omia ai le tausia o se fa'ailoga a tamaiti mo ki ta'itasi i etcd ma le Konesula. Talu ai na matou taumafai e aloese mai le teuina o faʻamatalaga meta, na tonu ai e tape le subtree atoa.

Fa'amatalaga fa'atino

Se'i o tatou va'ava'ai toto'a i nisi o vaega o le fa'atinoina o le fa'aoga o le faletusi i faiga eseese.

Fa'atonu i etcd

O le fa'atumauina o se va'aiga fa'apitoa ile etcd na avea ma se tasi o galuega sili ona manaia. Ole fa'afesili ole va'aiga e fa'afaigofie ai ona toe aumai se lisi o ki fa'atasi ai ma se prefix fa'apitoa. Mo se faʻataʻitaʻiga, afai e te manaʻomia mea uma e amata i "/foo", o lo'o e fesili mai mo se vaega ["/foo", "/fop"). Ae o lenei mea o le a toe faʻafoʻi ai le laʻau atoa o le ki, atonu e le taliaina pe a lapopoa le laʻau. I le taimi muamua na matou fuafua e faʻaaogaina se faʻaliliuga autu, faʻatinoina i le zetcd. E aofia ai le faʻaopoopoina o le tasi paita i le amataga o le ki, e tutusa ma le loloto o le node i totonu o le laʻau. Sei ou tuuina atu se faataitaiga.

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

Ona aumai uma lea o tamaiti vave o le ki "/foo" mafai e ala i le talosagaina o se vaega ["u02/foo/", "u02/foo0"). Ioe, i le ASCII "0" tu tonu mulimuli ane "/".

Ae faʻafefea ona faʻatinoina le aveeseina o se vertex i lenei tulaga? E aliali mai e tatau ona e tape uma laina o le ituaiga ["uXX/foo/", "uXX/foo0") mo XX mai le 01 i le FF. Ona matou taufetuli ai lea i totonu tapulaa numera o galuega i totonu o le fefa'atauaiga e tasi.

O le iʻuga, na faia ai se faiga faʻaliliu faigofie faigofie, lea na mafai ai ona faʻatino lelei uma le tapeina o se ki ma le mauaina o se lisi o tamaiti. Ua lava le faʻaopoopoina o se uiga faʻapitoa i luma o le faʻailoga mulimuli. Faataitaiga:

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

Ona tape lea o le ki "/very" liliu atu i le tapeina "/u00very" ma le lautele ["/very/", "/very0"), ma maua tamaiti uma - i se talosaga mo ki mai le lautele ["/very/u00", "/very/u01").

Aveese se ki ile ZooKeeper

E pei ona uma ona ou taʻua, i ZooKeeper e le mafai ona e tapeina se node pe a iai sana fanau. Matou te mananaʻo e tape le ki faʻatasi ma le subtree. O le a se mea oute faia? Matou te faia lenei mea ma le fa'amoemoe. Muamua, matou te fealua'i solo le la'au la'au, ma maua mai ai tamaiti o pito ta'itasi ma se fesili e ese mai ai. Ona matou fausia lea o se fefaʻatauaiga e taumafai e tape uma nodes o le subtree i le faasologa saʻo. Ioe, e mafai ona tupu suiga i le va o le faitauina o se la'au laiti ma le tapeina. I lenei tulaga, o le a le manuia le fefaʻatauaiga. E le gata i lea, e mafai ona suia le la'au laiti i le faagasologa o le faitau. O se talosaga mo tamaiti o le isi node e mafai ona toe faʻafoʻi se mea sese pe afai, mo se faʻataʻitaʻiga, ua uma ona tape lenei node. I tulaga uma e lua, matou te toe faia le faagasologa atoa.

O lenei faiga e matua le aoga ai le tapeina o se ki pe afai e iai sana fanau, ma e sili atu pe a faʻaauau pea ona galue le talosaga ma le subtree, tape ma fatuina ki. Ae ui i lea, o lenei mea na mafai ai ona matou aloese mai le faʻalavelaveina o le faʻatinoga o isi metotia i etcd ma Consul.

seti i ZooKeeper

I le ZooKeeper o loʻo i ai auala eseese e galue i le fausaga o laʻau (faia, tape, mauaChildren) ma e galue i faʻamaumauga i nodes (setData, getData E le gata i lea, o metotia uma e iai ni faʻatonuga faʻapitoa: o le a toe faʻafoʻi se mea sese pe a uma le node). na faia, tape pe setData - pe a le o iai. Matou te manaʻomia se seti metotia e mafai ona valaʻau e aunoa ma le mafaufau i le i ai o se ki.

O le tasi filifiliga o le faia lea o se auala mautinoa, e pei o le tapeina. Siaki pe iai se node. Afai e iai, vala'au setData, a leai, fai. Afai o le auala mulimuli na toe foʻi mai ai se mea sese, toe fai uma. O le mea muamua e tatau ona maitauina o le suʻega o le ola e leai se aoga. E mafai ona e vala'au fa'atupu. O le fa'amae'aina manuia o lona uiga e le'i iai le node ma na faia. A leai, fatuina o le a toe faʻafoʻi le mea sese talafeagai, a maeʻa ona e manaʻomia le valaʻau setData. Ioe, i le va o telefoni, e mafai ona tapeina se vertex e se valaau tauva, ma setData o le a toe faafoi mai foi se mea sese. I lenei tulaga, e mafai ona e toe faia uma, ae e aoga?

Afai o auala uma e lua e toe faʻafoʻi mai ai se mea sese, ona matou iloa lea ma le mautinoa na tupu se tauvaga faʻamalo. Se'i fa'apea o le tapeina lea na tupu ina ua uma le vala'au seti. Ia o le a lava le uiga o loʻo tatou taumafai e faʻavae ua uma ona tape. O lona uiga e mafai ona tatou manatu o lena seti na faʻataunuʻuina ma le manuia, e tusa lava pe leai se mea na tusia.

Fa'amatalaga fa'apitoa fa'apitoa

I lenei vaega o le a tatou malolo mai faiga tufatufaina ma talanoa e uiga i coding.
O se tasi o manaʻoga autu o le tagata faʻatau o le cross-platform: a itiiti ifo ma le tasi o auaunaga e tatau ona lagolagoina i Linux, MacOS ma Windows. I le taimi muamua, na matou atiina ae mo Linux, ma amata suʻega i isi faiga mulimuli ane. O lenei mea na mafua ai le tele o faʻafitauli, lea mo sina taimi na matua le manino pe faʻafefea ona faʻalatalata. O le i'uga, o auaunaga fa'amaopoopo uma e tolu o lo'o lagolagoina nei i Linux ma MacOS, ae na'o le Consul KV o lo'o lagolagoina ile Windows.

Mai lava i le amataga, sa matou taumafai e faʻaoga faletusi ua saunia e maua ai auaunaga. I le tulaga o ZooKeeper, na pa'ū le filifiliga ZooKeeper C++, lea na iu lava ina le mafai ona tuufaatasia i luga o Windows. Ae ui i lea, e le o se mea e ofo ai: o le faletusi o loʻo faʻatulagaina o linux-naʻo. Mo Konesula na pau lava le filifiliga ppkonesula. Sa tatau ona faaopoopo i ai le lagolago sauniga и fefa'ataua'iga. Mo etcd, e leʻi maua se faletusi atoa e lagolagoina le lomiga lata mai o le protocol, o lea na matou faigofie fa'atupuina grpc client.

Fa'aosoina e le fa'aoga asynchronous o le ZooKeeper C ++ faletusi, na matou filifili ai e fa'atino fo'i se atina'e asynchronous. ZooKeeper C ++ faʻaaoga muamua / folafolaga muamua mo lenei mea. I le STL, o le mea e leaga ai, o loʻo faʻatinoina ma le tauagafau. Mo se faataitaiga, leai ona sosoo ai lea ma le auala, lea e fa'aogaina le galuega ua pasia i le taunuuga o le lumana'i pe a avanoa. I la matou tulaga, o sea auala e manaʻomia e faʻaliliu ai le taunuuga i le faatulagaga o la matou faletusi. Ina ia foia lenei faʻafitauli, e tatau ona matou faʻatinoina a matou lava filo filo faigofie, talu ai i le talosaga a le tagata faʻatau e le mafai ona matou faʻaogaina faletusi mamafa lona tolu e pei o le Boost.

O le tatou faatinoga la e galue faapenei. A vala'au, e fa'atupuina se isi folafolaga/fa'alua i le lumana'i. O le lumanaʻi fou e toe faʻafoʻi mai, ma o le ua pasia e tuʻuina faʻatasi ma le galuega faʻatatau ma se folafolaga faaopoopo i le laina. O se filo mai le vaita'ele e filifilia ni lumana'i mai le laina ma palota i latou e fa'aaoga ai le wait_for. A maua se fa'ai'uga, e vala'au le galuega fa'atatau ma o lona tau fa'afo'i e pasi atu i le folafolaga.

Sa matou fa'aogaina le filo filo e fa'atino ai fesili i etcd ma Consul. O lona uiga e mafai ona fa'aogaina faletusi autu i filo eseese. ppconsul e le saogalemu filo, o lea o valaau i ai e puipuia e loka.
E mafai ona e galue ma grpc mai le tele o filo, ae o loʻo i ai faʻamatalaga. I etcd uati e fa'atinoina e ala i vaitafe grpc. O auala ia e lua mo fe'au o se ituaiga. E faia e le faletusi se filo e tasi mo uati uma ma se filo e tasi e faʻagasolo ai feʻau o loʻo oʻo mai. O le mea lea e fa'asa ai e le grpc tusitusiga tutusa e tafe. O lona uiga pe a amata pe tape se uati, e tatau ona e faʻatali seia maeʻa le talosaga muamua ae leʻi tuʻuina atu le isi. Matou te faʻaaogaina mo le faʻatasi fesuiaiga o tuutuuga.

Le iʻuga

Va'ai mo oe lava: liboffkv.

O la matou 'au: Raed Romanov, Ivan Glushenkov, Dmitry Kamaldinov, Victor Krapivensky, Vitaly Ivanin.

puna: www.habr.com

Faaopoopo i ai se faamatalaga