I-HighLoad++, u-Mikhail Tyulenev (i-MongoDB): Ukungaguquguquki kwe-Causal: kusuka kumbono kuya ekusebenzeni

Ingqungquthela elandelayo ye-HighLoad++ izoba ngo-April 6 no-7, 2020 e-St. Petersburg.
Imininingwane namathikithi isixhumanisi. I-HighLoad++ Siberia 2019. Ihholo "Krasnoyarsk". Juni 25, 12:00. Lezi kanye isethulo.

I-HighLoad++, u-Mikhail Tyulenev (i-MongoDB): Ukungaguquguquki kwe-Causal: kusuka kumbono kuya ekusebenzeni

Kuyenzeka ukuthi izidingo ezingokoqobo zingqubuzane nethiyori, lapho izici ezibalulekile zomkhiqizo wentengiso zinganakwa. Le nkulumo yethula inqubo yokukhetha kanye nokuhlanganisa izindlela ezihlukene zokudala izingxenye ze-Causal zokungaguquguquki ngokusekelwe ocwaningweni lwezemfundo olusekelwe kuzidingo zomkhiqizo wezohwebo. Abalaleli bazofunda mayelana nezindlela zetiyori ezikhona zamawashi anengqondo, ukulandelela okuncikile, ukuphepha kwesistimu, ukuvumelanisa iwashi, nokuthi kungani i-MongoDB yazinza ezixazululweni ezithile.

UMikhail Tyulenev (okuzobizwa kamuva ngokuthi MT): - Ngizokhuluma ngokungaguquguquki kwe-Causal - lesi isici esisebenze kuso ku-MongoDB. Ngisebenza eqenjini lezinhlelo ezisabalalisiwe, sakwenza cishe eminyakeni emibili edlule.

I-HighLoad++, u-Mikhail Tyulenev (i-MongoDB): Ukungaguquguquki kwe-Causal: kusuka kumbono kuya ekusebenzeni

Kulolu hlelo, kwadingeka ngizijwayeze nocwaningo oluningi lwezemfundo, ngoba lesi sici sifundwe kahle kakhulu. Kuvele ukuthi ayikho neyodwa i-athikili elingana kulokho okudingekayo kusizindalwazi sokukhiqiza ngenxa yezidingo ezicacile okungenzeka ukuthi zikhona kunoma yiluphi uhlelo lokusebenza lokukhiqiza.

Ngizokhuluma ngokuthi thina, njengabathengi boCwaningo lwezemfundo, silungisa kanjani okuthile kuso esingase sethule kubasebenzisi bethu njengesitsha esenziwe ngomumo esilungele futhi esiphephile ukusisebenzisa.

Ukuvumelana kwembangela. Ake sichaze imiqondo

Okokuqala, ngifuna ukusho ngokwejwayelekile ukuthi kuyini ukungaguquguquki kwe-Causal. Kukhona abalingiswa ababili - uLeonard noPenny (uchungechunge lweTV "The Big Bang Theory"):

I-HighLoad++, u-Mikhail Tyulenev (i-MongoDB): Ukungaguquguquki kwe-Causal: kusuka kumbono kuya ekusebenzeni

Ake sithi u-Penny use-Europe futhi u-Leonard ufuna ukumenzela iphathi engalindelekile. Futhi ayikho into engcono ayicabangayo kunokumkhipha ohlwini lwabangane bakhe, ethumelela bonke abangani bakhe isibuyekezo ngokuphakelayo: “Masijabulise uPenny!” (use-Europe, ngenkathi elele, akakuboni konke lokhu futhi akakwazi ukukubona, ngoba akekho). Ekugcineni, uyakusula lokhu okuthunyelwe, akusule kokuthi Okuphakelayo futhi abuyisele ukufinyelela ukuze angaboni lutho futhi kungabikho hlazo.
Konke lokhu kuhle futhi kuhle, kodwa ake sicabange ukuthi uhlelo lusatshalaliswa futhi izinto zonakala kancane. Kungenzeka, isibonelo, ukuthi umkhawulo wokufinyelela ka-Penny wenzeke ngemva kokuvela kwalokhu okuthunyelwe, uma izehlakalo zingahlobene nembangela nomphumela. Empeleni, lesi yisibonelo lapho kudingeka khona ukuvumelana kwe-Causal ukuze kwenziwe umsebenzi webhizinisi (kulokhu).

Eqinisweni, lezi izakhiwo ezingezona ezincane ze-database - bambalwa kakhulu abantu abazisekelayo. Asiqhubekele kumamodeli.

Amamodeli Avumelanayo

Iyini ngempela imodeli yokuvumelana kusizindalwazi? Lezi ezinye zeziqinisekiso uhlelo olusabalalisiwe olunikezayo mayelana nokuthi iyiphi idatha iklayenti elingayithola nokuthi ikuphi ukulandelana.

Empeleni, wonke amamodeli ahambisanayo ehlela ekutheni uhlelo olusabalalisiwe lufana kanjani nohlelo olusebenza, ngokwesibonelo, endaweni eyodwa kulaptop. Futhi yile ndlela efanayo isistimu esebenza ezinkulungwaneni zama-"Nodes" asabalaliswe yi-geo kwikhompyutha ephathekayo, lapho zonke lezi zakhiwo zenziwa ngokuzenzakalelayo ngokomgomo.

Ngakho-ke, amamodeli wokuvumelana asetshenziswa kuphela kumasistimu asabalalisiwe. Wonke amasistimu abekade ekhona futhi asebenza esikalini esifanayo esiqondile awazange ahlangabezane nezinkinga ezinjalo. Kwakukhona i-Buffer Cache eyodwa, futhi yonke into yayihlala ifundwa kuyo.

Imodeli Eqinile

Empeleni, imodeli yokuqala kakhulu Iqinile (noma umugqa wekhono lokukhuphuka, njengoba uvame ukubizwa kanjalo). Lena imodeli yokuvumelana eqinisekisa ukuthi lonke ushintsho, uma sekuqinisekisiwe ukuthi lwenzekile, lubonakala kubo bonke abasebenzisi bohlelo.

Lokhu kudala ukuhleleka komhlaba wonke kwayo yonke imicimbi kusizindalwazi. Lesi yisakhiwo esiqinile kakhulu esingaguquguquki, futhi ngokuvamile kubiza kakhulu. Nokho, isekelwe kahle kakhulu. Ibiza kakhulu futhi ihamba kancane - ayivamile ukusetshenziswa. Lokhu kubizwa ngekhono lokukhuphuka.

Kukhona enye impahla enamandla esekelwa ku-Spanner - ebizwa ngokuthi yi-External Consistency. Sizoxoxa ngakho ngemva kwesikhashana.

Imbangela

Okulandelayo yi-Causal, okuyikhona kanye ebengikhuluma ngakho. Kunamaleveli amancane amaningana phakathi kwe-Strong kanye ne-Causal engingeke ngikhulume ngawo, kodwa wonke abilisa ku-Causal. Lena imodeli ebalulekile ngoba inamandla kunawo wonke amamodeli, ukungaguquguquki okuqine kakhulu phambi kwenethiwekhi noma ukwahlukanisa.

Izimbangela empeleni yisimo lapho izehlakalo zixhunywe ubudlelwano bembangela-nomphumela. Kaningi zithathwa ngokuthi Funda amalungelo akho ngokombono weklayenti. Uma iklayenti libone amanani athile, alikwazi ukubona amanani abekade ekhona. Useyaqala ukubona ukufundwa kwesiqalo. Konke kufika entweni efanayo.
Izimbangela njengemodeli yokungaguquguquki ukuhlela ngokwengxenye kwemicimbi kuseva, lapho izehlakalo ezivela kuwo wonke amakhasimende zibonwa ngokulandelana okufanayo. Kulokhu, uLeonard noPenny.

