HighLoad++, Mikhail Tyulenev (MongoDB): Ho lumellana ha sesosa: ho tloha khopolong ho ea ho itloaetsa

Seboka se latelang sa HighLoad++ se tla tšoaroa ka April 6 le 7, 2020 St. Petersburg.
Lintlha le litekete link tsa. HighLoad ++ Siberia 2019. Holo "Krasnoyarsk". La 25 Phuptjane, 12:00. Tsena le tlhahiso.

HighLoad++, Mikhail Tyulenev (MongoDB): Ho lumellana ha sesosa: ho tloha khopolong ho ea ho itloaetsa

Hoa etsahala hore litlhoko tse sebetsang li hanyetsane le khopolo, moo likarolo tsa bohlokoa bakeng sa sehlahisoa sa khoebo li sa hlokomeloe. Puo ena e fana ka mokhoa oa ho khetha le ho kopanya mekhoa e fapaneng ea ho theha likarolo tsa Causal consistency ho latela lipatlisiso tsa thuto tse thehiloeng ho litlhoko tsa sehlahisoa sa khoebo. Bamameli ba tla ithuta ka mekhoa e teng ea theory bakeng sa lioache tse utloahalang, ho latela melao-motheo, ts'ireletso ea tsamaiso, ho hokahanya ha nako, le hore na ke hobane'ng ha MongoDB e ile ea rarolla mathata a itseng.

Mikhail Tyulenev (eo hamorao a tla bitsoa MT): - Ke tla bua ka Causal consistency - ena ke karolo eo re sebelitseng ho eona ho MongoDB. Ke sebetsa sehlopheng sa litsamaiso tse ajoang, re e entse hoo e ka bang lilemo tse peli tse fetileng.

HighLoad++, Mikhail Tyulenev (MongoDB): Ho lumellana ha sesosa: ho tloha khopolong ho ea ho itloaetsa

Ha ke ntse ke etsa joalo, ke ile ka tlameha ho itloaetsa lipatlisiso tse ngata tsa thuto, hobane karolo ena e ithutile hantle. Ho ile ha fumaneha hore ha ho sehlooho se le seng se lumellanang le se hlokahalang polokelong ea lihlahisoa ka lebaka la litlhoko tse khethehileng haholo tseo mohlomong li leng teng ts'ebetsong leha e le efe ea tlhahiso.

Ke tla bua ka hore na rona, joaloka bareki ba Lipatlisiso tsa thuto, re lokisa ntho e tsoang ho eona eo re ka e hlahisang ho basebelisi ba rona e le sejana se lokiselitsoeng se loketseng le se sireletsehileng ho se sebelisa.

Ho tsitsa hoa sesosa. Ha re hlalose maikutlo

Ho qala, ke batla ho bua ka kakaretso hore na Causal consistency ke eng. Ho na le libapali tse peli - Leonard le Penny (letoto la TV "The Big Bang Theory"):

HighLoad++, Mikhail Tyulenev (MongoDB): Ho lumellana ha sesosa: ho tloha khopolong ho ea ho itloaetsa

Ha re re Penny o Europe 'me Leonard o batla ho mo etsetsa mokete oa tšohanyetso. Ebile ha ho letho le molemo leo a le nahanang ho feta ho mo lahla lethathamong la metsoalle ea hae, a romella metsoalle eohle ea hae tsebiso mabapi le phepelo: "Ha re thabise Penny!" (o Europe, ha a ntse a robetse, ha a bone sena sohle ebile ha a bone, hobane ha a eo). Qetellong, o hlakola poso ena, o e hlakola ho Feed mme o khutlisetsa phihlello e le hore a se ke a hlokomela letho mme ha ho na mahlabisa-lihlong.
Sena se hantle ebile se setle, empa ha re nke hore sistimi e ajoa mme lintho li tsamaile hampe. Ka mohlala, ho ka etsahala hore thibelo ea Penny ea ho fihlella e hlahe ka mor'a hore poso ena e hlahe, haeba liketsahalo li sa amane le sesosa le phello. Ha e le hantle, ona ke mohlala oa ha Causal consistency e hlokahala e le ho etsa mosebetsi oa khoebo (tabeng ena).

Ebile, tsena ke thepa e sa reng letho ea database - ke batho ba fokolang haholo ba e tšehetsang. Ha re feteleng ho mehlala.

Mehlala ea ho lumellana

Hantle-ntle mohlala oa consistency ho database ke eng? Tsena ke tse ling tsa litiiso tseo sistimi e ajoang e fanang ka tsona mabapi le hore na moreki a ka fumana data efe le hore na ke tatellano efe.

Ha e le hantle, mefuta eohle e tsitsitseng e theoha ka tsela e ts'oanang le tsamaiso e tsamaisoang, mohlala, ka node e le 'ngoe ho laptop. 'Me ke mokhoa o ts'oanang le sistimi e tsamaeang ho "Nodes" e ajoang ke li-geo tse likete ho laptop, moo thepa ena kaofela e etsoang ka mokhoa o ikemetseng.

Ka hona, mekhoa e tsitsitseng e sebelisoa feela ho litsamaiso tse ajoang. Litsamaiso tsohle tse neng li le teng pele 'me li sebetsa ka mokhoa o tšoanang oa ho otloloha ha lia ka tsa ba le mathata a joalo. Ho ne ho e-na le Cache e le 'ngoe ea Buffer, 'me ntho e' ngoe le e 'ngoe e ne e baloa ho eona kamehla.

Mohlala o Matla

Haele hantle, mohlala oa pele ke Strong (kapa mohala oa ho phahama, joalo ka ha o bitsoa hangata). Ena ke mohlala o tsitsitseng o tiisang hore phetoho e 'ngoe le e' ngoe, hang ha e tiisitsoe hore e etsahetse, e bonahala ho basebelisi bohle ba tsamaiso.

Sena se theha tatellano ea lefats'e ea liketsahalo tsohle polokelong ea litaba. Ena ke thepa e matla haholo ea ho tsitsa, 'me ka kakaretso e theko e boima haholo. Leha ho le joalo, e tšehetsoa hantle haholo. E turu haholo ebile e ea lieha - e sebelisoa ka seoelo. Sena se bitsoa bokhoni ba ho phahama.

Ho na le thepa e 'ngoe e matla e tšehetsoeng ho Spanner - e bitsoang External Consistency. Re tla bua ka eona nakoana hamorao.

Sesosa

E latelang ke Causal, e leng sona seo ke neng ke bua ka sona hantle. Ho na le tse ling tse 'maloa tse tlase lipakeng tsa Strong le Causal tseo nke keng ka bua ka tsona, empa kaofela li theohela ho Causal. Ena ke mohlala oa bohlokoa hobane ke mehlala e matla ka ho fetisisa, e matla ka ho fetisisa ka ho ba teng ha marang-rang kapa likaroloana.

Lisosa ha e le hantle ke boemo boo liketsahalo li amanang le kamano ea sesosa le phello. Hangata li nkuoa e le Bala litokelo tsa hau ho latela pono ea moreki. Haeba moreki a hlokometse litekanyetso tse itseng, a ke ke a bona litekanyetso tse neng li le nakong e fetileng. O se a qala ho bona li-prefix. Tsohle di theohela nthong e le nngwe.
Lisosa e le mohlala o tsitsitseng ke tatellano e sa fellang ea liketsahalo ho seva, moo liketsahalo tse tsoang ho bareki bohle li hlokomeloa ka tatellano e tšoanang. Tabeng ena, Leonard le Penny.