Ekugcineni

Imodeli yesithathu ithi Eventual Consistency. Yilokhu okusekela ngokuphelele zonke izinhlelo ezisabalalisiwe, imodeli encane enengqondo nhlobo. Kusho lokhu okulandelayo: uma sinezinguquko ezithile kudatha, kwesinye isikhathi ziyafana.

Ngaleso sikhathi akasho lutho, ngaphandle kwalokho wayezophenduka abe Ukuvumelana Kwangaphandle - kungaba indaba ehluke ngokuphelele. Noma kunjalo, lena imodeli ethandwa kakhulu, evame kakhulu. Ngokuzenzakalelayo, bonke abasebenzisi bamasistimu asabalalisiwe basebenzisa i-Eventual Consistency.

Ngifuna ukunikeza izibonelo zokuqhathanisa:

I-HighLoad++, u-Mikhail Tyulenev (i-MongoDB): Ukungaguquguquki kwe-Causal: kusuka kumbono kuya ekusebenzeni

Isho ukuthini le micibisholo?

  • Ukubambezeleka. Njengoba amandla okuvumelana akhula, kuba mkhulu ngenxa yezizathu ezisobala: udinga ukwenza amarekhodi amaningi, uthole isiqinisekiso kubo bonke ababungazi namanodi abamba iqhaza kuqoqo ukuthi idatha isivele ikhona. Ngokuvumelana nalokho, I-Eventual Consistency inempendulo esheshayo, ngoba lapho, njengomthetho, ungakwazi ngisho nokuyibeka enkumbulweni futhi lokhu, empeleni, kuyoba okwanele.
  • Ukutholakala. Uma sikuqonda lokhu njengekhono lesistimu lokuphendula lapho kukhona ukuphulwa kwenethiwekhi, ukuhlukaniswa, noma uhlobo oluthile lokwehluleka, ukubekezelelana kwamaphutha kuyanda njengoba imodeli yokuvumelana iyancipha, ngoba kwanele ngathi ukuthi umsingathi oyedwa uhlala futhi ngesikhathi esifanayo. isikhathi sikhiqiza idatha ethile. I-Event Consistency ayiqinisekisi lutho nhlobo mayelana nedatha - kungaba noma yini.
  • Okudidayo. Ngesikhathi esifanayo, yiqiniso, inani le-anomalies liyakhula. Ku-Strong Consistency cishe akumele kube khona nhlobo, kodwa Ekuhambisaneni Kokugcina kungaba yinoma yini. Umbuzo ophakamayo: kungani abantu bekhetha i-Eventual Consistency uma iqukethe okungaqondakali? Impendulo ithi amamodeli we-Eventual Consistency ayasebenza futhi kukhona okudidayo, isibonelo, esikhathini esifushane; kungenzeka ukusebenzisa iwizadi ukuze ufunde futhi ufunde kakhudlwana noma kancane idatha engaguquki; Ngokuvamile kungenzeka ukusebenzisa amamodeli aqinile wokuvumelana. Ngokwenza lokhu kuyasebenza, futhi imvamisa inani lezinto ezididayo lilinganiselwe ngesikhathi.

Incazelo yeCAP

Uma ubona amagama afanayo, ukutholakala - yini efika engqondweni yakho? Kulungile - i-CAP theorem! Manje ngifuna ukuqeda inganekwane ... Akumina - nguMartin Kleppmann, owabhala isihloko esimangalisayo, incwadi emangalisayo.

I-HighLoad++, u-Mikhail Tyulenev (i-MongoDB): Ukungaguquguquki kwe-Causal: kusuka kumbono kuya ekusebenzeni

Ithiyori ye-CAP iwumgomo owakhiwa ngeminyaka yawo-2000 wokuthi Ukuvumelana, Ukutholakala, Izingxenye: thatha noma yikuphi okubili, futhi awukwazi ukukhetha okuthathu. Kwakuyisimiso esithile. Kwafakazelwa njengethiyori eminyakeni embalwa kamuva nguGilbert noLynch. Khona-ke lokhu kwaqala ukusetshenziswa njenge-mantra - izinhlelo zaqala ukuhlukaniswa zibe yi-CA, CP, AP nokunye.

Le theory empeleni yafakazelwa ezimweni ezilandelayo... Okokuqala, Ukutholakala kwakubhekwa njengenani eliqhubekayo ukusuka kuqanda kuye kumakhulu (0 - uhlelo “lufile”, 100 - luphendula ngokushesha; sijwayele ukukucabangela ngaleyo ndlela) , kodwa njengempahla ye-algorithm , eqinisekisa ukuthi kukho konke ukubulawa kwayo ibuyisela idatha.

Alikho igama mayelana nesikhathi sokuphendula nhlobo! Kukhona i-algorithm ebuyisela idatha ngemuva kweminyaka eyi-100 - i-algorithm etholakalayo emangalisayo, eyingxenye ye-CAP theorem.
Okwesibili: i-theorem yafakazelwa izinguquko kumanani wokhiye ofanayo, naphezu kweqiniso lokuthi lezi zinguquko zingashintshwa. Lokhu kusho ukuthi empeleni awasetshenziswanga, ngoba amamodeli ahlukene I-Event Consistency, Strong Consistency (mhlawumbe).

Kwenzelweni konke lokhu? Ngaphezu kwalokho, ithiyori ye-CAP ngendlela efakazelwe ngayo ayisebenzi futhi ayivamisile ukusetshenziswa. Ngendlela yetiyori, ngandlela thize ikhawulela yonke into. Kuvela isimiso esithile esilungile ngokunembile, kodwa ngokuvamile asikafakazelwa.

Ukungaguquguquki kwe-Causal kuyimodeli enamandla kakhulu

Okwenzekayo manje ukuthi ungathola zonke izinto ezintathu: Ukuvumelana, Ukutholakala usebenzisa ama-Partitions. Ikakhulukazi, ukungaguquguquki kwe-Causal kuyimodeli eqinile yokuvumelana, esasebenza phambi kwama-Partitions (amakhefu kunethiwekhi). Yingakho ithakazelisa kakhulu, yingakho sayithatha.

I-HighLoad++, u-Mikhail Tyulenev (i-MongoDB): Ukungaguquguquki kwe-Causal: kusuka kumbono kuya ekusebenzeni

Okokuqala, yenza lula umsebenzi wabathuthukisi bohlelo lokusebenza. Ikakhulukazi, ukuba khona kokusekelwa okukhulu okuvela kuseva: lapho wonke amarekhodi avela ngaphakathi kweklayenti elilodwa aqinisekisiwe ukuthi azofika ngokulandelana okufanayo kwelinye iklayenti. Okwesibili, imelana nama-partitions.

Ikhishi langaphakathi le-MongoDB

Sikhumbule ukuthi yisidlo sasemini, sithuthele ekhishini. Ngizokutshela mayelana nemodeli yesistimu, okungukuthi, ukuthi iyini i-MongoDB yalabo abezwa ngesizindalwazi esinjalo okokuqala.

I-HighLoad++, u-Mikhail Tyulenev (i-MongoDB): Ukungaguquguquki kwe-Causal: kusuka kumbono kuya ekusebenzeni

I-HighLoad++, u-Mikhail Tyulenev (i-MongoDB): Ukungaguquguquki kwe-Causal: kusuka kumbono kuya ekusebenzeni

I-MongoDB (ngemuva kwalokhu ebizwa ngokuthi “i-MongoDB”) iwuhlelo olusabalalisiwe olusekela ukukala okuvundlile, okungukuthi, ukwahlukanisa; futhi ngaphakathi kwe-shard ngayinye iphinde isekele ukuphindaphinda kwedatha, okungukuthi, ukuphindaphinda.

I-Shading ku-MongoDB (hhayi i-database ehlobene) yenza ukulinganisa okuzenzakalelayo, okungukuthi, iqoqo ngalinye lamadokhumenti (noma "ithebula" ngokwedatha yobudlelwane) lihlukaniswe libe yizicucu, futhi iseva iwahambisa ngokuzenzakalelayo phakathi kwama-shards.

I-Query Router, esabalalisa izicelo, yeklayenti iklayenti elithile esebenza ngalo. Iyazi kakade ukuthi ikuphi nokuthi iyiphi idatha etholakalayo futhi iqondisa zonke izicelo ku-shard efanele.

Elinye iphuzu elibalulekile: I-MongoDB iyinkosi eyodwa. KunePrimary eyodwa - ingathatha amarekhodi asekela okhiye ewaqukethe. Awukwazi ukubhala i-Multi-master.

Senze ukukhishwa okungu-4.2 - izinto ezintsha ezithakazelisayo zivele lapho. Ikakhulukazi, bafaka i-Lucene - search - okungukuthi i-java esebenzisekayo ngqo ku-Mongo, futhi lapho kwaba nokwenzeka ukusesha nge-Lucene, njengase-Elastica.

Futhi benze umkhiqizo omusha - Amashadi, uyatholakala naku-Atlas (Ifu likaMongo uqobo). BaneSigaba Samahhala - ungadlala ngaso sonke isikhathi. Ngiwathande kakhulu Amashadi - ukubona idatha, kunembile kakhulu.

Izithako Ukuvumelana kwembangela

Ngibale izihloko ezingaba ngu-230 ezishicilelwe ngalesi sihloko - ezivela ku-Leslie Lampert. Manje kusukela enkumbulweni yami ngizokudlulisela kini ezinye izingxenye zalezi zinto.

I-HighLoad++, u-Mikhail Tyulenev (i-MongoDB): Ukungaguquguquki kwe-Causal: kusuka kumbono kuya ekusebenzeni

Konke kwaqala ngendatshana kaLeslie Lampert, eyabhalwa ngeminyaka yawo-1970. Njengoba ubona, olunye ucwaningo ngalesi sihloko lusaqhubeka. Manje i-Causal consistency ithola intshisekelo mayelana nokuthuthukiswa kwamasistimu asabalalisiwe.

Izithibelo

Imiphi imingcele ekhona? Lokhu empeleni kungenye yamaphuzu asemqoka, ngoba imikhawulo ebekwa uhlelo lokukhiqiza ihluke kakhulu emigomeni ekhona ezihlokweni zemfundo. Zivame ukuzenzela.

I-HighLoad++, u-Mikhail Tyulenev (i-MongoDB): Ukungaguquguquki kwe-Causal: kusuka kumbono kuya ekusebenzeni

  • Okokuqala, i-“MongoDB” iyingcweti eyodwa, njengoba bese ngishilo (lokhu kwenza kube lula kakhulu).
  • Sikholelwa ukuthi uhlelo kufanele lusekele cishe amashadi ayizinkulungwane eziyi-10. Asikwazi ukwenza izinqumo zezakhiwo ezizokhawulela ngokusobala leli nani.
  • Sinefu, kodwa sicabanga ukuthi umuntu kufanele abe nethuba lapho elanda kanambambili, eqhuba kukhompuyutha yakhe ephathekayo, futhi yonke into isebenza kahle.
  • Sicabanga okuthile okungavamile ukucatshangwa Ucwaningo: amaklayenti angaphandle angenza noma yini ayifunayo. I-MongoDB ingumthombo ovulekile. Ngakho-ke, amaklayenti angahlakanipha futhi athukuthele - angafuna ukuphula yonke into. Sicabanga ukuthi ama-Byzantine Feilors angase aqale.
  • Kumakhasimende angaphandle angaphandle kwe-perimeter, kunomkhawulo obalulekile: uma lesi sici sikhutshaziwe, akukho ukuwohloka kokusebenza okufanele kubonwe.
  • Elinye iphuzu ngokuvamile elimelene nezemfundo: ukuhambisana kwezinguqulo zangaphambilini nezizayo. Abashayeli abadala kufanele basekele izibuyekezo ezintsha, futhi isizindalwazi kufanele sisekele abashayeli abadala.

Ngokuvamile, konke lokhu kubeka imingcele.

Izingxenye zokungaguquguquki okuyimbangela

Manje ngizokhuluma ngezinye zezingxenye. Uma sicabangela ukuvumelana kwe-Causal ngokuvamile, singakhetha amabhulokhi. Sikhethe emisebenzini eyingxenye yebhulokhi ethile: Ukulandelela Ukuthembela, ukukhetha amawashi, ukuthi lawawashi angavunyelaniswa kanjani, nokuthi siqinisekisa kanjani ukuphepha - lolu uhlaka oluqinile lwalokho engizokhuluma ngakho:

I-HighLoad++, u-Mikhail Tyulenev (i-MongoDB): Ukungaguquguquki kwe-Causal: kusuka kumbono kuya ekusebenzeni

Ukulandela Ukuncika Okugcwele

Kungani idingeka? Ukuze uma idatha iphindwaphindwa, irekhodi ngalinye, ushintsho lwedatha ngalunye luqukethe ulwazi olumayelana nokuthi luncike kuluphi ushintsho. Ushintsho lokuqala nolungenangqondo yilapho umlayezo ngamunye oqukethe irekhodi uqukethe ulwazi olumayelana nemilayezo edlule:

I-HighLoad++, u-Mikhail Tyulenev (i-MongoDB): Ukungaguquguquki kwe-Causal: kusuka kumbono kuya ekusebenzeni

Kulesi sibonelo, inombolo ekubakaki abagoqekile izinombolo zokurekhoda. Kwesinye isikhathi lawa marekhodi anamanani adluliswa esewonke, kwesinye isikhathi ezinye izinguqulo ziyadluliswa. Okubalulekile ukuthi ushintsho ngalunye luqukethe ulwazi mayelana nolwedlule (ngokusobala luthwala konke lokhu ngaphakathi kwalo).

Kungani sinqume ukungasebenzisi le ndlela (ukulandelela ngokugcwele)? Ngokusobala, ngoba le ndlela ayinakwenzeka: noma yiluphi ushintsho kunethiwekhi yokuxhumana nabantu luncike kuzo zonke izinguquko zangaphambilini kuleyo nethiwekhi yokuxhumana nabantu, ukudlulisa, ukusho, i-Facebook noma i-VKontakte kuzo zonke isibuyekezo. Noma kunjalo, kunocwaningo oluningi mayelana ne-Full Dependency Tracking - lawa amanethiwekhi angaphambi kokuxhumana nabantu; kwezinye izimo iyasebenza ngempela.

Ukulandela Ukuncika Okusobala

Okulandelayo kunomkhawulo. Ukudluliselwa kolwazi nakho kucatshangelwa lapha, kodwa kuphela lokho okuncike ngokusobala. Yini encike kulokho, njengomthetho, okunqunywa yiSicelo. Uma idatha iphindwaphindwa, umbuzo ubuyisela izimpendulo kuphela lapho ukuncika kwangaphambilini kwanelisiwe, okungukuthi, kubonisiwe. Lona umnyombo wendlela i-Causal consistency isebenza ngayo.