Qetellong

Mohlala oa boraro ke Eventual Consistency. Sena ke sona seo litsamaiso tsohle tse ajoang li se tšehetsang, mohlala o fokolang o utloahalang ho hang. E bolela tse latelang: ha re e-na le liphetoho tse ling ho data, ka nako e 'ngoe li fetoha tse tsitsitseng.

Ka nako e joalo ha a bue letho, ho seng joalo o ne a tla fetoha Tumellano ea Kantle - e ka ba pale e fapaneng ka ho feletseng. Leha ho le joalo, ona ke mohlala o tsebahalang haholo, o atileng haholo. Ka ho sa feleng, basebelisi bohle ba litsamaiso tse phatlalalitsoeng ba sebelisa Eventual Consistency.

Ke batla ho fana ka mehlala e meng ea papiso:

HighLoad++, Mikhail Tyulenev (MongoDB): Ho lumellana ha sesosa: ho tloha khopolong ho ea ho itloaetsa

Metsu ee e bolela’ng?

  • Ho lieha ho fihla. Ha matla a tsitsitseng a ntse a eketseha, e ba kholoanyane ka mabaka a totobetseng: o hloka ho etsa litlaleho tse ngata, ho fumana tiiso ho tsoa ho mabotho ohle le li-node tse kenyang letsoho sehlopheng sa hore data e se e ntse e le teng. Ka hona, Eventual Consistency e na le karabo e potlakileng, hobane moo, joalo ka molao, u ka e beha mohopolong 'me sena, ha e le hantle, se tla lekana.
  • Ho fumaneha. Haeba re utloisisa sena e le bokhoni ba tsamaiso ea ho arabela boteng ba marang-rang a marang-rang, likaroloana, kapa mofuta o itseng oa ho hlōleha, mamello ea phoso e eketseha ha mohlala o tsitsitseng o fokotseha, kaha ho lekane ho rona hore moeti a le mong o phela le ka nako e le 'ngoe. nako e hlahisa data e itseng. Eventual Consistency ha e tiise letho ka data ho hang - e ka ba eng kapa eng.
  • Litlhaloso. Ka nako e ts'oanang, ha e le hantle, palo ea li-anomalies e eketseha. Ho Consistency e Matla hoo e ka bang ha ea lokela ho ba teng ho hang, empa ho Fintual Consistency e ka ba eng kapa eng. Ho hlaha potso: ke hobane'ng ha batho ba khetha Eventual Consistency haeba e na le anomalies? Karabo ke hore mehlala ea Eventual Consistency ea sebetsa 'me li-anomalies li teng, mohlala, ka nako e khutšoanyane; hoa khoneha ho sebelisa wizate ho bala le ho feta kapa ka tlase ho bala data e tsitsitseng; Hangata hoa khoneha ho sebelisa mehlala e matla ea ho lumellana. Ha e le hantle sena se sebetsa, 'me hangata palo ea li-anomalies e lekanyelitsoe ka nako.

Theorem ea CAP

Ha u bona mantsoe a tsitsitseng, ho fumaneha - ke eng e tlang kelellong ea hau? Ho joalo - CAP theorem! Hona joale ke batla ho leleka tšōmo ... Hase 'na - ke Martin Kleppmann, ea ngotseng sehlooho se babatsehang, buka e babatsehang.

HighLoad++, Mikhail Tyulenev (MongoDB): Ho lumellana ha sesosa: ho tloha khopolong ho ea ho itloaetsa

Theorem ea CAP ke molao-motheo o hlophisitsoeng lilemong tsa bo-2000 oa hore Consistency, Availability, Partitions: nka tse peli, 'me u ke ke ua khetha tse tharo. E ne e le molao-motheo o itseng. E ile ea pakoa e le theorem lilemo tse 'maloa hamorao ke Gilbert le Lynch. Joale sena se ile sa qala ho sebelisoa e le mantra - litsamaiso li ile tsa qala ho aroloa ka CA, CP, AP joalo-joalo.

Theorem ena e hlile e pakoa bakeng sa linyeoe tse latelang ... Taba ea pele, Ho fumaneha ho ne ho nkoa e se boleng bo tsoelang pele ho tloha ho zero ho ea ho makholo (0 - tsamaiso "e shoele", 100 - e arabela kapele; re tloaetse ho e nka ka tsela eo) , empa e le thepa ea algorithm, e tiisang hore bakeng sa liketso tsohle tsa eona e khutlisa data.

Ha ho letho le buang ka nako ea karabo ho hang! Ho na le algorithm e khutlisetsang data kamora lilemo tse 100 - e leng algorithm e fumanehang e ntle haholo, e leng karolo ea theorem ea CAP.
Ea bobeli: theorem e ile ea pakoa bakeng sa liphetoho tsa boleng ba senotlolo se le seng, ho sa tsotellehe hore liphetoho tsena li ka tsosolosoa. Sena se bolela hore ha e le hantle ha e sebelisoe, hobane mehlala e fapane Qetellong ea ho Fetolana, Matla a Matla (mohlomong).

Tsena tsohle ke tsa eng? Ho feta moo, theorem ea CAP hantle ka mokhoa oo e netefalitsoeng ka eona ha e sebetse ebile ha e sebelisoe hangata. Ka mokhoa oa theory, ka tsela e itseng e fokotsa ntho e 'ngoe le e' ngoe. E hlahisa molao-motheo o itseng o nepahetseng ka intuitively, empa ka kakaretso ha o so pakoe.

Ho lumellana ha sesosa ke mohlala o matla ka ho fetisisa

Ho etsahalang hona joale ke hore u ka fumana lintho tsohle tse tharo: Ho lumellana, ho fumaneha ho sebelisa Likarolo. Haholo-holo, Causal consistency ke mohlala o matla ka ho fetisisa oa ho lumellana, o ntseng o sebetsa ka pel'a Likarolo (ho senya marang-rang). Ke ka lebaka leo e khahlang haholo, ke ka lebaka leo re ileng ra e nka.

HighLoad++, Mikhail Tyulenev (MongoDB): Ho lumellana ha sesosa: ho tloha khopolong ho ea ho itloaetsa

Taba ea pele, e nolofatsa mosebetsi oa baetsi ba lisebelisoa. Haholo-holo, boteng ba tšehetso e kholo e tsoang ho seva: ha litlaleho tsohle tse hlahang ka hare ho mofani a le mong li tiisetsoa hore li tla fihla ka tatellano e tšoanang ho mofani e mong. Ea bobeli, e mamella li-partitions.

Kitchen ea ka hare ea MongoDB

Ha re hopola hore ke lijo tsa motšehare, re fallela kichineng. Ke tla u bolella ka mokhoa oa tsamaiso, e leng, hore na MongoDB ke eng bakeng sa ba utloang ka database e joalo ka lekhetlo la pele.

HighLoad++, Mikhail Tyulenev (MongoDB): Ho lumellana ha sesosa: ho tloha khopolong ho ea ho itloaetsa

HighLoad++, Mikhail Tyulenev (MongoDB): Ho lumellana ha sesosa: ho tloha khopolong ho ea ho itloaetsa