I-HighLoad++, u-Mikhail Tyulenev (i-MongoDB): Ukungaguquguquki kwe-Causal: kusuka kumbono kuya ekusebenzeni

Ubona ukuthi irekhodi 5 lincike kumarekhodi 1, 2, 3, 4 - ngokufanele, ulinda ngaphambi kokuba iklayenti lifinyelele izinguquko ezenziwe isinqumo sokufinyelela sikaPenny, lapho zonke izinguquko zangaphambili sezivele zidlulile ku-database.

Lokhu akusiphathi kahle nathi, ngoba kusenolwazi oluningi, futhi kuzobambezela izinto. Kukhona enye indlela...

Iwashi leLamport

Badala kakhulu. Iwashi leLamport lisho ukuthi lezi zincika ziyagoqwa zibe umsebenzi we-scalar, obizwa nge-Lamport Clock.

Umsebenzi we-scalar inombolo ethile engabonakali. Ngokuvamile kubizwa isikhathi esinengqondo. Ngomcimbi ngamunye, lesi sibali siyanda. I-Counter, eyaziwa okwamanje ngenqubo, ithumela umlayezo ngamunye. Kuyacaca ukuthi izinqubo zingaba ngaphandle kokuvumelanisa, zingaba nezikhathi ezihluke ngokuphelele. Noma kunjalo, uhlelo ngandlela thize lulinganisa iwashi nemiyalezo enjalo. Kwenzekani kulesi simo?

Ngihlukanise kabili lelo shadi elikhulu ukuze ngikwenze kucace: Abangane bangahlala endaweni eyodwa, equkethe ucezu lweqoqo, futhi Okuphakelayo kungahlala kwenye indawo, equkethe ucezu lwaleli qoqo. Ingabe kuyacaca ukuthi bangaphuma kanjani emgqeni? Okuphakelayo kokuqala kuzothi: “Kuphindwaphindwa”, bese kuba Abangane. Uma isistimu inganikezi uhlobo oluthile lwesiqinisekiso sokuthi Okuphakelayo ngeke kuboniswe kuze kube yilapho ukuncika kwabangane eqoqweni labangane kulethwa, khona-ke sizoba ncamashi nesimo engisishilo.

Uyabona ukuthi isikhathi sokubala kokuthi Okuphakelayo sikhuphuka ngokunengqondo:

I-HighLoad++, u-Mikhail Tyulenev (i-MongoDB): Ukungaguquguquki kwe-Causal: kusuka kumbono kuya ekusebenzeni

Ngakho-ke impahla eyinhloko yale Clock ye-Lamport kanye nokungaguquguquki kwe-Causal (echazwe nge-Lamport Clock) yilena: uma sinemicimbi A no-B, futhi Umcimbi B uncike Emcimbini A*, kuzolandela ukuthi i-LogicalTime Yomcimbi A ingaphansi I-LogicalTime evela kumcimbi B.

* Kwesinye isikhathi babuye bathi u-A wenzeke ngaphambi kuka-B, okungukuthi, u-A kwenzekile ngaphambi kuka-B - lokhu ubudlelwano obuthile obuhlela ngokwengxenye yonke isethi yezenzakalo ezenzeka ngokujwayelekile.

Okuphambene akulungile. Lokhu empeleni kungenye yezinkinga ezinkulu ze-Lamport Clock - ukuhleleka okuyingxenye. Kunomqondo omayelana nezenzakalo ezenzeka ngesikhathi esisodwa, okungukuthi, izehlakalo lapho (A kwenzeka ngaphambi kuka-B) noma (A kwenzeka ngaphambi kuka-B). Isibonelo kungaba ukungezwa okuhambisanayo kukaLeonard komunye umuntu njengomngane (hhayi ngisho noLeonard, kodwa uSheldon, isibonelo).
Lesi yisakhiwo esivame ukusetshenziswa lapho usebenza namawashi e-Lamport: abheka ngokuqondile umsebenzi futhi kusukela kulokhu baphetha ngokuthi mhlawumbe lezi zenzakalo zincike. Ngoba indlela eyodwa iyiqiniso: uma i-LogicalTime A ingaphansi kwe-LogicalTime B, khona-ke u-B akanakwenzeka ngaphambi kuka-A; futhi uma ngaphezulu, mhlawumbe.

Iwashi leVector

Ukuthuthukiswa okunengqondo kwewashi le-Lamport yi-Vector Clock. Zihlukile ngokuthi i-node ngayinye ekhona lapha iqukethe iwashi layo elihlukile, futhi idluliselwa njenge-vector.
Kulokhu, ubona ukuthi inkomba enguziro ye-vector inesibopho Sokuphakelayo, futhi inkomba yokuqala ye-vector ingeyabangane (nganye yalezi zindawo). Futhi manje bazokwanda: inkomba ye-zero ethi "Okuphakelayo" iyanda lapho kubhalwa - 1, 2, 3:

I-HighLoad++, u-Mikhail Tyulenev (i-MongoDB): Ukungaguquguquki kwe-Causal: kusuka kumbono kuya ekusebenzeni

Kungani i-Vector Clock ingcono? Ngoba zikuvumela ukuthi uthole ukuthi yiziphi izehlakalo ezenzeka ngesikhathi esisodwa nokuthi zenzeka nini ezindaweni ezahlukene. Lokhu kubaluleke kakhulu ohlelweni lokwabelana njenge-MongoDB. Kodwa-ke, asizange sikukhethe lokhu, nakuba kuyinto enhle kakhulu, futhi isebenza kahle, futhi mhlawumbe ingasifanela...

Uma sinezinhlamvu eziyizinkulungwane ezingu-10, asikwazi ukudlulisa izingxenye eziyizinkulungwane ezingu-10, ngisho noma sizicindezela noma siza nokunye okunye - ukukhokhelwa kusazoba kuncane izikhathi eziningana kunomthamo wale vector yonke. Ngakho-ke, sibambe izinhliziyo namazinyo, sayiyeka le ndlela futhi sadlulela kwenye.

I-Spanner TrueTime. Iwashi le-athomu

Ngathi kuzoba nendaba ngoSpanner. Lokhu kuyinto epholile, kusukela ekhulwini lama-XNUMX: amawashi e-athomu, ukuvumelanisa kwe-GPS.

Uyini umbono? I-"Spanner" iwuhlelo lwe-Google olusanda kutholakala ngisho nakubantu (bangeze i-SQL kuyo). Okwenziwayo ngakunye kukhona kunesitembu sesikhathi esithile. Njengoba isikhathi sivunyelanisiwe*, umcimbi ngamunye ungabelwa isikhathi esithile - amawashi e-athomu anesikhathi sokulinda, ngemva kwalokho kuqinisekiswe isikhathi esihlukile ukuthi "ukwenzeka".

I-HighLoad++, u-Mikhail Tyulenev (i-MongoDB): Ukungaguquguquki kwe-Causal: kusuka kumbono kuya ekusebenzeni

Ngakho, ngokumane ubhalele ku-database futhi ulinde isikhathi esithile, i-Serializability yomcimbi iqinisekiswa ngokuzenzakalelayo. Banemodeli enamandla kakhulu yokuvumelana engacatshangwa ngokomthetho - Ukuvumelana Kwangaphandle.

* Lena inkinga enkulu ngamawashi e-Lampart - awalokothi avumelanise kumasistimu asabalalisiwe. Bangakwazi ukwehlukana; ngisho nange-NTP, abasasebenzi kahle kakhulu. "I-Spanner" inewashi le-athomu nokuvumelanisa, kubonakala sengathi, ama-microseconds.

Kungani singakhethanga? Asicabangi ukuthi abasebenzisi bethu banewashi le-athomu eyakhelwe ngaphakathi. Uma zivela, zakhiwe kuyo yonke ikhompyutha ephathekayo, kuzoba nohlobo oluthile lokuvumelanisa kwe-GPS okuhle kakhulu - khona-ke yebo... Kodwa okwamanje okungcono kakhulu okungenzeka yi-Amazon, Iziteshi Eziyisisekelo - zabashisekeli... Ngakho sisebenzise amanye amawashi. .

Iwashi leHybrid

Lokhu empeleni yilokho okuphawula ku-MongoDB lapho uqinisekisa ukungaguquguquki kwe-Causal. Ziyingxubevange kanjani? I-Hybrid iyinani le-scalar, kodwa inezingxenye ezimbili:

I-HighLoad++, u-Mikhail Tyulenev (i-MongoDB): Ukungaguquguquki kwe-Causal: kusuka kumbono kuya ekusebenzeni

  • Eyokuqala inkathi ye-Unix (kangakhi imizuzwana edlule kusukela “ekuqaleni komhlaba wekhompyutha”).
  • Okwesibili ukukhuphuka okuthile, futhi i-32-bit int engasayiniwe.

Yilokho kuphela, empeleni. Kukhona le ndlela yokwenza: ingxenye ebhekele isikhathi ivunyelaniswa newashi ngaso sonke isikhathi; ngaso sonke isikhathi uma kwenzeka isibuyekezo, le ngxenye ivunyelaniswa newashi futhi kuvele ukuthi isikhathi sihlala silungile kakhulu noma sincane, futhi ukukhuphuka kukuvumela ukuthi uhlukanise phakathi kwemicimbi eyenzeka ngesikhathi esifanayo.

Kungani lokhu kubalulekile ku-MongoDB? Ngoba ikuvumela ukuthi wenze uhlobo oluthile lwezindawo zokudlela eziyisipele ngesikhathi esithile, okungukuthi, umcimbi ukhonjwa ngesikhathi. Lokhu kubalulekile lapho izenzakalo ezithile zidingeka; Kusizindalwazi, izehlakalo izinguquko kusizindalwazi ezenzeke ngezikhathi ezithile.

Ngizokutshela isizathu esibaluleke kakhulu kuwe kuphela (sicela, ungatsheli muntu)! Senze lokhu ngoba yilokhu okuhleliwe, idatha enenkomba ibukeka ku-MongoDB OpLog. I-OpLog iyisakhiwo sedatha esiqukethe zonke izinguquko kusizindalwazi: ziqala ziye ku-OpLog, bese zisetshenziswa kuSitoreji ngokwaso esimweni lapho kuwusuku oluphindiwe noma i-shard.

Lesi kwakuyisizathu esiyinhloko. Noma kunjalo, kunezidingo ezisebenzayo zokuthuthukisa isizindalwazi, okusho ukuthi kufanele kube lula - ikhodi encane, izinto ezimbalwa eziphukile ezidinga ukubhalwa kabusha futhi zihlolwe. Iqiniso lokuthi ama-oplog ethu afakwe amawashi ayi-hybrid lisize kakhulu futhi lasivumela ukuthi senze ukukhetha okufanele. Kwakhokha ngempela futhi ngandlela thile kwasebenza ngomlingo ku-prototype yokuqala. Kwakupholile kakhulu!

Ukuvumelanisa iwashi

Kunezindlela ezimbalwa zokuvumelanisa ezichazwe ezincwadini zesayensi. Ngikhuluma ngokuvumelanisa uma sinezinhlamvu ezimbili ezihlukene. Uma kukhona isethi ye-replica eyodwa, asikho isidingo sanoma yikuphi ukuvumelanisa: lokhu "inkosi eyodwa"; sine-OpLog, lapho zonke izinguquko ziwela khona - kulokhu, yonke into isivele i-odwe ngokulandelana ku-"Oplog" ngokwayo. Kodwa uma sinezinhlamvu ezimbili ezihlukene, ukuvumelanisa isikhathi kubalulekile lapha. Yilapho iwashi le-vector lisize khona okwengeziwe! Kodwa asinazo.

I-HighLoad++, u-Mikhail Tyulenev (i-MongoDB): Ukungaguquguquki kwe-Causal: kusuka kumbono kuya ekusebenzeni

Owesibili ufanelekile - lokhu "Ukushaya kwenhliziyo". Kungenzeka ukushintshanisa amasignali athile avela njalo ngeyunithi yesikhathi. Kodwa ukushaya kwenhliziyo kuhamba kancane, asikwazi ukunikeza iklayenti lethu ukubambezeleka.

Isikhathi sangempela siyinto emangalisayo. Kodwa, futhi, lokhu cishe kuyikusasa ... Nakuba kungenziwa kakade ku-Atlas, kukhona kakade ama-synchronizers esikhathi "e-Amazon" asheshayo. Kodwa ngeke itholakale kuwo wonke umuntu.

Ukuhleba yilapho yonke imilayezo ihlanganisa nesikhathi. Lokhu cishe yilokho esikusebenzisayo. Wonke umlayezo phakathi kwama-node, umshayeli, i-data node router, yonke into ye-MongoDB iwuhlobo oluthile lwesici, ingxenye yedathabhesi equkethe iwashi eligijima. Zinencazelo yesikhathi se-hybrid yonke indawo, sisakazwa. 64 amabhithi? Lokhu kuvumela, lokhu kungenzeka.

Kusebenza kanjani konke ndawonye?

Lapha ngibheka isethi eyodwa yokukopisha ukwenza kube lula kancane. Kukhona Primary neSecondary. Eyesibili yenza ukuphindaphinda futhi ayivumelaniswa ngokuphelele nePrimary.

Ukufakwa kwenzeka kokuthi "Primery" ngevelu ethile yesikhathi. Lokhu kufaka kwandisa isibalo sangaphakathi ngo-11, uma lokhu kuwumkhawulo. Noma izohlola amanani wewashi futhi ivumelanise newashi uma amanani ewashi emakhulu. Lokhu kukuvumela ukuthi uhlele ngesikhathi.

Ngemva kokwenza ukuqopha, kwenzeka umzuzu obalulekile. Iwashi liku-"MongoDB" futhi linyuswa kuphela uma libhalela ku-"Oplog". Lesi yisenzakalo esishintsha isimo sohlelo. Kuzo zonke iziqephu zendatshana zakudala, umcimbi uthathwa njengelapho umlayezo ufika endaweni ethile: umlayezo usufikile, okusho ukuthi uhlelo lushintshe isimo salo.

Lokhu kungenxa yokuthi ngesikhathi socwaningo akucaci kahle ukuthi lo mlayezo uzohunyushwa kanjani. Siyazi ngokuqinisekile ukuthi uma ingaboniswa ku-“Oplog”, ngeke ihunyushwe nganoma iyiphi indlela, futhi uguquko esimweni sohlelo luwukufakwa kuphela kokuthi “Oplog”. Lokhu kwenza yonke into ibe lula kithi: imodeli iyenza ibe lula, futhi isivumela ukuthi siyihlele ngaphakathi kwesethi eyodwa yokukopisha, nezinye izinto eziningi eziwusizo.