MongoDB (eo ka mor'a moo e bitsoang "MongoDB") ke sistimi e ajoang e tšehetsang sekhahla se otlolohileng, ke hore, sharding; 'me ka har'a shard e' ngoe le e 'ngoe e boetse e tšehetsa ho fokotseha ha data, ke hore, ho pheta-pheta.

Sharding ho MongoDB (eseng database ea kamano) e etsa ho leka-lekanya ka mokhoa o itekanetseng, ke hore, pokello e 'ngoe le e' ngoe ea litokomane (kapa "tafole" ho ea ka lintlha tse amanang le kamano) e arotsoe ka likotoana, 'me seva se tsamaisa ka boomo pakeng tsa shards.

Query Router, e fanang ka likopo, bakeng sa moreki ke moreki e mong eo e sebetsang ka eona. E se e ntse e tseba hore na data e hokae le hore na e hokae 'me e lebisa likōpo tsohle ho shard e nepahetseng.

Ntlha e 'ngoe ea bohlokoa: MongoDB ke monghali a le mong. Ho na le Primary e le 'ngoe - e ka nka litlaleho tse tšehetsang linotlolo tseo e nang le tsona. U ke ke ua etsa Multi-master write.

Re entse tokollo 4.2 - lintho tse ncha tse khahlisang li hlahile moo. Haholo-holo, ba kentse Lucene - search - e leng java e sebetsang ka kotloloho ho Mongo, 'me moo ho ile ha khoneha ho etsa lipatlisiso ka Lucene, joalo ka Elastica.

Mme ba etsa sehlahiswa se setjha - Dichate, se fumaneha hape ho Atlas (Leru la Mongo ka boyena). Ba na le Free Tier - o ka bapala le eona. Ke ratile Lichate haholo - pono ea data, e hlakileng haholo.

Metsoako Ho tsitsana ha sesosa

Ke balile lihlooho tse ka bang 230 tse hatisitsoeng sehloohong sena - ho tsoa ho Leslie Lampert. Joale ho tsoa mohopolong oa ka ke tla u fetisetsa likarolo tse ling tsa thepa ena.

HighLoad++, Mikhail Tyulenev (MongoDB): Ho lumellana ha sesosa: ho tloha khopolong ho ea ho itloaetsa

Tsohle li qalile ka sengoloa sa Leslie Lampert, se ngotsoeng ka bo-1970. Joalokaha u ka bona, lipatlisiso tse ling mabapi le taba ena li ntse li tsoela pele. Hona joale Causal consistency e na le thahasello mabapi le nts'etsopele ea litsamaiso tse ajoang.

Lithibelo

Ho na le lithibelo life? Ha e le hantle ena ke e 'ngoe ea lintlha tse ka sehloohong, hobane lithibelo tseo tsamaiso ea tlhahiso e li behang li fapane haholo le lithibelo tse teng lihloohong tsa thuto. Hangata ke tsa maiketsetso.

HighLoad++, Mikhail Tyulenev (MongoDB): Ho lumellana ha sesosa: ho tloha khopolong ho ea ho itloaetsa

  • Taba ea pele, "MongoDB" ke setsebi se le seng, joalo ka ha ke se ke boletse (sena se nolofatsa haholo).
  • Re lumela hore tsamaiso e lokela ho tšehetsa li-shards tse ka bang likete tse 10. Re ke ke ra etsa liqeto leha e le life tsa meralo tse tla fokotsa boleng bona ka ho hlaka.
  • Re na le leru, empa re nka hore motho o ntse a lokela ho ba le monyetla ha a khoasolla binary, a e tsamaisa ho laptop ea hae, 'me ntho e' ngoe le e 'ngoe e sebetsa hantle.
  • Re nka ntho eo Lipatlisiso li sa e nahaneng hangata: bareki ba kantle ba ka etsa eng kapa eng eo ba e batlang. MongoDB ke mohloli o bulehileng. Ka hona, bareki ba ka ba bohlale le ho halefa - ba ka batla ho senya ntho e 'ngoe le e' ngoe. Re hakanya hore Byzantine Feilors e kanna ea qala.
  • Bakeng sa bareki ba ka ntle ba ka ntle ho moeli, ho na le moeli oa bohlokoa: haeba tšobotsi ena e holofetse, joale ha ho na ho senyeha ha ts'ebetso ho lokelang ho hlokomeloa.
  • Ntlha e 'ngoe ka kakaretso e khahlanong le thuto: ho lumellana ha liphetolelo tse fetileng le tse tlang. Bakhanni ba khale ba tlameha ho ts'ehetsa liapdeite tse ncha, 'me database e tlameha ho ts'ehetsa bakhanni ba khale.

Ka kakaretso, sena sohle se beha lithibelo.

Likarolo tsa ho lumellana ha sesosa

Joale ke tla bua ka tse ling tsa likarolo. Haeba re nahana ka Causal consistency ka kakaretso, re ka khetha li-blocks. Re khethile mesebetsing eo e leng ea block e itseng: Dependency Tracking, ho khetha lioache, hore na lioache tsena li ka hokahanngoa joang, le kamoo re netefatsang ts'ireletso - ena ke kemiso e thata ea seo ke tla bua ka sona:

HighLoad++, Mikhail Tyulenev (MongoDB): Ho lumellana ha sesosa: ho tloha khopolong ho ea ho itloaetsa

Full Dependency Tracking

Ke hobane'ng ha e hlokahala? E le hore ha data e phetoa, tlaleho ka 'ngoe, phetoho e' ngoe le e 'ngoe ea data e na le tlhahisoleseding mabapi le hore na e itšetlehile ka liphetoho life. Phetoho ea pele le e se nang kelello ke ha molaetsa o mong le o mong o nang le rekoto o na le leseli mabapi le melaetsa e fetileng:

HighLoad++, Mikhail Tyulenev (MongoDB): Ho lumellana ha sesosa: ho tloha khopolong ho ea ho itloaetsa

Mohlaleng ona, palo e ka har'a masakaneng a kobehileng ke linomoro tsa rekoto. Ka linako tse ling lirekoto tsena tse nang le boleng li bile li fetisoa ka botlalo, ka linako tse ling liphetolelo tse ling lia fetisoa. Ntlha ea bohlokoa ke hore phetoho e 'ngoe le e' ngoe e na le tlhahisoleseding e mabapi le e fetileng (ho hlakile hore e na le sena sohle ka hare ho eona).

Ke hobane'ng ha re ile ra etsa qeto ea ho se sebelise mokhoa ona (ho latela ka botlalo)? Ho hlakile, hobane mokhoa ona ha o sebetse: phetoho leha e le efe ho liwebsaete tsa metsoalle e itšetlehile ka liphetoho tsohle tse fetileng ho marang-rang ao a sechaba, ho fetisetsa, ho re, Facebook kapa VKontakte ho ntlafatso e 'ngoe le e' ngoe. Leha ho le joalo, ho na le lipatlisiso tse ngata mabapi le Full Dependency Tracking - ana ke marang-rang a pele ho sechaba; maemong a mang e hlile ea sebetsa.

Ts'ebetso e Hlakileng ea Boipheliso

E latelang e lekanyelitsoe ho feta. Ho fetisoa ha tlhahisoleseding ho boetse ho nahanoa mona, empa feela e itšetlehileng ka ho hlaka. Ho itšetlehile ka eng, e le molao, e khethoa ke Kopo. Ha data e phetoa, potso e khutlisa likarabo feela ha litšepiso tse fetileng li khotsofetse, ke hore, li bonts'itsoe. Ena ke moelelo oa kamoo Causal consistency e sebetsang kateng.

HighLoad++, Mikhail Tyulenev (MongoDB): Ho lumellana ha sesosa: ho tloha khopolong ho ea ho itloaetsa

O bona hore rekoto ea 5 e itšetlehile ka litlaleho tsa 1, 2, 3, 4 - ka hona, o emetse pele mofani a khona ho fumana liphetoho tse entsoeng ke qeto ea ho fihlella ea Penny, ha liphetoho tsohle tse fetileng li se li fetile ho database.

Sena ha se re tšoanele le rona, hobane ho ntse ho e-na le boitsebiso bo bongata haholo, 'me bo tla liehisa lintho. Ho na le mokhoa o mong ...

Oache ea Lamport

Ba tsofetse haholo. Lamport Clock e bolela hore lintho tsena tse itšetlehileng ka tsona li kenngoa ka har'a ts'ebetso ea scalar, e bitsoang Lamport Clock.

Mosebetsi oa scalar ke nomoro e itseng e sa utloahaleng. Hangata e bitsoa nako e utloahalang. Ketsahalong e 'ngoe le e' ngoe, counter ena e eketseha. Counter, eo hajoale e tsejoang ke ts'ebetso, e romella molaetsa ka mong. Ho hlakile hore lits'ebetso li ka ba ntle ho tumellano, li ka ba le linako tse fapaneng ka ho felletseng. Leha ho le joalo, tsamaiso ka tsela e itseng e leka-lekanya oache le melaetsa e joalo. Ho etsahalang tabeng ee?

Ke arola shard eo e kholo ka bobeli ho hlakisa: Metsoalle e ka lula sebakeng se le seng, se nang le sengoathoana sa pokello, 'me Fepa e ka phela sebakeng se seng, se nang le sengoathoana sa pokello ena. Na ho hlakile hore na ba ka tsoa moleng joang? Lijo tsa pele li tla re: "Replicated", ebe Metsoalle. Haeba tsamaiso e sa fane ka mofuta o itseng oa tiiso ea hore Feed e ke ke ea bontšoa ho fihlela litšepiso tsa Metsoalle tsa pokello ea Metsoalle li boetse li fanoa, joale re tla ba le boemo boo ke bo boletseng hantle.

U bona kamoo nako ea counter ho Feed e eketsehang ka mokhoa o utloahalang:

HighLoad++, Mikhail Tyulenev (MongoDB): Ho lumellana ha sesosa: ho tloha khopolong ho ea ho itloaetsa

Kahoo thepa e ka sehloohong ea sena sa Lamport Clock le Causal consistency (e hlalositsoe ka Lamport Clock) ke ena: haeba re na le Liketsahalo A le B, 'me Ketsahalo ea B e itšetlehile ka Ketsahalo ea A *, joale ho latela hore LogicalTime ea Ketsahalo ea A e ka tlaase ho. LogicalTime ho tsoa Ketsahalong ea B.

* Ka linako tse ling ba boetse ba re A e etsahetse pele ho B, ke hore, A e etsahetse pele ho B - ena ke kamano e itseng e laolang karolo eohle ea liketsahalo tse etsahetseng ka kakaretso.

Se fapaneng ha sea nepahala. Ha e le hantle ena ke e 'ngoe ea mathata a mantlha a Lamport Clock - tatellano ea karolo. Ho na le mohopolo o mabapi le liketsahalo tse etsahalang ka nako e le 'ngoe, ke hore, liketsahalo tseo ho tsona (A e etsahetseng pele ho B) kapa (A e etsahetseng pele ho B). Mohlala e ka ba tlatsetso e tšoanang ea Leonard ea motho e mong joalo ka motsoalle (esita le Leonard, empa Sheldon, mohlala).
Ena ke thepa e atisang ho sebelisoa ha ho sebetsa le lioache tsa Lamport: li sheba ka ho khetheha mosebetsi 'me ho tloha ho sena li etsa qeto ea hore mohlomong liketsahalo tsena li itšetlehile ka tsona. Hobane tsela e le 'ngoe ke' nete: haeba LogicalTime A e ka tlase ho LogicalTime B, joale B e ke ke ea etsahala pele ho A; 'me haeba ho feta, mohlomong.

Vector Clock

Tsoelo-pele e utloahalang ea oache ea Lamport ke Vector Clock. Li fapane ka hore node ka 'ngoe e teng mona e na le oache ea eona e arohaneng, 'me e fetisoa joalo ka vector.
Tabeng ena, u bona hore index ea zeroth ea vector e ikarabella ho Fepa, 'me letšoao la pele la vector ke la Metsoalle (e' ngoe le e 'ngoe ea li-node tsena). 'Me joale ba tla eketseha: index ea zero ea "Feed" e eketseha ha u ngola - 1, 2, 3:

HighLoad++, Mikhail Tyulenev (MongoDB): Ho lumellana ha sesosa: ho tloha khopolong ho ea ho itloaetsa

Hobaneng ha Vector Clock e le betere? Hobane li u lumella ho fumana hore na ke liketsahalo life tse etsahalang ka nako e le 'ngoe le hore na li etsahala neng libakeng tse fapaneng. Sena se bohlokoa haholo bakeng sa sistimi ea sharding joalo ka MongoDB. Leha ho le joalo, ha rea ​​khetha sena, leha e le ntho e ntle haholo, 'me e sebetsa hantle, mme mohlomong e ka re tšoanela ...

Haeba re na le li-shards tse likete tse 10, re ke ke ra fetisetsa likarolo tse likete tse 10, esita le haeba re li hatella kapa re tla le ntho e 'ngoe - moputso o ntse o tla ba o monyenyane ka makhetlo a' maloa ho feta molumo oa vector ena kaofela. Ka hona, re tsikitlanya lipelo le meno, re ile ra tlohela mokhoa ona ’me ra fetela ho o mong.

Spanner TrueTime. Oache ea athomo

Ke itse ho tla ba le pale ka Spanner. Ena ke ntho e ntle, ho tloha lekholong la boXNUMX la lilemo: lioache tsa athomo, khokahano ea GPS.

Mohopolo ke ofe? "Spanner" ke sistimi ea Google eo haufinyane e bileng teng ho batho (ba kentse SQL ho eona). Khoebo ka 'ngoe e na le setempe sa nako. Kaha nako e hokahantsoe *, ketsahalo ka 'ngoe e ka abeloa nako e itseng - lioache tsa athomo li na le nako ea ho leta, ka mor'a moo nako e 'ngoe e tiisetsoa hore e tla "etsahala".

HighLoad++, Mikhail Tyulenev (MongoDB): Ho lumellana ha sesosa: ho tloha khopolong ho ea ho itloaetsa

Ka hona, ka ho ngolla database feela le ho emela nako e itseng, Serializability ea ketsahalo e tiisetsoa ka bo eona. Ba na le mohlala o matla ka ho fetisisa oa Consistency o ka nahanoang ka molao-motheo - ke External Consistency.

* Bona ke bothata bo boholo ka lioache tsa Lampart - ha ho mohla li lumellanang le lits'ebetso tse ajoang. Li ka fapana; leha li na le NTP, li ntse li sa sebetse hantle. "Spanner" e na le oache ea athomo le ho lumellana, ho bonahala eka ke microseconds.

Ke hobane'ng ha re sa khetha? Ha re nahane hore basebelisi ba rona ba na le oache ea athomo e hahelletsoeng ka hare. Ha li hlaha, li ntse li hahiloe ka har'a laptop e 'ngoe le e' ngoe, ho tla ba le mofuta o mong oa khokahano ea GPS e pholileng haholo - joale ho joalo ... Empa hajoale tse ntle ka ho fetisisa tse ka khonehang ke Amazon, Base Stations - bakeng sa ba chesehang ... Kahoo re sebelisitse lioache tse ling. .

Hybrid Clock

Ha e le hantle sena ke se tšoaeang MongoDB ha ho netefatsoa hore Causal e lumellana. Li lebasetere joang? Hybrid ke boleng ba scalar, empa e na le likarolo tse peli:

HighLoad++, Mikhail Tyulenev (MongoDB): Ho lumellana ha sesosa: ho tloha khopolong ho ea ho itloaetsa

  • Ea pele ke nako ea Unix (ho se ho fetile metsotsoana e mekae ho tloha "qalong ea lefats'e la k'homphieutha").
  • Ea bobeli ke increment e itseng, hape ke 32-bit int e sa ngolisoang.

Ke phetho, hantle-ntle. Ho na le mokhoa ona: karolo e ikarabellang bakeng sa nako e hokahanngoa le oache ka linako tsohle; nako le nako ha ntlafatso e etsahala, karolo ena e amahanngoa le oache 'me ho hlaha hore nako e lula e nepahetse,' me increment e u lumella ho khetholla pakeng tsa liketsahalo tse etsahetseng ka nako e le 'ngoe.

Hobaneng see se le bohlokoa ho MongoDB? Hobane e o lumella ho etsa mofuta o itseng oa lireschorente ka nako e itseng, ke hore, ketsahalo e bonts'oa ka nako. Sena se bohlokoa ha ho hlokahala liketsahalo tse itseng; Bakeng sa polokelongtshedimosetso, diketsahalo ke diphetoho polokelongtshedimosetso tse etsahetseng ka dinako tse itseng.

Ke tla u bolella lebaka la bohlokoa ka ho fetisisa ho uena feela (ka kopo, u se ke ua bolella mang kapa mang)! Re entse sena hobane sena ke sona se hlophisitsoeng, data e bonts'itsoeng e shebahala joalo ka MongoDB OpLog. OpLog ke sebopeho sa data se nang le liphetoho tsohle ho database: li qala ho ea ho OpLog, ebe li sebelisoa ho Storage ka boeona ha e le letsatsi kapa shard e phetoang.

Lena e ne e le lona lebaka le ka sehloohong. Leha ho le joalo, ho boetse ho na le litlhoko tse sebetsang bakeng sa ho theha database, ho bolelang hore e lokela ho ba bonolo - khoutu e nyenyane, e le lintho tse seng kae tse robehileng kamoo ho ka khonehang tse lokelang ho ngoloa hape le ho lekoa. Taba ea hore li-oplog tsa rona li ne li ngotsoe ka lioache tse nyalisitsoeng li ile tsa thusa haholo 'me tsa re lumella ho etsa khetho e nepahetseng. E hlile e lefa 'me ka tsela e itseng e sebetsa ka boselamose ho prototype ea pele. Ho ne ho le monate haholo!

Khokahano ea oache

Ho na le mekhoa e mengata ea ho hokahanya e hlalositsoeng libukeng tsa saense. Ke bua ka ho hokahanya ha re na le li-shards tse peli tse fapaneng. Haeba ho na le setšoantšo se le seng sa replica, ha ho na tlhoko ea ho lumellana leha e le efe: ena ke "monghali a le mong"; re na le OpLog, eo liphetoho tsohle li oelang ho eona - tabeng ena, ntho e 'ngoe le e' ngoe e se e hlophisitsoe ka tatellano ho "Oplog" ka boeona. Empa haeba re na le li-shards tse peli tse fapaneng, ho lumellana ha nako ho bohlokoa mona. Mona ke moo oache ea vector e thusitseng haholoanyane! Empa ha re na tsona.

HighLoad++, Mikhail Tyulenev (MongoDB): Ho lumellana ha sesosa: ho tloha khopolong ho ea ho itloaetsa

Ea bobeli e loketse - ena ke "Ho otla ha pelo". Hoa khoneha ho fapanyetsana matšoao a mang a hlahang nako le nako. Empa Heartbeats e lieha haholo, re ke ke ra fana ka latency ho moreki oa rona.

Ha e le hantle, nako ea 'nete ke ntho e babatsehang. Empa, hape, mohlomong sena ke bokamoso ... Le hoja e se e ka etsoa ho Atlas, ho se ho ntse ho e-na le li-synchronizers tsa nako "Amazon" tse potlakileng. Empa e ke ke ea fumaneha ho bohle.

Ho seba ke ha melaetsa eohle e kenyelletsa nako. Sena ke hoo e ka bang seo re se sebelisang. Molaetsa o mong le o mong lipakeng tsa li-node, mokhanni, router ea data node, ntho e 'ngoe le e' ngoe bakeng sa MongoDB ke mofuta o itseng oa ntho, karolo ea database e nang le oache e tsamaeang. Li na le moelelo oa nako ea lebasetere hohle, e fetisoa. 64 likotoana? Sena se lumella, sena se ka khoneha.

E sebetsa hammoho joang?

Mona ke shebile replica sete e le 'ngoe ho e nolofalletsa. Ho na le Primary le Secondary. Sekolo sa bobeli se etsa phetisetso mme ha se kamehla se hokahanngoang ka botlalo le Primary.

Kenyeletso e etsahala ho "Primery" ka boleng bo itseng ba nako. Kenyelletso ena e eketsa palo ea ka hare ka 11, haeba sena ke boholo. Kapa e tla lekola boleng ba oache le ho lumellana le oache haeba boleng ba oache bo le boholo. Sena se o nolofalletsa ho hlophisa ka nako.

Ka mor'a hore a rekote, ho etsahala nako ea bohlokoa. Oache e ho "MongoDB" 'me e eketsoa ha feela e ka ngolla "Oplog". Ena ke ketsahalo e fetolang boemo ba tsamaiso. Ka ho feletseng lihlooho tsohle tsa khale, ketsahalo e nkoa e le ha molaetsa o otla node: molaetsa o fihlile, ho bolelang hore tsamaiso e fetotse boemo ba eona.

Sena se bakoa ke taba ea hore nakong ea lipatlisiso ha ho hlake ka botlalo hore na molaetsa ona o tla hlalosoa joang. Re tseba hantle hore haeba e sa bonahatsoe ho "Oplog", joale e ke ke ea hlalosoa ka tsela leha e le efe, 'me phetoho ea boemo ba tsamaiso ke feela ho kena "Oplog". Sena se nolofatsa ntho e 'ngoe le e' ngoe bakeng sa rona: mohlala oa e nolofatsa, 'me o re lumella ho e hlophisa ka har'a sete e le' ngoe ea replica, le lintho tse ling tse ngata tse molemo.

Boleng bo seng bo ngoletsoe "Oplog" bo khutlisitsoe - rea tseba hore "Oplog" e se e ntse e na le boleng bona, 'me nako ea eona ke 12. Joale, re re, ho bala ho qala ho tloha node e 'ngoe (Secondary),' me e fetisetsa afterClusterTime in molaetsa. O re: "Ke hloka ntho e 'ngoe le e' ngoe e etsahetseng bonyane ka mor'a 12 kapa nakong ea leshome le metso e 'meli" (bona setšoantšo se ka holimo).

Sena ke se bitsoang Causal a consistent (CAT). Ho na le maikutlo a joalo ka khopolo ea hore ena ke sekhechana sa nako, se lumellanang ka bosona. Tabeng ena, re ka re sena ke boemo ba tsamaiso e ileng ea hlokomeloa ka nako ea 12.

Hona joale ha ho na letho ka mona, hobane mofuta ona oa ho etsisa boemo ha u hloka Sekondari ho etsa replicate data from the Primary . O emetse ... 'Me joale data e fihlile - o khutlisetsa litekanyetso tsena hape.

HighLoad++, Mikhail Tyulenev (MongoDB): Ho lumellana ha sesosa: ho tloha khopolong ho ea ho itloaetsa

Ke kamoo e sebetsang kateng. Hoo e ka bang.

"Hoo e ka bang" ho bolela eng? Ha re nke hore ho na le motho ea balileng le ho utloisisa hore na sena sohle se sebetsa joang. Ke ile ka hlokomela hore nako le nako ha ClusterTime e etsahala, e nchafatsa oache e utloahalang ea ka hare, ebe keno e latelang e eketseha ka e le 'ngoe. Mosebetsi ona o nka mela e 20. Ha re re motho enoa o fetisa palo e kholo ka ho fetisisa ea 64-bit, ho tlosa e le 'ngoe.

Hobaneng ho "tlosa e le 'ngoe"? Hobane oache e ka hare e tla nkeloa sebaka ke boleng bona (ho hlakile hore ena ke eona e kholo ka ho fetesisa ebile e kholo ho feta nako ea hajoale), joale ho tla hlaha "Oplog", 'me oache e tla eketsoa ke yuniti e' ngoe - 'me e se e tla ba teng. e be boleng bo phahameng (ho na le likarolo tsohle feela, ha ho na moo u ka eang teng), ints e saint).

Ho hlakile hore ka mor'a sena tsamaiso e fetoha e sa fumaneheng ho hang bakeng sa eng kapa eng. E ka laolloa le ho hloekisoa feela - mosebetsi o mongata oa matsoho. Ho fumaneha ka botlalo:

HighLoad++, Mikhail Tyulenev (MongoDB): Ho lumellana ha sesosa: ho tloha khopolong ho ea ho itloaetsa

Ho feta moo, haeba sena se phetoa sebakeng se seng, joale sehlopha sohle se oela fatše. Boemo bo sa amoheleheng ho hang boo mang kapa mang a ka bo hlophisang ka potlako le ha bonolo! Ka hona, re ile ra nka motsotso ona e le o mong oa bohlokoa ka ho fetisisa. Joang ho thibela eona?

Tsela ea rona ke ho saena clusterTime

Ke kamoo e fetisoang kateng molaetseng (pele ho mongolo o moputsoa). Empa hape re ile ra qala ho hlahisa signature (mongolo o moputsoa):

HighLoad++, Mikhail Tyulenev (MongoDB): Ho lumellana ha sesosa: ho tloha khopolong ho ea ho itloaetsa

Saeno e hlahisoa ke senotlolo se bolokiloeng ka har'a database, ka har'a sebaka se sireletsehileng; ka boeona e hlahisoa le ho ntlafatsoa (basebelisi ha ba bone letho ka eona). Ho hlahisoa hash, 'me molaetsa o mong le o mong o saennoe ha o bōptjoa le ho netefatsoa ha o amoheloa.
Mohlomong potso e hlaha likelellong tsa batho: "See se liehisa lintho hakae?" Ke u boleletse hore e lokela ho sebetsa kapele, haholo-holo ha ho se na tšobotsi ena.

Ho bolela eng ho sebelisa Causal consistency tabeng ee? Sena ke ho bonts'a parameter ea afterClusterTime. Ntle le sena, e tla fetisa litekanyetso feela. Ho seba, ho qala ho mofuta oa 3.6, ho sebetsa kamehla.

Haeba re tlohela moloko o sa khaotseng oa li-signature, o tla fokotsa tsamaiso esita le ha ho se na tšobotsi, e sa finyelle mekhoa le litlhoko tsa rona. Joale re ile ra etsa’ng?

Etsa kapele!

Ke ntho e bonolo, empa leqheka lea thahasellisa - ke tla e arolelana, mohlomong motho e mong o tla thahasella.
Re na le hash e bolokang data e saenneng. Lintlha tsohle li kena ka har'a cache. Cache ha e saene nako e tobileng, empa Range. Ha boleng bo bong bo fihla, re hlahisa Range, re pata likotoana tse 16 tsa ho qetela, 'me re saena boleng bona:

HighLoad++, Mikhail Tyulenev (MongoDB): Ho lumellana ha sesosa: ho tloha khopolong ho ea ho itloaetsa

Ka ho amohela saena e joalo, re potlakisa sistimi (ha e le hantle) makhetlo a likete tse 65. E sebetsa hantle: ha re etsa liteko, nako e ile ea fokotseha ka makhetlo a likete tse 10 ha re ne re e-na le ntlafatso e latellanang. Ho hlakile hore ha ba qabana, sena ha se sebetse. Empa maemong a mangata a sebetsang e sebetsa. Motsoako oa mosaeno oa Range hammoho le mosaeno o rarollotse bothata ba ts'ireletso.

Re ithutile’ng?

Lithuto tseo re ithutileng tsona ho sena:

  • Re hloka ho bala lisebelisoa, lipale, lingoliloeng, hobane re na le lintho tse ngata tse khahlisang. Ha re sebetsana le karolo e itseng (haholo-holo hona joale, ha re ne re etsa transaction, joalo-joalo), re hloka ho bala le ho utloisisa. Ho nka nako, empa ho hlile ho molemo haholo hobane ho hlakisa moo re leng teng. Ho ne ho bonahala eka ha rea ​​ka ra hlahisa letho le lecha - re mpa re nkile metsoako.

    Ka kakaretso, ho na le phapang e itseng ea ho nahana ha ho e-na le seboka sa thuto (Sigmon, mohlala) - e mong le e mong o tsepamisa maikutlo mehopolong e mecha. Ke eng e ncha ka algorithm ea rona? Ha ho letho le lecha ka ho khetheha mona. Ntho e ncha e itšetlehile ka tsela eo re kopanyang mekhoa e teng hammoho. Ka hona, ntho ea pele ke ho bala li-classics, ho qala ka Lampart.

  • Ka tlhahiso, litlhoko li fapane ka ho feletseng. Ke na le bonnete ba hore bongata ba lona ha le tobane le li-database tsa "spherical" ka mokhoa o hlakileng, empa ka lintho tse tloaelehileng, tsa 'nete tse nang le mathata a ho fumaneha, latency le mamello ea liphoso.
  • Ntho ea ho qetela ke hore re ile ra tlameha ho sheba maikutlo a fapaneng le ho kopanya lihlooho tse 'maloa tse fapaneng ka ho feletseng ka mokhoa o le mong, hammoho. Khopolo mabapi le ho saena, ka mohlala, ka kakaretso e ne e tsoa sehloohong se neng se nahana ka protocol ea Paxos, eo bakeng sa Bafenyi bao e seng ba Byzantine ba ka har'a protocol ea tumello, bakeng sa Byzantine - ka ntle ho protocol ea tumello ... Ka kakaretso, sena ke sona seo re se batlang. qetellong ke entse.

    Ho hang ha ho letho le lecha mona! Empa hang ha re e kopanya kaofela ... Ho tšoana le ho re recipe ea salate ea Olivier ha e na thuso, hobane mahe, mayonnaise le likomkomere li se li qapiloe ... E bua ka pale e tšoanang.

HighLoad++, Mikhail Tyulenev (MongoDB): Ho lumellana ha sesosa: ho tloha khopolong ho ea ho itloaetsa

Ke tla qetella ka sena. Kea leboha!

Lipotso

Potso e tsoang ho bamameli (eo ka mor'a moo e tla bitsoa B): - Kea leboha, Mikhail, bakeng sa tlaleho! Sehlooho sa nako se thahasellisa. U sebelisa Ho seba. Ba itse motho e mong le e mong o na le nako ea hae, e mong le e mong o tseba nako ea hae. Joalokaha ke e utloisisa, re na le mokhanni - ho ka ba le bareki ba bangata ba nang le bakhanni, bahlophisi ba lipotso le bona, li-shards hape ... 'Me tsamaiso e theohela ho eng haeba ka tšohanyetso re e-na le ho se lumellane: motho e mong o etsa qeto ea hore ke bakeng sa motsotso pele, ho na le motho motsotsong morao? Re tla fella kae?

MT: – Potso e ntle ruri! Ke ne ke batla feela ho bua ka li-shards. Haeba ke utloisisa potso ka nepo, re na le boemo bo latelang: ho na le shard 1 le shard 2, ho bala ho hlaha ho tloha ho li-shards tsena tse peli - li na le phapang, ha li sebelisane, hobane nako eo ba e tsebang e fapane, haholo-holo nako eo li leng teng ka li-oplogs.
Ha re re shard 1 e entse lirekoto tse limilione, shard 2 ha ea ka ea etsa letho ho hang, mme kopo e ile ea fihla ho li-shards tse peli. 'Me ea pele e na le afterClusterTime e fetang milione. Boemong bo joalo, joalokaha ke hlalositse, shard 2 e ke ke ea arabela ho hang.

NAKO: - Ke ne ke batla ho tseba hore na ba lumellana joang le ho khetha nako e le 'ngoe e utloahalang?

MT: - Ho bonolo haholo ho hokahanya. Shard, ha afterClusterTime e tla ho eena mme a sa fumane nako ho "Oplog", ha e qale ho amoheloa. Ke hore, o phahamisa nako ea hae ka matsoho ho boleng bona. Sena se bolela hore ha e na liketsahalo tse tsamaellanang le kopo ena. O etsa ketsahalo ena ka tsela ea maiketsetso 'me kahoo e fetoha Causal Consistent.

NAKO: - Ho thoe'ng haeba ka mor'a sena liketsahalo tse ling li tla ho eena tse lahlehileng kae-kae marang-rang?

MT: - Shard e entsoe ka tsela eo ba ke keng ba tla hape, kaha ke monghali a le mong. Haeba a se a ngolisitse, joale ba ke ke ba tla, empa ba tla tla hamorao. Ho ke ke ha etsahala hore ntho e 'ngoe e khomarele kae-kae, ebe ha a ngole, ebe liketsahalo tsena li fihla - 'me Causal consistency e robehile. Ha a sa ngole, bohle ba tla latela (o tla ba emela).

HighLoad++, Mikhail Tyulenev (MongoDB): Ho lumellana ha sesosa: ho tloha khopolong ho ea ho itloaetsa

NAKO: - Ke na le lipotso tse 'maloa mabapi le mela. Causal consistency e nka hore ho na le letoto le itseng la liketso tse lokelang ho etsoa. Ho etsahala'ng haeba e 'ngoe ea liphutheloana tsa rona e nyamela? Ya 10, 11 ke ena e tla ... ya 12 e nyametse, mme bohle ba emetse hore e phethahale. ’Me ka tšohanyetso koloi ea rōna e ile ea shoa, re sitoa ho etsa letho. A na ho na le bolelele bo boholo ba mokoloko o bokelloang pele o etsoa? Ke ho hlōleha hofe ho bolaeang ho etsahalang ha naha leha e le efe e lahleha? Ho feta moo, haeba re ngola fatše hore ho na le boemo bo fetileng, joale re lokela ho qala ka tsela e itseng ho eona? Empa ha baa ka ba mo sutumelletsa hōle!

MT: - Hape ke potso e ntle! Re etsang? MongoDB e na le mohopolo oa hore quorum e ngola, palo ea baloa. Ke maemong afe moo molaetsa o ka lahlehang? Ha ho ngola e se quorum kapa ha ho baloa e se quorum (mofuta o mong oa lithōle le oona o ka khomarela).
Mabapi le Causal consistency, teko e kholo ea liteko e ile ea etsoa, ​​​​sephetho sa eona e bile hore tabeng ea ha ho ngola le ho bala ha ho na quorum, ho tlōla ha Causal consistency ho etsahala. Hantle-ntle seo u se buang!

Keletso ea rona: sebelisa bonyane ho bala quorum ha u sebelisa Causal consistency. Tabeng ena, ha ho letho le tla lahleha, esita le haeba tlaleho ea quorum e lahlehile ... Ena ke boemo ba orthogonal: haeba mosebeletsi a sa batle hore data e lahlehe, o hloka ho sebelisa tlaleho ea quorum. Ho tsitsa ha Causal ha ho fane ka tiiso ea ho tšoarella. Ho tšoarella ho tiisetsoa ka ho pheta-pheta le mochine o amanang le ho ikatisa.

NAKO: - Ha re theha mohlala o re etsetsang sharding (eseng monghali, empa lekhoba, ka ho latellana), e itšetlehile ka nako ea Unix ea mochine oa eona kapa ka nako ea "monghali"; Na e lumellana khetlo la pele kapa nako le nako?

MT: - Ke tla hlalosa hona joale. Shard (i.e. horizontal partition) - kamehla ho na le Primary mono. 'Me shard e ka ba le "monghali"' me ho ka ba le likopi. Empa shard e lula e ts'ehetsa ho rekota, hobane e tlameha ho ts'ehetsa domain name e itseng (shard e na le Primary).

NAKO: - Kahoo ntho e 'ngoe le e' ngoe e itšetlehile feela ka "monghali"? Na nako ea master e sebelisoa kamehla?

MT: - E. U ka re ka tsela ea tšoantšetso: oache e ntse e ts'oara ha ho kena "master", ho "Oplog" ho etsahala.

NAKO: - Re na le moreki ea hokahanyang mme ha a hloke ho tseba letho ka nako?

MT: - Ha ho hlokahale hore u tsebe letho ho hang! Haeba re bua ka hore na e sebetsa joang ho mofani: ha mofani a batla ho sebelisa Causal consistency, o hloka ho bula seboka. Hona joale ntho e 'ngoe le e' ngoe e teng: litšebelisano nakong ea kopano, 'me u fumane litokelo ... Seboka ke tlhophiso ea liketsahalo tse utloahalang tse etsahalang le mofani.

Haeba a bula lenaneo lena mme a re moo o batla hore Causal consistency (haeba seboka se tšehetsa Causal consistency ka ho sa feleng), ntho e 'ngoe le e' ngoe e sebetsa ka mokhoa o itekanetseng. Mokhanni o hopola nako ena mme oa e eketsa ha a fumana molaetsa o mocha. E hopola hore na e fetileng e khutlisitse karabo efe ho tsoa ho seva e khutlisitseng data. Kopo e latelang e tla ba le afterCluster("nako e kholo ho feta ena").

Moreki ha a hloke ho tseba letho! Sena ke opaque ka ho feletseng ho eena. Haeba batho ba sebelisa likarolo tsee, ba ka etsa eng? Taba ea pele, u ka bala li-secondary ka mokhoa o sireletsehileng: u ka ngolla Primary 'me u bale ho tsoa ho barutoana ba nang le sebopeho sa libaka 'me u be le bonnete ba hore e ea sebetsa. Ka nako e ts'oanang, mananeo a ileng a ngoloa ho Primary a ka ba a fetisetsoa ho Sekondari, ke hore, u ke ke ua sebelisa lenaneo le le leng, empa tse 'maloa.

NAKO: - Lera le lecha la Compute science - CRDT (Mefuta e Replicated Data e se nang likhohlano) - e amana haholo le sehlooho sa Eventual consistency. Na u nahanne ka ho kopanya mefuta ee ea data ho database mme u ka re'ng ka eona?

MT: - Potso e ntle! CRDT ea utloahala bakeng sa likhohlano tsa ho ngola: ho MongoDB, monghali a le mong.

NAKO: - Ke na le potso ho tsoa ho li-devops. Lefatšeng la 'nete, ho na le maemo a joalo a Jesuitical ha Ho hloleha ha Byzantium ho etsahala,' me batho ba khopo ka har'a sebaka se sirelelitsoeng ba qala ho kenella ka har'a protocol, ba romela liphutheloana tsa mesebetsi ea matsoho ka tsela e khethehileng?

HighLoad++, Mikhail Tyulenev (MongoDB): Ho lumellana ha sesosa: ho tloha khopolong ho ea ho itloaetsa

MT: - Batho ba khopo ka har'a perimeter ba tšoana le pere ea Trojan! Batho ba khopo ka hare ho perimeter ba ka etsa lintho tse ngata tse mpe.

NAKO: - Ho hlakile hore ho tloha, ha ho buuoa ka ho toba, sekoti ka har'a seva seo ka sona u ka behang zoo ea litlou 'me ua senya sehlopha sohle ka ho sa feleng ... Ho tla nka nako bakeng sa ho hlaphoheloa ka letsoho ... Sena, ho se beha ka bonolo, ke phoso. Ka lehlakoreng le leng, sena sea thahasellisa: bophelong ba sebele, ts'ebetsong, ho na le maemo ha ka tlhaho litlhaselo tse tšoanang tsa ka hare li etsahala?

MT: - Kaha ke hangata ke kopanang le litlolo tsa ts'ireletso bophelong ba 'nete, nke ke ka bolela hore na li etsahala. Empa haeba re bua ka filosofi ea tsoelo-pele, re nahana tjena: re na le pherimitha e fanang ka bashanyana ba etsang ts'ireletso - ena ke qhobosheane, lerako; 'me ka hare ho pherimitha u ka etsa eng kapa eng eo ue batlang. Ho hlakile hore ho na le basebelisi ba nang le bokhoni ba ho sheba feela, mme ho na le basebelisi ba nang le bokhoni ba ho hlakola bukana.

Ho itšetlehile ka litokelo, tšenyo eo basebelisi ba ka e etsang e ka ba mouse, kapa e ka ba tlou. Ho hlakile hore mosebelisi ea nang le litokelo tse felletseng a ka etsa eng kapa eng ho hang. Motho ea nang le litokelo tse fokolang a ka baka kotsi e fokolang haholo. Haholo-holo, e ke ke ea senya tsamaiso.

NAKO: - Sebakeng se sirelelitsoeng, motho e mong o ile a leka ho etsa li-protocol tse sa lebelloang bakeng sa seva e le hore a senye seva ka ho feletseng, 'me haeba u na le mahlohonolo, sehlopha sohle ... Na se kile sa fumana seo "se molemo"?

MT: "Ha ke so utloe ka lintho tse joalo." Taba ea hore u ka senya seva ka tsela ena ha se sephiri. Ho hloleha ka hare, ho tsoa ho protocol, ho ba mosebeletsi ea nang le tumello ea ka ngolang ntho e kang ena molaetsa ... Ha e le hantle, ho ke ke ha khoneha, hobane e ntse e tla netefatsoa. Hoa khoneha ho tima netefatso ena bakeng sa basebelisi ba sa e batleng - joale ke bothata ba bona; bona, ho bua ka mokhoa o batlang, ba senya marako ka bobona mme u ka sutumelletsa tlou moo, e tla hatakela ... Empa ka kakaretso, u ka apara joaloka motho ea lokisang, u tle u e hule!

NAKO: – Thanks bakeng sa tlaleho. Sergey (Yandex). Ho na le nako e sa khaotseng ho Mong e fokotsang palo ea litho tsa likhetho ho Replica Set, 'me sena se tsitsitseng ke 7 (supa). Ke hobane'ng ha see e le kamehla? Hobaneng ona e se mofuta o mong oa paramente?

MT: - Re na le Replica Sets e nang le li-node tse 40. Kamehla ho na le bongata. Ha ke tsebe hore na ke mofuta ofe...

NAKO: - Ho Replica Set u ka tsamaisa litho tse sa vouteng, empa ho na le litho tse ngata tsa ho vouta tse 7. Re ka pholoha joang ha ho koaloa nyeoeng ee haeba Replica Set ea rona e hasana ho pholletsa le litsi tsa data tsa 3? Setsi se le seng sa data se ka tima habonolo, 'me mochine o mong o ka oa.

MT: - Sena se se se ntse se le ka nģ'ane ho tekanyo ea tlaleho. Ena ke potso e akaretsang. Mohlomong nka u bolella ka eona hamorao.

HighLoad++, Mikhail Tyulenev (MongoDB): Ho lumellana ha sesosa: ho tloha khopolong ho ea ho itloaetsa

Lipapatso tse ling 🙂

Kea leboha ka ho lula le rona. Na u rata lingoliloeng tsa rona? U batla ho bona litaba tse ling tse khahlisang? Re tšehetse ka ho etsa odara kapa ho khothaletsa metsoalle, cloud VPS bakeng sa batho ba ntlafatsang ho tloha ho $ 4.99, analogue e ikhethang ea li-server tsa boemo ba ho kena, e iqapetsoeng ke rona bakeng sa hau: 'Nete eohle ka VPS (KVM) E5-2697 v3 (6 Cores) 10GB DDR4 480GB SSD 1Gbps ho tloha $19 kapa mokhoa oa ho arolelana seva? (e fumaneha ka RAID1 le RAID10, ho fihla ho li-cores tse 24 le ho fihla ho 40GB DDR4).

Dell R730xd makhetlo a 2 a theko e tlase sebakeng sa data sa Equinix Tier IV se Amsterdam? Ke mona feela 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TV ho tloha $199 naheng ea Netherlands! Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - ho tloha $99! Bala ka Mokhoa oa ho haha ​​​​infrastructure Corp. sehlopha ka tšebeliso ea li-server tsa Dell R730xd E5-2650 v4 tse jang li-euro tse 9000 bakeng sa penny?

Source: www.habr.com

Eketsa ka tlhaloso