Inani eselivele libhalelwe ku-“Oplog” liyabuyiswa - siyazi ukuthi i-“Oplog” isivele iqukethe leli nani, futhi isikhathi sayo singu-12. Manje, ake sithi, ukufunda kuqala kwenye i-node (Okwesibili), futhi kudlulisa i-afterClusterTime in. umlayezo. Uthi: "Ngidinga konke okwenzeka okungenani ngemva kwe-12 noma phakathi neshumi nambili" (bheka isithombe esingenhla).

Lokhu kubizwa ngokuthi i-Causal a consistent (CAT). Kunomqondo onjalo emcabangweni wokuthi lesi isiqeshana sesikhathi, esivumelana ngokwaso. Kulokhu, singasho ukuthi lesi yisimo sesistimu esabonwa ngesikhathi se-12.

Manje akusekho lutho lapha, ngoba lolu hlobo lulingisa isimo lapho udinga iSekondari ukuze uphindaphinde idatha evela kuPrimary. Uyalinda... Futhi manje idatha isifikile - ubuyisela lawa magugu.

I-HighLoad++, u-Mikhail Tyulenev (i-MongoDB): Ukungaguquguquki kwe-Causal: kusuka kumbono kuya ekusebenzeni

Lokho kuhle kakhulu ukuthi konke kusebenza kanjani. Cishe.

Kusho ukuthini ukuthi "cishe"? Ake sicabange ukuthi kukhona umuntu oye wafunda futhi waqonda ukuthi konke lokhu kusebenza kanjani. Ngabona ukuthi njalo uma i-ClusterTime yenzeka, ibuyekeza iwashi elinengqondo langaphakathi, bese okulandelayo kukhuphuka ngelinye. Lo msebenzi uthatha imigqa engama-20. Ake sithi lo muntu udlulisa inombolo enkulu yamabhithi angu-64, khipha eyodwa.

Kungani "susa okukodwa"? Ngenxa yokuthi iwashi langaphakathi lizofakwa esikhundleni saleli nani (ngokusobala, leli yilona elikhulu kunawo wonke futhi likhulu kunesikhathi samanje), khona-ke kuzoba nokufakwayo kokuthi “Oplog”, futhi iwashi lizokwengezwa ngenye iyunithi - futhi selizovele lifakwe. kube inani eliphakeme (kukhona wonke amayunithi, akukho ndawo ongaya kuyo) , ama-ints angasafani).

Kuyacaca ukuthi emva kwalokhu uhlelo luba lula ukungakwazi ukufinyeleleka nganoma yini. Ingathululwa kuphela futhi ihlanzwe - umsebenzi omningi wezandla. Ukutholakala okuphelele:

I-HighLoad++, u-Mikhail Tyulenev (i-MongoDB): Ukungaguquguquki kwe-Causal: kusuka kumbono kuya ekusebenzeni

Ngaphezu kwalokho, uma lokhu kuphindwa kwenye indawo, khona-ke lonke iqoqo livele liwele phansi. Isimo esingamukeleki neze ukuthi noma ubani angakwazi ukusihlela ngokushesha futhi kalula! Ngakho-ke, lesi sikhathi sicabangele njengesinye esibaluleke kakhulu. Indlela yokuvimbela?

Indlela yethu ukusayina i-clusterTime

Lena yindlela edluliselwa ngayo kumlayezo (ngaphambi kombhalo oluhlaza okwesibhakabhaka). Kodwa futhi saqala ukwenza isiginesha (umbhalo oluhlaza okwesibhakabhaka):

I-HighLoad++, u-Mikhail Tyulenev (i-MongoDB): Ukungaguquguquki kwe-Causal: kusuka kumbono kuya ekusebenzeni

Isiginesha ikhiqizwa ukhiye ogcinwe ngaphakathi kwesizindalwazi, ngaphakathi kwendawo evikelekile; ngokwayo ikhiqizwa futhi ibuyekezwe (abasebenzisi ababoni lutho ngayo). I-hashi iyakhiqizwa, futhi umlayezo ngamunye uyasayinwa uma udaliwe futhi uqinisekiswa lapho wamukelwe.
Umbuzo cishe uphakama ezingqondweni zabantu: "Lokhu kuzibambezela kangakanani izinto?" Ngikutshelile ukuthi kufanele isebenze ngokushesha, ikakhulukazi uma lesi sici singekho.

Kusho ukuthini ukusebenzisa i-Causal consistency kulesi simo? Lokhu okokukhombisa ipharamitha ye-afterClusterTime. Ngaphandle kwalokhu, kuzomane kudlule amanani noma kunjalo. Ukuhleba, kusukela kunguqulo 3.6, kusebenza njalo.

Uma sishiya isizukulwane esiqhubekayo samasignesha, izobambezela isistimu ngisho nalapho singekho isici, esingahlangabezani nezindlela zethu nezimfuneko. Senzeni-ke?

Kwenze ngokushesha!

Kuyinto elula, kodwa iqhinga liyathakazelisa - ngizokwabelana ngalo, mhlawumbe othile uzoba nesithakazelo.
Sine-hashi egcina idatha esayiniwe. Yonke idatha idlula kunqolobane. Inqolobane ayisayini isikhathi esiqondile, kodwa i-Range. Lapho inani elithile lifika, sikhiqiza Ububanzi, sifihla amabhithi angu-16 okugcina, futhi sisayina leli nani:

I-HighLoad++, u-Mikhail Tyulenev (i-MongoDB): Ukungaguquguquki kwe-Causal: kusuka kumbono kuya ekusebenzeni

Ngokuthola isignesha enjalo, sisheshisa uhlelo (ngokuqhathaniswa) izikhathi eziyizinkulungwane ezingu-65. Kusebenza kahle kakhulu: ngenkathi senza izivivinyo, isikhathi empeleni sehle ngezikhathi eziyizinkulungwane eziyi-10 lapho sinesibuyekezo esilandelanayo. Kuyacaca ukuthi uma bengaboni ngaso linye akusebenzi. Kodwa ezimweni eziningi ezingokoqobo iyasebenza. Inhlanganisela yesiginesha Yobubanzi kanye nesiginesha kuxazulule inkinga yezokuphepha.

Yini esiyifundile?

Izifundo esizitholile kulokhu:

  • Kudingeka sifunde izinto zokwakha, izindaba, izindatshana, ngoba sinezinto eziningi ezithakazelisayo. Uma sisebenzela isici esithile (ikakhulukazi manje, lapho senza imisebenzi, njll.), sidinga ukufunda futhi siqonde. Kuthatha isikhathi, kodwa empeleni kuwusizo kakhulu ngoba kwenza kucace ukuthi sikuphi. Kubonakala sengathi asiqhamuki nento entsha - sivele sathatha izithako.

    Ngokuvamile, kukhona umehluko othile ekucabangeni lapho kunengqungquthela yezemfundo (isibonelo, uSigmon) - wonke umuntu ugxile emibonweni emisha. Yini entsha nge-algorithm yethu? Akukho okusha ikakhulukazi lapha. Okusha kunalokho kulele endleleni esihlanganisa ngayo izindlela ezikhona ndawonye. Ngakho-ke, into yokuqala ukufunda ama-classics, ukuqala ngoLampart.

  • Ekukhiqizeni, izidingo zihluke ngokuphelele. Nginesiqiniseko sokuthi iningi lenu alibhekene nesizindalwazi “esiyindilinga” endaweni engenalutho engabonakali, kodwa kunezinto ezijwayelekile, zangempela ezinezinkinga ngokutholakala, ukubambezeleka kanye nokubekezelela amaphutha.
  • Into yokugcina ukuthi kwakudingeka sibheke imibono ehlukene futhi sihlanganise izihloko eziningana ezihluke ngokuphelele zibe indlela eyodwa, ndawonye. Umqondo mayelana nokusayina, isibonelo, ngokuvamile wawuvela esihlokweni esasicabangela i-Paxos protocol, okungezona eze-Byzantine Failors ngaphakathi kwe-protocol yokugunyazwa, ye-Byzantine - ngaphandle kwe-protocol yokugunyazwa ... Ngokuvamile, yilokhu kanye esikwenzayo. wagcina enza.

    Akukho okusha lapha! Kodwa ngokushesha nje lapho sixuba konke ndawonye ... Kufana nokuthi iresiphi yesaladi ye-Olivier iyimbudane, ngoba amaqanda, imayonnaise namakhukhamba asevele asungulwa ... Kumayelana nendaba efanayo.

I-HighLoad++, u-Mikhail Tyulenev (i-MongoDB): Ukungaguquguquki kwe-Causal: kusuka kumbono kuya ekusebenzeni

Ngizoqeda ngalokhu. Ngiyabonga!

Imibuzo yakho

Umbuzo ovela ezithamelini (lapha kuzobizwa ngokuthi B): – Ngiyabonga, Mikhail, ngombiko! Isihloko mayelana nesikhathi siyathakazelisa. Usebenzisa Ukuhleba. Bathe wonke umuntu unesikhathi sakhe, wonke umuntu uyasazi isikhathi sangakubo. Njengoba ngikuqonda, sinomshayeli - kungaba namaklayenti amaningi anabashayeli, abahleli bemibuzo futhi, ama-shards futhi... Futhi yini isistimu yehlela kuyo uma ngokuzumayo siba nokungafani: othile unquma ukuthi umzuzu phambili, kukhona ngemuva komzuzu? Sizophelelaphi?

MT: - Umbuzo omkhulu ngempela! Bengifuna ukukhuluma ngamashadi nje. Uma ngiwuqonda kahle umbuzo, sinesimo esilandelayo: kukhona u-shard 1 no-shard 2, ukufunda kwenzeka kulezi zinhlamvu ezimbili - kunokungafani, azihlanganisi, ngoba isikhathi abasaziyo sihlukile, ikakhulukazi isikhathi ezikhona kuma-oplogs.
Ake sithi u-shard 1 wenze amarekhodi ayisigidi, u-shard 2 akenzanga lutho, futhi isicelo safika kuma-shards amabili. Futhi eyokuqala ine-afterClusterTime engaphezu kwesigidi. Esimweni esinjalo, njengoba ngichazile, i-shard 2 ayisoze yaphendula nhlobo.

B: - Bengifuna ukwazi ukuthi bavumelanisa kanjani futhi bakhethe isikhathi esisodwa esinengqondo?

MT: - Kulula kakhulu ukuvumelanisa. UShard, uma i-afterClusterTime iza kuye futhi engasitholi isikhathi kokuthi “Oplog”, iqala ukungagunyazwa. Okungukuthi, uphakamisa isikhathi sakhe ngezandla zakhe kulokhu kubaluleka. Lokhu kusho ukuthi ayinayo imicimbi efana nalesi sicelo. Udala lo mcimbi ngokuzenzela futhi ngaleyo ndlela uba Causal Consistent.

B: - Kuthiwani uma ngemva kwalokhu ezinye izehlakalo ziza kuye ezilahlekile endaweni ethile kunethiwekhi?

MT: - I-Shard iklanywe ngendlela yokuthi ngeke iphinde ibuye, ngoba iyinkosi eyodwa. Uma esebhalisile, ngeke beze, kodwa bazofika kamuva. Angeke kwenzeke ukuthi into ibambeke endaweni ethile, angabhali, bese kufika lezi zenzakalo - bese kuphulwa ukungaguquguquki kwe-Causal. Uma engabhalanga bonke balandele (uzobalinda).

I-HighLoad++, u-Mikhail Tyulenev (i-MongoDB): Ukungaguquguquki kwe-Causal: kusuka kumbono kuya ekusebenzeni

B: – Nginemibuzo eminingana mayelana nolayini. Ukungaguquguquki kwembangela kucabanga ukuthi kunomugqa othize wezenzo okudingeka zenziwe. Kwenzekani uma elinye lamaphakheji ethu linyamalala? Nakhu kufika owe-10, we-11... owe-12 unyamalele, futhi bonke abanye balindele ukuba kwenzeke. Futhi kungazelelwe imoto yethu yafa, asikwazi ukwenza lutho. Ingabe bukhona ubude obukhulu bomugqa onqwabelanayo ngaphambi kokubulawa? Ikuphi ukwehluleka okubulalayo okwenzekayo lapho kulahleka noma yisiphi isimo? Ngaphezu kwalokho, uma sibhala phansi ukuthi kukhona isimo sangaphambilini, kufanele siqale ngandlela-thile kuso? Kodwa abazange bamdudule!

MT: - Futhi umbuzo omkhulu! Senzani? I-MongoDB inomqondo wokuthi ikhoramu iyabhala, isibalo siyafundwa. Kukuziphi izimo lapho umlayezo ungalahleka? Uma ukubhala kungeyona ikhoramu noma uma ukufunda kungeyona ikhoramu (uhlobo oluthile lukadoti lunganamathela).
Ngokuphathelene nokungaguquguquki kwe-Causal, kwenziwa ukuhlolwa okukhulu kokuhlola, umphumela wawo ukuthi esimweni lapho kubhalwa futhi kufundwa kungeyona i-quorum, ukwephulwa kokuvumelana kwe-Causal kwenzeka. Impela okushoyo!

Iseluleko sethu: sebenzisa okungenani ukufundwa kwekhoramu uma usebenzisa i-Causal consistency. Kulesi simo, akukho lutho oluzolahleka, ngisho noma irekhodi lekhoramu lilahlekile... Lesi yisimo se-orthogonal: uma umsebenzisi engafuni ukuthi idatha ilahleke, udinga ukusebenzisa irekhodi lekhoramu. Ukuvumelana kwembangela akuqinisekisi ukuqina. Ukuqina kuqinisekiswa ngokuphindaphinda kanye nemishini ehambisana nokuphindaphinda.

B: - Uma sidala isibonelo esenza i-sharding kithi (hhayi inkosi, kodwa isigqila, ngokulandelana), sincike esikhathini se-Unix somshini wayo noma ngesikhathi "senkosi"; Ingabe ivumelanisa okokuqala noma ngezikhathi ezithile?

MT: - Ngizokucacisa manje. I-Shard (okungukuthi i-horizontal partition) - kuhlala kunePrimary lapho. Futhi i-shard ingaba ne "master" futhi ingaba ne-replicas. Kodwa i-shard ihlale isekela ukurekhoda, ngoba kufanele isekele isizinda esithile (i-shard ine-Primary).

B: - Ngakho-ke konke kuncike kuphela "kunkosi"? Ingabe isikhathi esiyinhloko sisetshenziswa njalo?

MT: - Yebo. Ungathi ngomfanekiso: iwashi liyamaka lapho kungena "master", ku-"Oplog" kwenzeka.

B: - Sineklayenti elixhumayo futhi alidingi ukwazi lutho ngesikhathi?

MT: - Awudingi ukwazi lutho nhlobo! Uma sikhuluma ngendlela esebenza ngayo kuklayenti: lapho iklayenti lifuna ukusebenzisa i-Causal consistency, lidinga ukuvula iseshini. Manje yonke into isikhona: okwenziwayo kuseshini, futhi uthole amalungelo... Iseshini iwukuhlelwa kwezenzakalo ezinengqondo ezenzeka neklayenti.

Uma evula lesi seshini futhi esho lapho ukuthi ufuna Ukuvumelana kwe-Causal (uma iseshini isekela ukuhambisana kwe-Causal ngokuzenzakalelayo), yonke into isebenza ngokuzenzakalelayo. Umshayeli uyasikhumbula lesi sikhathi futhi ayandise uma ethola umlayezo omusha. Ikhumbula ukuthi iyiphi impendulo eyedlule ebuyisiwe kusuka kuseva ebuyise idatha. Isicelo esilandelayo sizoqukatha i-afterCluster("isikhathi esikhulu kunalesi").

Iklayenti akudingeki lazi lutho ngokuphelele! Lokhu kufiphele ngokuphelele kuye. Uma abantu besebenzisa lezi zici, yini abangayenza? Okokuqala, ungakwazi ukufunda okusesekondari ngokuphepha: ungabhalela ePrimary futhi ufunde kwabanye abafundi abaphindaphindekayo ngokwendawo futhi uqiniseke ukuthi kuyasebenza. Ngesikhathi esifanayo, amaseshini arekhodwa kokuthi Primary angadluliselwa ngisho naseSecondary, okusho ukuthi awukwazi ukusebenzisa iseshini eyodwa, kodwa eziningana.

B: - Ungqimba olusha lwesayensi Yekhompiyutha - i-CRDT (Izinhlobo Zedatha Ephindaphindwayo Ezingenayo Ingxabano) - ihlobene kakhulu nesihloko sokungaguquguquki Kokwenzeka. Uke wacabanga ukuhlanganisa lezi zinhlobo zedatha kusizindalwazi futhi ungathini ngakho?

MT: - Umbuzo omuhle! I-CRDT yenza umqondo ngokubhala izingxabano: ku-MongoDB, inkosi eyodwa.

B: - Nginombuzo ovela kuma-devops. Ezweni langempela, kunezimo ezinjalo zamaJesuitical lapho Ukuhluleka kweByzantium kwenzeka, futhi abantu ababi ngaphakathi komngcele ovikelwe baqala ukungena ku-protocol, bathumele amaphakheji obuciko ngendlela ekhethekile?

I-HighLoad++, u-Mikhail Tyulenev (i-MongoDB): Ukungaguquguquki kwe-Causal: kusuka kumbono kuya ekusebenzeni

MT: - Abantu ababi ngaphakathi komjikelezo bafana nehhashi leThrojani! Abantu ababi ngaphakathi kwepherimitha bangenza izinto eziningi ezimbi.

B: – Kusobala ukuthi ukushiya, uma sikhuluma nje, imbobo esiphakelini lapho ungabeka khona izu lezindlovu futhi ubhidlize lonke iqoqo unomphela... Kuzothatha isikhathi ukululama mathupha... Lokhu, ukukubeka kahle, kungukuthi okungalungile. Ngakolunye uhlangothi, lokhu kuyathakazelisa: empilweni yangempela, ekusebenzeni, kunezimo lapho ukuhlaselwa kwangaphakathi okufanayo ngokwemvelo kwenzeka?

MT: - Njengoba ngingavamile ukuhlangana nokuphulwa kwezokuphepha empilweni yangempela, angikwazi ukusho uma kwenzeka. Kodwa uma sikhuluma ngefilosofi yokuthuthukiswa, sicabanga kanje: sine-perimeter ehlinzeka abafana abenza ukuphepha - lokhu kuyinqaba, udonga; futhi ngaphakathi kwepherimitha ungenza noma yini oyifunayo. Kuyacaca ukuthi kukhona abasebenzisi abanekhono lokubuka kuphela, futhi kukhona abasebenzisi abanekhono lokusula uhla lwemibhalo.

Ngokuya ngamalungelo, umonakalo ongenziwa abasebenzisi kungaba igundane, noma kungaba indlovu. Kuyacaca ukuthi umsebenzisi onamalungelo aphelele angenza noma yini nhlobo. Umsebenzisi onamalungelo alinganiselwe angabangela ukulimala okuncane kakhulu. Ikakhulukazi, ayikwazi ukuphula uhlelo.

B: - Ku-perimeter evikelekile, othile uzame ukudala izivumelwano ezingalindelekile zeseva ukuze abhubhise ngokuphelele iseva, futhi uma unenhlanhla, iqoqo lonke ... Ingabe like likuthole lokho "kuhle"?

MT: "Angikaze ngizwe ngezinto ezinjalo." Iqiniso lokuthi ungakwazi ukuphahlazeka iseva ngale ndlela akuyona imfihlo. Ukuhluleka ngaphakathi, ukusuka kuphrothokholi, ungumsebenzisi ogunyaziwe ongabhala into enjengale emlayezo ... Eqinisweni, akunakwenzeka, ngoba kusazoqinisekiswa. Kungenzeka ukukhubaza lokhu kuqinisekisa kubasebenzisi abangakufuni - ke leyo inkinga yabo; bona, ngokulingana, babhubhisa izindonga ngokwabo futhi ungakwazi ukusunduza indlovu lapho, ezonyathela ... Kodwa ngokuvamile, ungakwazi ukugqoka njengomlungisi, woza uyikhiphe!

B: – Siyabonga ngombiko. Sergey (Yandex). Kukhona okungaguquki ku-Mong okukhawulela inani lamalungu okuvota ku-Replica Set, futhi lokhu okungaguquki kungu-7 (isikhombisa). Kungani lokhu kuhlala njalo? Kungani lokhu kungelona uhlobo oluthile lwepharamitha?

MT: - SineReplica Sets enamanodi angama-40. Kuhlale kuneningi. Angazi ukuthi iyiphi inguqulo...

B: - Kusethi ye-Replica ungaphatha amalungu angavoti, kodwa kunamalungu avotelayo afinyelela ku-7. Singasinda kanjani lapho kuvalwe khona kuleli cala uma i-Replica Set yethu isatshalaliswa ezikhungweni zedatha ezi-3? Isikhungo esisodwa sedatha singacisha kalula, kanti omunye umshini ungawa.

MT: – Lokhu sekungaphezu kancane kobubanzi bombiko. Lona umbuzo ojwayelekile. Mhlawumbe ngingakutshela ngakho kamuva.

I-HighLoad++, u-Mikhail Tyulenev (i-MongoDB): Ukungaguquguquki kwe-Causal: kusuka kumbono kuya ekusebenzeni

Ezinye izikhangiso 🙂

Siyabonga ngokuhlala nathi. Uyazithanda izindatshana zethu? Ufuna ukubona okuqukethwe okuthakaselayo okwengeziwe? Sisekele ngokufaka i-oda noma ngokuncoma kubangani, I-VPS yefu yonjiniyela kusuka ku-$4.99, i-analogue ehlukile yamaseva ezinga lokungena, esungulwe yithi ngenxa yakho: Lonke iqiniso nge-VPS (KVM) E5-2697 v3 (6 Cores) 10GB DDR4 480GB SSD 1Gbps kusuka ku-$19 noma ukwabelana ngeseva? (itholakala nge-RAID1 kanye ne-RAID10, kufika kuma-cores angu-24 kuze kufike ku-40GB DDR4).

I-Dell R730xd 2x ishibhile esikhungweni sedatha se-Equinix Tier IV e-Amsterdam? Lapha kuphela 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TV kusukela ku-$199 eNetherlands! I-Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - isuka ku-$99! Funda mayelana Indlela yokwakha ingqalasizinda corp. ikilasi ngokusetshenziswa kwe-Dell R730xd E5-2650 v4 amaseva abiza u-9000 euros ngepeni?

Source: www.habr.com

Engeza amazwana