HighLoad++, Mikhail Tyulenev (MongoDB): Causal consistency: ukusuka kwithiyori ukuya kwipractice

Inkomfa elandelayo ye-HighLoad ++ iya kubanjwa ngo-Aprili 6 no-7, 2020 eSt.
Iinkcukacha kunye namatikiti ikhonkco. HighLoad ++ eSiberia 2019. Iholo "Krasnoyarsk". NgoJuni 25, 12:00. Ezi kunye intetho.

HighLoad++, Mikhail Tyulenev (MongoDB): Causal consistency: ukusuka kwithiyori ukuya kwipractice

Kwenzeka ukuba iimfuno ezisebenzayo ziphikisana nethiyori, apho imiba ebalulekileyo kwimveliso yorhwebo ayithathelwa ngqalelo. Le ntetho ibonisa inkqubo yokukhetha kunye nokudibanisa iindlela ezahlukeneyo ekudaleni i-Causal consistency components ngokusekelwe kuphando lwezemfundo olusekelwe kwiimfuno zemveliso yorhwebo. Abaphulaphuli baya kufunda malunga neendlela ezikhoyo zethiyori kwiiwotshi ezinengqiqo, ukulandelela ukuxhomekeka, ukhuseleko lwenkqubo, ulungelelwaniso lwewotshi, kwaye kutheni iMongoDB yahlala kwizisombululo ezithile.

UMikhail Tyulenev (emva koku kuthiwa nguMT): -Ndiza kuthetha ngeCausal consistency - eli linqaku esisebenze kulo kwiMongoDB. Ndisebenza kwiqela leenkqubo ezisasazwayo, sikwenzile malunga neminyaka emibini edlulileyo.

HighLoad++, Mikhail Tyulenev (MongoDB): Causal consistency: ukusuka kwithiyori ukuya kwipractice

Kule nkqubo, kuye kwafuneka ndiziqhelanise nophando oluninzi lwezemfundo, kuba eli nqaku lifundwe kakuhle. Kuye kwavela ukuba akukho nqaku elinye elingena kwinto efunekayo kwisiseko sedatha yemveliso ngenxa yeemfuno ezicacileyo ezinokuthi zikhoyo nakwesiphi na isicelo semveliso.

Ndiza kuthetha malunga nendlela thina, njengabathengi boPhando lwezemfundo, silungiselela into evela kuyo esinokuyibonisa kubasebenzisi bethu njengesitya esenziwe esele sikulungele kwaye sikhuselekile ukusisebenzisa.

Ukungqinelana kwe-Causal. Makhe sichaze iikhonsepthi

Ukuqala, ndifuna ukuthetha ngokubanzi ukuba yintoni i-Causal consistency. Kukho abalinganiswa ababini - uLeonard noPenny (uthotho lweTV "Ithiyori enkulu yeBang"):

HighLoad++, Mikhail Tyulenev (MongoDB): Causal consistency: ukusuka kwithiyori ukuya kwipractice

Masithi uPenny useYurophu kwaye uLeonard ufuna ukumenzela itheko elingalindelekanga. Kwaye akukho nto ibhetele acinga ngayo kunokumlahla kuluhlu lwabahlobo bakhe, ethumela bonke abahlobo bakhe uhlaziyo kwisondlo: β€œMasenze uPenny onwabe!” (useYurophu, ngelixa elele, akayiboni yonke le nto kwaye akayiboni, kuba akakho). Ekugqibeleni, uyawucima lo myalezo, uyawucima kwi-Feed kwaye ubuyisele ukufikelela ukuze angaboni nto kwaye kungabikho hlazo.
Konke oku kulungile kwaye kulungile, kodwa masicinge ukuba inkqubo isasazwa kwaye izinto zihamba kakubi. Ngokomzekelo, kunokwenzeka ukuba ukuthintela ukufikelela kukaPenny kwenzeka emva kokuba le post ibonakala, ukuba iziganeko azihambelani nesizathu kunye nesiphumo. Ngokwenyani, lo ngumzekelo xa kufuneka i-Causal consistency ukuze kwenziwe umsebenzi weshishini (kule meko).

Ngapha koko, ezi ziipropathi ezingeyonto encinci zedathabheyisi - bambalwa kakhulu abantu abazixhasayo. Masiqhubele phambili kwiimodeli.

Iimodeli zokuhambelana

Yintoni kanye kanye imodeli yokuhambelana koovimba beenkcukacha? Ezi zezinye zeziqinisekiso ukuba inkqubo esasazwayo inika malunga nokuba yeyiphi idatha umthengi angayifumana kwaye ngokuphi na ukulandelelana.

Ngokomgaqo, zonke iimodeli zokuhambelana zibilisa ngendlela efanayo inkqubo esasazwa ngayo kwisistim eqhuba, umzekelo, kwi-node enye kwi-laptop. Kwaye yile ndlela ifana nenkqubo esebenza kumawaka eeNodes ezisasazwa nge-geo kwilaptop, apho zonke ezi zakhiwo zenziwa ngokuzenzekelayo ngokomgaqo.

Ngoko ke, iimodeli zokuhambelana zisetyenziswa kuphela kwiinkqubo ezisasazwayo. Zonke iisistim ebezikho ngaphambili kwaye bezisebenza kwisikali esifanayo esithe nkqo azizange zibe nazo iingxaki ezinjalo. Kwakukho i-Buffer Cache enye, kwaye yonke into yayihlala ifundwa kuyo.

Umzekelo Owomeleleyo

Ngokwenyani, imodeli yokuqala yomelele (okanye umgca wokunyuka, njengoko ubizwa njalo). Lo ngumzekelo wokuhambelana oqinisekisa ukuba yonke inguqu, xa iqinisekisiwe ukuba yenzekile, ibonakala kubo bonke abasebenzisi benkqubo.

Oku kudala ulungelelwaniso lwehlabathi lwazo zonke iziganeko ezikwisiseko sedatha. Le yipropati eyomeleleyo yokuhambelana, kwaye ibiza kakhulu. Nangona kunjalo, ixhaswa kakuhle kakhulu. Ibiza kakhulu kwaye icotha - ayifane isetyenziswe. Oku kubizwa ngokuba nobuchule bokunyuka.

Kukho enye, ipropathi eyomeleleyo exhaswa kwi-Spanner - ebizwa ngokuba yi-External Consistency. Siza kuthetha ngayo kamva.

Isizathu

Elandelayo yiCausal, yile nto kanye bendithetha ngayo. Kukho amanqanaba angaphantsi angaphezulu phakathi kwe-Strong kunye ne-Causal endingayi kuthetha ngayo, kodwa zonke zibilisa kwi-Causal. Lo ngumzekelo obalulekileyo kuba unamandla kunawo onke amamodeli, ukuhambelana okunamandla phambi kwenethiwekhi okanye izahlulo.

Iimbangela ngokwenene yimeko apho iziganeko zidityaniswa nobudlelwane besizathu kunye nesiphumo. Rhoqo zibonwa njenge Funda ngamalungelo akho ngokwembono yomxhasi. Ukuba umxhasi uye waqaphela amaxabiso athile, akakwazi ukubona amaxabiso awayekho kwixesha elidlulileyo. Sele eqala ukubona ufundo lwesimaphambili. Konke kuhla kwinto enye.
Iimbangela njengemodeli ehambelanayo kukulandelelana kweziganeko kumncedisi, apho iziganeko ezivela kubo bonke abathengi zibonwa ngokulandelelana okufanayo. Kule meko, uLeonard noPenny.

Okwangoku

Imodeli yesithathu yi-Event Consistency. Yiloo nto ngokupheleleyo zonke iinkqubo ezisasaziweyo ezixhasayo, imodeli encinci enengqiqo konke konke. Kuthetha oku kulandelayo: xa sinolunye utshintsho kwidatha, ngexesha elithile ziyahambelana.

Ngelo xesha akathethi nto, ngaphandle koko uya kuguqukela kwi-External Consistency - iya kuba libali elahluke ngokupheleleyo. Nangona kunjalo, le yimodeli ethandwa kakhulu, eyona ixhaphakileyo. Ngokungagqibekanga, bonke abasebenzisi beenkqubo ezisasazwayo basebenzisa i-Event Consistency.

Ndifuna ukunika imizekelo yothelekiso:

HighLoad++, Mikhail Tyulenev (MongoDB): Causal consistency: ukusuka kwithiyori ukuya kwipractice

Zithetha ntoni ezi tolo?

  • Ukubambezeleka. Njengoko amandla okuhambelana kwandisa, kuba mkhulu ngenxa yezizathu ezicacileyo: kufuneka wenze iirekhodi ezininzi, ufumane isiqinisekiso kubo bonke ababuki zindwendwe kunye node abathatha inxaxheba kwiqela lokuba idatha sele ikhona. Ngokufanelekileyo, uQhagamshelwano loQoqosho lunempendulo ekhawulezayo, kuba apho, njengomthetho, unokuzibophelela kwinkumbulo kwaye oku kuya kuthi, ngokwemigaqo, kube ngokwaneleyo.
  • Ukufumaneka. Ukuba sikuqonda oku njengokukwazi kwenkqubo ukuphendula phambi kokuphazamiseka kwenethiwekhi, ulwahlulo, okanye uhlobo oluthile lokusilela, ukunyamezelana kwempazamo kuyanda njengoko imodeli yokuhambelana iyancipha, kuba kwanele kuthi ukuba umkhosi omnye uhlala kwaye ngexesha elifanayo. ixesha livelisa idatha ethile. I-Event Consistency ayiqinisekisi nantoni na malunga nedatha konke konke - inokuba nantoni na.
  • Iimpazamo. Ngexesha elifanayo, ngokuqinisekileyo, inani le-anomalies liyanda. Kwi-Strong Consistency iphantse ingabikho kwaphela, kodwa kwi-Event Consistency inokuba yiyo nantoni na. Umbuzo uvelayo: kutheni abantu bekhetha i-Event Consistency ukuba iqulethe izinto ezingaqhelekanga? Impendulo kukuba iimodeli ze-Event Consistency ziyasebenza kwaye kukho izinto ezingaqhelekanga, umzekelo, ngexesha elifutshane; kuyenzeka ukusebenzisa iwizadi ukufunda kwaye ngaphezulu okanye ngaphantsi ukufunda idatha ehambelanayo; Ngokuqhelekileyo kunokwenzeka ukusebenzisa iimodeli eziqinileyo zokuhambelana. Ngokwenza oku kuyasebenza, kwaye kaninzi inani lee-anomalies lilinganiselwe ngexesha.

Ithiyori yeCAP

Xa ubona amagama ukungaguquguquki, ukufumaneka - yintoni ethi qatha engqondweni yakho? Injalo loo nto - ithiyori yeCAP! Ngoku ndifuna ukugxotha intsomi ... Akundim - nguMartin Kleppmann, owabhala inqaku elimangalisayo, incwadi emangalisayo.

HighLoad++, Mikhail Tyulenev (MongoDB): Causal consistency: ukusuka kwithiyori ukuya kwipractice

Ithiyori yeCAP ngumgaqo owaqulunqwa ngeminyaka yoo-2000 othi Consistency, Availability, Partitions: thatha naziphi na ezimbini, kwaye awukwazi ukukhetha ezintathu. Yayingumgaqo othile. Kwangqinwa njengethiyori kwiminyaka embalwa kamva nguGilbert noLynch. Emva koko oku kwaqala ukusetyenziswa njenge-mantra - iinkqubo zaqala ukwahlula kwi-CA, CP, AP kunye nokunye.

Le theorem ingqinwe ngokwenene kwezi meko zilandelayo ... Okokuqala, Ukufumaneka kwakuqwalaselwa njengexabiso eliqhubekayo ukusuka kwi-zero ukuya kumakhulu (0 - inkqubo "ifile", i-100 - iphendula ngokukhawuleza; sisetyenziselwa ukuyiqwalasela ngolo hlobo) , kodwa njengepropathi ye-algorithm, eqinisekisa ukuba kuyo yonke imisebenzi yayo ibuyisela idatha.

Akukho lizwi malunga nexesha lokuphendula konke konke! Kukho i-algorithm ebuyisela idatha emva kweminyaka eyi-100 - i-algorithm emangalisayo ekhoyo, eyinxalenye ye-theorem ye-CAP.
Okwesibini: i-theorem ibonakaliswe utshintsho kumaxabiso eqhosha elifanayo, nangona olu tshintsho lunokutshintshwa. Oku kuthetha ukuba eneneni azisetyenziswanga, kuba iimodeli zahlukile zokuQinisekisa okuQinisekisayo, ukuQinisekisa okunamandla (mhlawumbi).

Yeyantoni yonke le nto? Ngaphezu koko, ithiyori ye-CAP ngendlela engqinwe ngayo ayisebenzi kwaye ayifane isetyenziswe. Kwimo yethiyori, ngandlela thile ikhawulela yonke into. Kuvela umgaqo othile ochanekileyo nge-intuitively, kodwa ngokubanzi awukabonakali.

I-Causal consistency yeyona modeli inamandla

Kwenzeka ntoni ngoku kukuba ungazifumana zontathu izinto: Ukungaguquguquki, ukufumaneka usebenzisa izahlulo. Ngokukodwa, i-Causal consistency yimodeli yokuqina eqinile, esasebenza phambi kweZahlulo (ikhefu kwinethiwekhi). Yiyo loo nto inomdla ongaka, kwaye yiyo loo nto siye sayithabatha.

HighLoad++, Mikhail Tyulenev (MongoDB): Causal consistency: ukusuka kwithiyori ukuya kwipractice

Okokuqala, yenza lula umsebenzi wabaphuhlisi besicelo. Ngokukodwa, ubukho benkxaso enkulu evela kumncedisi: xa zonke iirekhodi ezenzeka ngaphakathi komnye umxhasi ziqinisekisiwe ukuba zifike ngokulandelelana okufanayo komnye umxhasi. Okwesibini, iyamelana nezahlulo.

Ikhitshi langaphakathi leMongoDB

Sikhumbula ukuba kukutya kwasemini, safudukela ekhitshini. Ndiza kukuxelela malunga nemodeli yenkqubo, oko kukuthi, yintoni i-MongoDB yabo bavayo malunga nesiseko sedatha okokuqala.

HighLoad++, Mikhail Tyulenev (MongoDB): Causal consistency: ukusuka kwithiyori ukuya kwipractice

HighLoad++, Mikhail Tyulenev (MongoDB): Causal consistency: ukusuka kwithiyori ukuya kwipractice

I-MongoDB (emva koku kubhekiselwa kuyo njenge "MongoDB") yinkqubo esasazwayo exhasa ukulinganisa okuthe tye, oko kukuthi, i-sharding; kwaye ngaphakathi kwi-shard nganye ikwaxhasa ukuphindaphindwa kwedatha, oko kukuthi, ukuphindaphinda.

Ukwahlula kwi-MongoDB (kungekhona i-database yobudlelwane) yenza ukulinganisa okuzenzekelayo, oko kukuthi, iqoqo ngalinye lamaxwebhu (okanye "itafile" ngokweenkcukacha zobudlelwane) ihlukaniswe ngamaqhekeza, kwaye umncedisi ubahambisa ngokuzenzekelayo phakathi kwee-shards.

I-Query Router, ehambisa izicelo, kumxhasi ngumxhasi othile esebenza ngayo. Sele iyazi ukuba iphi kwaye yeyiphi idatha ekhoyo kwaye iqondisa zonke izicelo kwi-shard echanekileyo.

Enye inqaku elibalulekileyo: I-MongoDB yinkosi enye. Kukho iPrayimari enye - inokuthatha iirekhodi ezixhasa izitshixo eziquletheyo. Awukwazi ukubhala ii-Multi-master write.

Senze ukukhululwa kwe-4.2 - izinto ezintsha ezinomdla zavela apho. Ngokukodwa, bafaka iLucene - uphendlo - olubizwa ngokuba yi-java ephunyeziweyo ngqo kwiMongo, kwaye apho kuye kwenzeka ukwenza uphando ngeLucene, ngokufanayo nase-Elastica.

Kwaye benza imveliso entsha - iitshathi, ikwafumaneka kwi-Atlas (Mongo's Cloud's Cloud). BaneTier yaMahla- ungadlala ngeenxa zonke ngayo. Ndizithande kakhulu iitshathi-imbonakalo yedatha, enomdla kakhulu.

Izithako Ukuhambelana kwe-Causal

Ndabala malunga namanqaku angama-230 apapashiweyo kwesi sihloko - ukusuka kuLeslie Lampert. Ngoku kwinkumbulo yam ndiza kudlulisela kuwe ezinye iindawo zezi zixhobo.

HighLoad++, Mikhail Tyulenev (MongoDB): Causal consistency: ukusuka kwithiyori ukuya kwipractice

Konke kwaqala ngenqaku likaLeslie Lampert, elabhalwa ngeminyaka yoo-1970. Njengoko ubona, uphando oluthile malunga nesi sihloko lusaqhubeka. Ngoku i-Causal consistency ifumana umdla ngokunxulumene nophuhliso lweenkqubo ezisasazwayo.

Zi thintelo

Yiyiphi imiqobo ekhoyo? Oku ngokwenene yenye yeengongoma eziphambili, kuba izithintelo ezibekwa yinkqubo yokuvelisa zihluke kakhulu kwizithintelo ezikhoyo kumanqaku emfundo. Zidla ngokuba zezenziwe.

HighLoad++, Mikhail Tyulenev (MongoDB): Causal consistency: ukusuka kwithiyori ukuya kwipractice

  • Okokuqala, "iMongoDB" yinkosi enye, njengoko besenditshilo (oku kwenza lula kakhulu).
  • Sikholelwa ukuba inkqubo kufuneka ixhase malunga neeshadi ezili-10 lamawaka. Asikwazi ukwenza naziphi na izigqibo zokwakha eziya kunciphisa ngokucacileyo eli xabiso.
  • Sinelifu, kodwa sicinga ukuba umntu kufuneka abe nethuba xa ekhuphela i-binary, eyiqhuba kwi-laptop yakhe, kwaye yonke into isebenza kakuhle.
  • Sicinga into yokuba uPhando alufane lucinge: abathengi bangaphandle banokwenza nantoni na abayifunayo. I-MongoDB ngumthombo ovulekileyo. Ngako oko, abathengi banokuba bahlakaniphile kwaye banomsindo - banokufuna ukwaphula yonke into. Sicinga ukuba i-Byzantine Feilors inokuvela.
  • Kubathengi bangaphandle abangaphandle kwe-perimeter, kukho umda obalulekileyo: ukuba olu phawu luvaliwe, akukho ukuthotywa kokusebenza kufuneka kubonwe.
  • Enye ingongoma ngokuqhelekileyo ichasene nemfundo: ukuhambelana kweenguqulelo zangaphambili kunye nezizayo. Abaqhubi abadala kufuneka baxhase ukuhlaziywa okutsha, kwaye i-database kufuneka ixhase abaqhubi abadala.

Ngokubanzi, konke oku kubeka izithintelo.

Amacandelo e-Causal consistency

Ngoku ndiza kuthetha ngamanye amacandelo. Ukuba siqwalasela i-Causal consistency ngokubanzi, sinokukhetha iibhloko. Sikhethe kwimisebenzi eyeyebloko ethile: UkuKhangela ngokuXhomekeka, ukukhetha iiwotshi, ukuba ezi wotshi zinokudityaniswa njani enye kwenye, kunye nendlela esiqinisekisa ngayo ukhuseleko- olu ludweliso olubi lwento endiza kuthetha ngayo:

HighLoad++, Mikhail Tyulenev (MongoDB): Causal consistency: ukusuka kwithiyori ukuya kwipractice

Ukulandela ukuxhomekeka ngokupheleleyo

Kutheni ifuneka? Ukuze xa idatha iphinda iphindwe, irekhodi nganye, utshintsho ngalunye lwedatha lunolwazi malunga noluphi utshintsho oluxhomekeke kulo. Utshintsho lokuqala nolungenangqondo kuxa umyalezo ngamnye oqulethe irekhodi unolwazi malunga nemiyalezo yangaphambili:

HighLoad++, Mikhail Tyulenev (MongoDB): Causal consistency: ukusuka kwithiyori ukuya kwipractice

Kulo mzekelo, inani elikwizibiyeli ezigobileyo ngamanani erekhodi. Ngamanye amaxesha ezi rekhodi ezinamaxabiso zigqithiselwa ngokupheleleyo, ngamanye amaxesha ezinye iinguqulelo zigqithiselwa. Eyona nto ibalulekileyo kukuba utshintsho ngalunye luqulethe ulwazi malunga nolo lwangaphambili (ngokucacileyo luthwala konke oku ngaphakathi kwalo).

Kutheni le nto sigqibe kwelokuba singayisebenzisi le ndlela (ukulandelela ngokupheleleyo)? Ngokucacileyo, kuba le ndlela ayinakwenzeka: naluphi na utshintsho kwinethiwekhi yoluntu luxhomekeke kuzo zonke iinguqu zangaphambili kuloo intanethi yentlalontle, ukudlulisa, ukutsho, i-Facebook okanye i-VKontakte kulo lonke uhlaziyo. Nangona kunjalo, kukho uphando oluninzi kuMkhondo wokuXhomekeka ngokuPheleleyo - ezi ziinethiwekhi zangaphambili zentlalo; kwezinye iimeko iyasebenza ngokwenene.

Ukulandela ukuxhomekeka okucacileyo

Okulandelayo kulinganiselwe ngakumbi. Ukudluliselwa kolwazi kukwaqwalaselwa apha, kodwa kuphela oko kuxhomekeke ngokucacileyo. Yintoni exhomekeke kwinto, njengomthetho, inqunywe yiSicelo. Xa idatha iphindwa, umbuzo ubuyisela kuphela iimpendulo xa ukuxhomekeka kwangaphambili kuye kwaneliswa, oko kukuthi, kubonisiwe. Lo ngundoqo wendlela i-Causal consistency isebenza ngayo.

HighLoad++, Mikhail Tyulenev (MongoDB): Causal consistency: ukusuka kwithiyori ukuya kwipractice

Uyabona ukuba irekhodi ye-5 ixhomekeke kwiirekhodi 1, 2, 3, 4 - ngokufanelekileyo, ulinda ngaphambi kokuba umxhasi afumane ukufikelela kwiinguqu ezenziwe ngesigqibo sokufikelela kukaPenny, xa zonke iinguqu zangaphambili sele zidlulile kwi-database.

Oku akusifanelanga nathi, kuba kusekho ulwazi oluninzi, kwaye luya kucothisa izinto. Kukho enye indlela...

Iwashi yeLamport

Badala kakhulu. IClock yeLamport ithetha ukuba ezi zixhomekeko zigoqwe zibe ngumsebenzi we-scalar, obizwa ngokuba yiLamport Clock.

Umsebenzi we-scalar linani elithile elingabonakaliyo. Lidla ngokubizwa ngokuba lixesha elisengqiqweni. Ngesiganeko ngasinye, le counter iyanda. I-Counter, eyaziwa ngoku kwinkqubo, ithumela umyalezo ngamnye. Kucacile ukuba iinkqubo zinokungahambelani, zinokuba namaxesha ahluke ngokupheleleyo. Nangona kunjalo, inkqubo ngandlel 'ithile ilungelelanisa iwotshi nolo myalezo. Kwenzeka ntoni kule meko?

Ndawahlula kabini loo shard enkulu ukuze icace: Abahlobo banokuhlala kwindawo enye, equlethe iqhekeza lengqokelela, kwaye i-Feed inokuhlala kwenye indawo, equlethe isiqwenga sale ngqokelela. Ngaba icacile indlela abanokuthi baphume ngayo emgceni? Ukutya kokuqala kuya kuthi: "Iphindaphindwe", kwaye emva koko Abahlobo. Ukuba inkqubo ayiboneleli uhlobo oluthile lwesiqinisekiso sokuba i-Feed ayiyi kuboniswa de ukuxhomekeka kwaBahlobo kwingqokelela yaBahlobo kuhanjiswe, ngoko siya kuba nemeko kanye endiyikhankanyileyo.

Uyabona ukuba ixesha lokubala kwi-Feed linyuka ngokufanelekileyo:

HighLoad++, Mikhail Tyulenev (MongoDB): Causal consistency: ukusuka kwithiyori ukuya kwipractice

Ke ipropathi ephambili yale Clock yeLamport kunye neCausal consistency (echazwe ngeLamport Clock) yile: ukuba sineziganeko A kunye neB, kwaye iSigigaba B sixhomekeke kwiSigigaba A *, ngoko kulandela ukuba iLogicalTime yeSigigaba A ingaphantsi kune. LogicalTime ukusuka kwisiganeko B.

* Ngamanye amaxesha bakwathi u-A wenzeke ngaphambi kuka-B, oko kukuthi, u-A wenzeke ngaphambi kuka-B - olu lunxulumano oluthile oluyalela ngokuyinxenye iseti yeziganeko ezenzeke ngokubanzi.

Okuchasayo akuchanekanga. Le yenye yezinto ezingalunganga eziphambili ze-Lamport Clock - i-oda ye-partial. Kukho uluvo malunga neziganeko zangaxeshanye, oko kukuthi, iziganeko apho kungazange (A kwenzeke ngaphambi kuka-B) okanye (A kwenzeke ngaphambi kuka-B). Umzekelo uya kuba wongezwa ngokuhambelana kukaLeonard komnye umntu njengomhlobo (kungekhona noLeonard, kodwa uSheldon, umzekelo).
Le yipropati esetyenziswa rhoqo xa isebenza kunye neewotshi zeLamport: zijonge ngokukodwa kumsebenzi kwaye zisuka kule nto zigqiba ukuba mhlawumbi ezi ziganeko zixhomekeke. Kuba enye indlela iyinyani: ukuba iLogicalTime A ingaphantsi kuneLogicalTime B, ke u-B akanakwenzeka phambi kuka-A; kwaye ukuba ngaphezulu, mhlawumbi.

Ikloko yeVector

Uphuhliso olunengqiqo lwewotshi yeLamport yiVector Clock. Ziyahluka kuba indawo nganye elapha iqulathe iwotshi yayo eyahlukileyo, kwaye ihanjiswa njengevektha.
Kule meko, ubona ukuba isalathisi se-zeroth se-vector sinoxanduva loKutya, kwaye isalathisi sokuqala se-vector ye-Friends (nganye kwezi nodi). Kwaye ngoku baya kwanda: isalathiso se-zero se "Isondlo" siyanda xa kubhalwa - 1, 2, 3:

HighLoad++, Mikhail Tyulenev (MongoDB): Causal consistency: ukusuka kwithiyori ukuya kwipractice

Kutheni iVector Clock ingcono? Kuba zikuvumela ukuba ufumanise ukuba zeziphi iziganeko ngaxeshanye kwaye xa zisenzeka kwiindawo ezahlukeneyo. Oku kubaluleke kakhulu kwinkqubo yokwahlula njengeMongoDB. Nangona kunjalo, asizange sikhethe oku, nangona iyinto emangalisayo, kwaye isebenza kakuhle, kwaye iya kusifanela ...

Ukuba sinama-shards angama-10 amawaka, asikwazi ukudlulisa amacandelo angama-10 amawaka, nokuba siyayicinezela okanye siza nenye into - umthwalo wokuhlawula uya kuba mncinci ngamaxesha amaninzi kunomthamo wale vector yonke. Ke ngoko, sibambe iintliziyo namazinyo ethu, sayiyeka le ndlela saza sadlulela kwenye.

ISpanner TrueTime. Iwotshi yeathom

Ndathi kuzobakho ibali ngoSpanner. Le yinto epholileyo, ngqo kwinkulungwane yama-XNUMX: iiwotshi zeathom, ungqamaniso lweGPS.

Ithini ingcamango? "I-Spanner" yinkqubo kaGoogle esandula ukufumaneka ebantwini (bongeze iSQL kuyo). Intengiselwano nganye apho inesitampu sexesha. Kuba ixesha lilungelelanisiwe*, isiganeko ngasinye sinokwabelwa ixesha elithile - iiwotshi zeathom zinexesha lokulinda, emva koko kuqinisekiswe ixesha elahlukileyo "lokwenzeka".

HighLoad++, Mikhail Tyulenev (MongoDB): Causal consistency: ukusuka kwithiyori ukuya kwipractice

Ngaloo ndlela, ngokubhala ngokulula kwisiseko sedatha kwaye ulinde ixesha elithile, iSeriliizability yesiganeko iqinisekiswa ngokuzenzekelayo. Baneyona modeli inamandla yeConsistency enokuthi icingelwe ngokomgaqo-kukuNxibelelana kwangaphandle.

* Le yeyona ngxaki iphambili ngeewotshi zeLampart - azikhe zilungelelaniswe kwiinkqubo ezisasaziweyo. Ziyakwazi ukwahluka; nokuba nge-NTP, ayikasebenzi kakuhle. "I-Spanner" inewotshi ye-athomu kunye nokuvumelanisa, kubonakala ngathi, i-microseconds.

Kutheni singakhethanga? Asicingi ukuba abasebenzisi bethu banewotshi yeathom eyakhelweyo. Xa zivela, zakhiwe kuyo yonke ilaptop, kuya kubakho uhlobo oluthile lolungelelwaniso olupholileyo lwe-GPS - ke ewe... Kodwa okwangoku eyona nto inokwenzeka yiAmazon, iZitishi ezisisiseko - kubashicileli ... Ke sasebenzisa ezinye iiwotshi. .

Ikloko yeHybrid

Le yeyona nto iphawulayo kwiMongoDB xa uqinisekisa ukuhambelana kweCausal. Zingumxube njani? IHybrid lixabiso le-scalar, kodwa linamacandelo amabini:

HighLoad++, Mikhail Tyulenev (MongoDB): Causal consistency: ukusuka kwithiyori ukuya kwipractice

  • Eyokuqala yi-Unix epoch (zingaphi imizuzwana edlulileyo ukususela "ekuqaleni kwehlabathi lekhompyutha").
  • Okwesibini kukwandiswa okuthile, kwakhona i-32-bit engasayinwanga int.

Yiloo nto kuphela, eneneni. Kukho le ndlela: inxalenye ejongene nexesha ihambelana newotshi lonke ixesha; ngalo lonke ixesha uhlaziyo lwenzeka, le nxalenye idityaniswa newotshi kwaye kuvela ukuba ixesha lihlala lilungile okanye lincinci, kwaye ulwando lukuvumela ukuba ukwazi ukwahlula phakathi kweziganeko ezenzeke ngexesha elinye.

Kutheni oku kubalulekile kwiMongoDB? Kuba ikuvumela ukuba wenze uhlobo oluthile lweendawo zokutyela zokulondoloza ngexesha elithile, oko kukuthi, isiganeko sisalathiswa ngexesha. Oku kubalulekile xa iziganeko ezithile zifuneka; Kwisiseko sedatha, iziganeko lutshintsho kuvimba okwenzekileyo ngamaxesha athile.

Ndiza kukuxelela esona sizathu sibalulekileyo kuwe kuphela (nceda, ungaxeleli mntu)! Senze oku kuba yile nto icwangcisiweyo, idatha enesalathiso ibonakala ngathi kwiMongoDB OpLog. I-OpLog iyisakhiwo sedatha equlethe ngokupheleleyo zonke iinguqu kwisiseko sedatha: ziqala ukuya kwi-OpLog, kwaye zisetyenziswe kwi-Storeji ngokwayo kwimeko xa iphinda iphindwe okanye i-shard.

Esi yayisisizathu esiphambili. Sekunjalo, kukho iimfuneko ezisebenzayo zokuphuhlisa isiseko sedatha, okuthetha ukuba kufuneka kube lula - ikhowudi encinci, njengezinto ezimbalwa ezaphukileyo ezifuna ukubhalwa kwakhona kwaye zivavanywe. Inyani yokuba ii-ologs zethu zazikhonjiswa ziiwotshi ezixutyiweyo zincede kakhulu kwaye zasivumela ukuba senze ukhetho olufanelekileyo. Ihlawule ngokwenene kwaye ngandlela thile yasebenza ngomlingo kwiprototype yokuqala. Kwakupholile kakhulu!

Ungqamaniso lwewotshi

Kukho iindlela ezininzi zongqamaniso ezichazwe kuncwadi lwenzululwazi. Ndithetha ngongqamaniso xa sinamaqhekeza amabini ahlukeneyo. Ukuba kukho ireplica iseti enye, akukho mfuneko yalo naluphi na ungqamaniso: le "yinkosi enye"; Sine-OpLog, apho zonke iinguqu ziwela khona - kule meko, yonke into sele ilandelelaniswe ngokulandelelanayo kwi "Oplog" ngokwayo. Kodwa ukuba sineeshadi ezimbini ezahlukeneyo, ungqamaniso lwexesha lubalulekile apha. Kulapho iwotshi ye-vector yanceda khona ngakumbi! Kodwa asinazo.

HighLoad++, Mikhail Tyulenev (MongoDB): Causal consistency: ukusuka kwithiyori ukuya kwipractice

Eyesibini ifanelekile - le "i-Heartbeats". Kuyenzeka ukutshintshiselana ngemiqondiso ethile eyenzekayo yonke iyunithi yexesha. Kodwa ii-Heartbeats zicotha kakhulu, asinako ukubonelela nge-latency kumxhasi wethu.

Ixesha lokwenyani, ngokuqinisekileyo, yinto emangalisayo. Kodwa, kwakhona, oku mhlawumbi kwixesha elizayo ... Nangona inokuthi yenziwe kwi-Atlas, sele sele ikhawuleza "i-Amazon" i-synchronizers yexesha. Kodwa ayizukufumaneka kuye wonke umntu.

Ukuhleba kuxa yonke imiyalezo ibandakanya ixesha. Oku kumalunga noko sikusebenzisayo. Wonke umyalezo phakathi kweenodi, umqhubi, i-router ye-node yedatha, yonke into ye-MongoDB luhlobo oluthile lwento, icandelo ledatha equlethe iwashi ehambayo. Banentsingiselo yexesha le-hybrid kuyo yonke indawo, isasazwa. 64 amasuntswana? Oku kuvumela, oku kunokwenzeka.

Isebenza njani yonke kunye?

Apha ndijonge enye ireplica iseti ukwenza kube lula kancinci. Kukho iPrayimari neSekondari. Isekondari iyaphindaphinda kwaye ayisoloko idityaniswa ngokupheleleyo nePrayimari.

Ufakelo lwenzeka kwi-"Primery" enexabiso lexesha elithile. Olu fakelo lulonyusa ubalo lwangaphakathi ngo-11, ukuba lo ngowona mkhulu. Okanye iyakukhangela amaxabiso ewotshi kwaye ingqamanise kwiwotshi ukuba amaxabiso ewotshi makhulu. Oku kukuvumela ukuba ulungelelanise ixesha.

Emva kokuba enze ukurekhoda, kwenzeka umzuzu obalulekileyo. Iwotshi ikwi "MongoDB" kwaye yongezwa kuphela kwimeko yokubhalela "Oplog". Esi sisiganeko esitshintsha imeko yenkqubo. Kuwo onke amanqaku eklasiki, isiganeko sithathwa ngokuba xa umyalezo ufika kwindawo: umyalezo ufikile, oku kuthetha ukuba inkqubo iyitshintshile imeko yayo.

Oku kungenxa yokuba ngexesha lophando akucaci ngokupheleleyo ukuba lo myalezo uya kuchazwa njani. Siyazi ngokuqinisekileyo ukuba ukuba ayibonakali kwi "Oplog", ngoko ayiyi kuchazwa nangayiphi na indlela, kwaye utshintsho kwimeko yenkqubo kuphela ukungena kwi "Oplog". Oku kusenzela lula yonke into: imodeli iyenza lula, kwaye isivumele ukuba siyilungelelanise ngaphakathi kweseti enye yeekopi, kunye nezinye izinto ezininzi eziluncedo.

Ixabiso esele libhaliwe kwi "Oplog" libuyisiwe - siyazi ukuba "i-Oplog" sele iqulethe eli xabiso, kwaye ixesha layo li-12. Ngoku, yithi, ukufunda kuqala kwenye i-node (yeSekondari), kwaye ihambisa emva kweClusterTime kwi. umyalezo. Uthi: "Ndifuna yonke into eyenzekayo ubuncinane emva kwe-12 okanye ngexesha leshumi elinesibini" (jonga umfanekiso ongentla).

Oku kubizwa ngokuba yi-Causal a consistent (CAT). Kukho uluvo olunjalo kwithiyori yokuba esi sisiqwenga sexesha, esihambelanayo ngokwaso. Kule meko, sinokuthi le yimeko yenkqubo eyabonwa ngexesha le-12.

Ngoku akukho nto apha, kuba olu hlobo lufanisa imeko xa ufuna iSekondari ukuphindaphinda idatha evela kwiPrayimari. Ulinda... Kwaye ngoku idatha ifikile - ibuyisela la maxabiso emva.

HighLoad++, Mikhail Tyulenev (MongoDB): Causal consistency: ukusuka kwithiyori ukuya kwipractice

Intle kakhulu indlela esebenza ngayo yonke loo nto. Phantse.

Kuthetha ukuthini "phantse"? Makhe sicinge ukuba kukho umntu othile oye wafunda waza waqonda ukuba isebenza njani yonke le nto. Ndiqaphele ukuba ngalo lonke ixesha i-ClusterTime isenzeka, ihlaziya iwotshi yangaphakathi esengqiqweni, emva koko ingeniso elandelayo inyuke ngenye. Lo msebenzi uthatha imigca engama-20. Masithi lo mntu usasaza elona nani likhulu le-64-bit, thabatha enye.

Kutheni "thabatha enye"? Ngenxa yokuba iwotshi yangaphakathi iya kutshintshwa kweli xabiso (ngokucacileyo, lelona likhulu linokwenzeka kwaye likhulu kunexesha langoku), emva koko kuya kubakho ukungena kwi "Oplog", kwaye iwotshi iya kongezwa yenye iyunithi - kwaye kuya kuba sele kusenzeka. yiba lixabiso eliphezulu (kukho zonke iiyunithi ngokulula, akukho ndawo yimbi enokuya kuyo) , ints ezingafunekiyo).

Kucacile ukuba emva koku le nkqubo iba yinto engafikelelekiyo kwaphela. Inokothulwa kuphela kwaye icocwe - umsebenzi omningi wezandla. Ukufumaneka ngokupheleleyo:

HighLoad++, Mikhail Tyulenev (MongoDB): Causal consistency: ukusuka kwithiyori ukuya kwipractice

Ngaphezu koko, ukuba le nto iphindwa kwenye indawo, ke lonke iqela liwela phantsi. Imeko engamkelekanga ngokupheleleyo ukuba nabani na unokuququzelela ngokukhawuleza kwaye kulula! Ngoko ke, lo mzuzu siwuthathe njengenye yezona zibalulekileyo. Indlela yokuthintela?

Indlela yethu kukusayina iClusterTime

Le yindlela ehanjiswa ngayo kumyalezo (phambi kombhalo oblowu). Kodwa saphinda saqala ukwenza utyikityo (umbhalo oluhlaza):

HighLoad++, Mikhail Tyulenev (MongoDB): Causal consistency: ukusuka kwithiyori ukuya kwipractice

Isiginitsha iveliswa sisitshixo esigcinwe ngaphakathi kwisiseko sedatha, ngaphakathi komjikelezo okhuselekileyo; ngokwayo iveliswa kwaye ihlaziywa (abasebenzisi ababoni nto malunga nayo). I-hash yenziwe, kwaye umyalezo ngamnye usayinwe xa udalwa kwaye uqinisekisiwe xa ufunyenwe.
Umbuzo mhlawumbi uphakama ezingqondweni zabantu: "Ingakanani le nto icothisa izinto?" Ndikuxelele ukuba kufuneka isebenze ngokukhawuleza, ngakumbi ngokungabikho kolu phawu.

Kuthetha ukuthini ukusebenzisa iCausal consistency kule meko? Oku kukubonisa iparamitha ye-afterClusterTime. Ngaphandle koku, iya kudlula amaxabiso nakanjani na. Ukuhleba, ukuqala kwinguqulo 3.6, kuhlala kusebenza.

Ukuba sishiya isizukulwana esiqhubekayo sokutyikitya, kuya kuthoba inkqubo nangona kungekho nto, engahambelani neendlela zethu kunye neemfuno. Senze ntoni ke?

Yenza ngokukhawuleza!

Kuyinto elula ngokufanelekileyo, kodwa iqhinga linomdla - ndiya kubelana ngalo, mhlawumbi umntu uya kuba nomdla.
Sine-hash egcina idatha esayiniweyo. Yonke idatha idlula kwi-cache. I-cache ayisayini ixesha elithile, kodwa uHlelo. Xa ixabiso elithile lifika, sivelisa uHlelo, sigqume iibhithi ezili-16 zokugqibela, kwaye sisayina eli xabiso:

HighLoad++, Mikhail Tyulenev (MongoDB): Causal consistency: ukusuka kwithiyori ukuya kwipractice

Ngokufumana isiginitsha esinjalo, sikhawulezisa inkqubo (ngokumalunga) amaxesha angama-65 amawaka. Isebenza kakuhle: xa sisenza imifuniselo, ixesha lehle nge-10 lamawaka amaxesha xa besinohlaziyo olulandelelanayo. Kucacile ukuba xa bexabene, oku akusebenzi. Kodwa kwiimeko ezininzi ezisebenzayo ziyasebenza. Ukudityaniswa koluhlu lwesiginitsha kunye nomsayino kusonjululwe ingxaki yokhuseleko.

Sifunde ntoni?

Izifundo esizifumene koku:

  • Kufuneka sifunde imathiriyeli, amabali, amanqaku, kuba sinezinto ezininzi ezinomdla. Xa sisebenza kwindawo ethile (ingakumbi ngoku, xa sisenza intengiselwano, njl.njl.), kufuneka sifunde kwaye siqonde. Kuthatha ixesha, kodwa eneneni iluncedo kakhulu kuba iyenza icace apho sikhoyo. Kwakubonakala ngathi akukho nto intsha - sithathe nje izithako.

    Ngokuqhelekileyo, kukho umehluko othile ekucingeni xa kukho inkomfa yezemfundo (uSigmon, umzekelo) - wonke umntu ugxininisa kwiingcamango ezintsha. Yintoni entsha malunga ne-algorithm yethu? Akukho nto intsha apha. Ubutsha buxhomekeke kwindlela esidibanisa ngayo iindlela ezikhoyo kunye. Ngoko ke, into yokuqala kukufunda iiklasikhi, ukuqala ngoLampart.

  • Kwimveliso, iimfuno zihluke ngokupheleleyo. Ndiqinisekile ukuba uninzi lwenu alujongana nogcino-lwazi β€œolungqukuva” kwi-vacuum engabonakaliyo, kodwa ngezinto eziqhelekileyo, eziyinyani ezineengxaki zokufumaneka, ukubambezeleka kunye nokunyamezela iimpazamo.
  • Into yokugqibela kukuba kuye kwafuneka sijonge iingcamango ezahlukeneyo kwaye sidibanise amanqaku amaninzi ahluke ngokupheleleyo kwindlela enye, kunye. Ingcamango malunga nokusayina, umzekelo, ngokuqhelekileyo yavela kwinqaku eliqwalasela i-Paxos protocol, leyo ye-non-Byzantine Failors ingaphakathi kwe-protocol yokugunyazwa, ngenxa ye-Byzantine - ngaphandle kwe-protocol yokugunyazwa ... Ngokuqhelekileyo, oku kanye kanye sikwenza. wagqiba ukwenza.

    Akukho nto intsha apha! Kodwa ngokukhawuleza ukuba sidibanise yonke into ... Kuyafana nokuthetha ukuba iresiphi yesaladi ye-Olivier ayinangqondo, kuba amaqanda, i-mayonnaise kunye namakhukhamba sele sele yenziwe ... Kumalunga nebali elifanayo.

HighLoad++, Mikhail Tyulenev (MongoDB): Causal consistency: ukusuka kwithiyori ukuya kwipractice

Ndizogqibezela ngalento. Enkosi!

Imibuzo yakho

Umbuzo ovela kubaphulaphuli (apha kubhekiselwa kubo njengo-B): - Enkosi, Mikhail, ngengxelo! Isihloko malunga nexesha sinomdla. Usebenzisa Ukuhleba. Bathe wonke umntu unexesha lakhe, wonke umntu uyalazi ixesha lendawo yakhe. Njengoko ndiyayiqonda, sinomqhubi - kunokubakho abathengi abaninzi abanabaqhubi, abacwangcisi bemibuzo nabo, i-shards nayo ... Kwaye yintoni inkqubo yehla ukuba ngequbuliso sinokungahambelani: umntu uthatha isigqibo sokuba yenzelwe umzuzu ngaphambili, kukho umntu emva komzuzu? Siza kuphelela phi?

MT: - Umbuzo omkhulu ngokwenene! Bendifuna sithethe nje ngeeshards. Ukuba ndiyawuqonda umbuzo ngokuchanekileyo, sinale meko ilandelayo: kukho i-shard 1 kunye ne-shard 2, ukufunda kwenzeka kula ma-shards amabini - banokungahambelani, abanxibelelani, kuba ixesha abalaziyo lihlukile. ngakumbi ixesha ezikhoyo kwii-opgs.
Masithi i-shard 1 yenza iirekhodi zesigidi, u-shard 2 akenzanga nto konke konke, kwaye isicelo safika kwii-shards ezimbini. Kwaye eyokuqala ine-afterClusterTime engaphezu kwesigidi. Kwimeko enjalo, njengoko ndichazile, i-shard 2 ayiyi kuphendula konke.

KWI: -Bendifuna ukwazi ukuba badibanisa njani kwaye bakhethe ixesha elinye elinengqiqo?

MT: - Kulula kakhulu ukungqamanisa. UShard, xa i-afterClusterTime isiza kuye kwaye akafumani xesha kwi-"Oplog", akaqalisi ukuvunywa. Oko kukuthi, uphakamisa ixesha lakhe ngezandla zakhe kule xabiso. Oku kuthetha ukuba ayinaziganeko ezihambelana nesi sicelo. Udala esi siganeko ngokungeyomfuneko kwaye ngaloo ndlela uba yiCausal Consistant.

KWI: - Kuthekani ukuba emva koku ezinye iziganeko ziza kuye ezilahlekileyo kwenye indawo kwinethiwekhi?

MT: -I-Shard yenzelwe ngendlela yokuba abayi kuphinda beze, kuba iyinkosi enye. Ukuba sele sele ebhalisiwe, ngoko abayi kuza, kodwa baya kuza kamva. Akunakwenzeka ukuba into ibambeke kwindawo ethile, emva koko akabhali, kwaye ke ezi ziganeko zifika - kwaye ukuhambelana kweCausal kwaphukile. Xa engabhali mabalandele bonke (uya kubalinda).

HighLoad++, Mikhail Tyulenev (MongoDB): Causal consistency: ukusuka kwithiyori ukuya kwipractice

KWI: – Ndinemibuzo emininzi malunga nemigca. I-Causal consistency ithatha ukuba kukho umgca othile wezenzo ekufuneka zenziwe. Kwenzeka ntoni ukuba enye yeephakheji zethu iyanyamalala? Nantsi i-10, i-11 ... eye-12 ilahlekile, kwaye wonke umntu ulindele ukuba ibe yinyani. Kwaye ngequbuliso imoto yethu yafa, asinakwenza nto. Ngaba kukho ubude bobude bomgca oqokelelana phambi kokuba usetyenziswe? Kukuphi ukusilela okuyingozi okwenzekayo xa naliphi na ilizwe elinye lilahlekile? Ngaphezu koko, ukuba sibhala phantsi ukuba kukho imeko yangaphambili, ngoko kufuneka siqale ngandlela thile kuyo? Kodwa abazange bamtyhale!

MT: - Kwakhona umbuzo omkhulu! Senza ntoni? I-MongoDB inombono wekhoram ebhalayo, ikhoram ifundeka. Zeziphi iimeko apho umyalezo ungalahleka? Xa ukubhala kungeyokhoram okanye xa okufundiweyo kungeyokhoram (uhlobo oluthile lwenkunkuma lunokuncamathela).
Ngokubhekiselele kwi-Causal consistency, uvavanyo olukhulu lokulinga lwenziwa, isiphumo saso kukuba kwimeko xa kubhalwa kwaye kufundwa ku-non-quorum, ukuphulwa kwe-Causal consistency kwenzeka. Kanye le nto uyithethayo!

Ingcebiso yethu: sebenzisa ubuncinci ukufunda ikhoram xa usebenzisa iCausal consistency. Kule meko, akukho nto iya kulahleka, nokuba irekhodi yekhoram ilahlekile ... Le yimeko ye-orthogonal: ukuba umsebenzisi akafuni ukuba idatha ilahleke, kufuneka asebenzise irekhodi yekhoram. I-Causal consistency ayiqinisekisi ukuqina. Ukomelela kuqinisekiswa ngokuphindaphinda kunye noomatshini abahambelana nokuphindaphinda.

KWI: - Xa sidala umzekelo owenza i-sharding kuthi (kungekhona inkosi, kodwa ikhoboka, ngokulandelanayo), ixhomekeke kwixesha le-Unix lomatshini walo okanye ngexesha "lenkosi"; Ngaba iyangqamanisa okokuqala okanye ngamaxesha athile?

MT: - Ndiza kucacisa ngoku. I-Shard (o.k.t. isahlulo esithe tyaba) - kusoloko kukho iPrayimari apho. Kwaye i-shard ingaba "nenkosi" kwaye kunokubakho ii-replicas. Kodwa i-shard ihlala ixhasa ukurekhoda, kuba kufuneka ixhase isizinda esithile (i-shard inePrimary).

KWI: - Ke yonke into ixhomekeke kuphela "kwinkosi"? Ngaba ixesha elibukhali lisetyenziswa rhoqo?

MT: - Ewe. Unokuthi ngokufuziselayo: iwotshi ibeka uphawu xa kungenwa kwi "master", kwi "Oplog" kwenzeka.

KWI: -Sinomthengi odibanisa kwaye akafuni ukwazi nto malunga nexesha?

MT: - Akukho mfuneko yokuba wazi nantoni na! Ukuba sithetha malunga nendlela esebenza ngayo kumxhasi: xa umxhasi efuna ukusebenzisa i-Causal consistency, kufuneka avule iseshoni. Ngoku yonke into ikhona: ukuthengiselana kwiseshoni, kwaye ufumane kwakhona amalungelo ... Iseshoni kulandelelwaniso lweziganeko ezinengqiqo ezenzeka kunye nomxhasi.

Ukuba uvula le seshoni kwaye uthi apho ufuna i-Causal consistency (ukuba iseshoni isekela i-Causal consistency ngokungagqibekanga), yonke into isebenza ngokuzenzekelayo. Umqhubi uyalikhumbula eli xesha aze andise xa efumana umyalezo omtsha. Ikhumbula ukuba yeyiphi impendulo edlulileyo ebuyile kwiseva ebuyisele idatha. Isicelo esilandelayo siya kuqulatha afterCluster("ixesha elikhulu kuneli").

Umxhasi akufuneki azi nantoni na! Oku kucacile ngokupheleleyo kuye. Ukuba abantu basebenzisa ezi mpawu, yintoni abanokuyenza? Okokuqala, unokufunda ngokukhuselekileyo abafundi besibini: ungabhalela kwiPrayimari kwaye ufunde ukusuka kwiisekondari eziphindaphindwe ngokwendawo kwaye uqiniseke ukuba ziyasebenza. Kwangelo xesha, iiseshoni ezirekhodwe kwiPrayimari zinokutshintshelwa kwiSekondari, oko kukuthi, awusebenzisi iseshoni enye, kodwa ezininzi.

KWI: - Uluhlu olutsha lwe-Compute science - i-CRDT (Iintlobo zeeNkcukacha eziPhindwayo eziNxibelelanisiweyo) iintlobo zedatha - inxulumene kakhulu nesihloko sokuhambelana kwe-Event. Ngaba uye wacinga ukudibanisa ezi ntlobo zedatha kwisiseko sedatha kwaye ungathini ngayo?

MT: - Umbuzo olungileyo! I-CRDT yenza ingqiqo ngokubhala iingxabano: kwi-MongoDB, inkosi enye.

KWI: – Ndinombuzo ovela kwi-devops. Ehlabathini lokwenyani, kukho iimeko ezinjalo zamaJesuitical xa uKungaphumeleli kweByzantium kwenzeka, kwaye abantu abakhohlakeleyo ngaphakathi komda okhuselweyo baqala ukuphosa iprotocol, bathumele iipakethe zobugcisa ngendlela ekhethekileyo?

HighLoad++, Mikhail Tyulenev (MongoDB): Causal consistency: ukusuka kwithiyori ukuya kwipractice

MT: -Abantu ababi ngaphakathi kumda bafana nehashe leTrojan! Abantu abangendawo ngaphakathi kwi-perimeter banokwenza izinto ezininzi ezimbi.

KWI: -Kucacile ukuba ukushiya, ngokuthetha, umngxuma kumncedisi apho unokutyhala i-zoo yeendlovu kwaye udilize lonke iqela ngonaphakade ... Kuya kuthatha ixesha lokubuyisela ngesandla ... Oku, ukuyibeka kakuhle, engalunganga. Ngakolunye uhlangothi, oku kunomdla: ebomini bokwenene, ekusebenzeni, kukho iimeko xa ngokwemvelo ukuhlaselwa kwangaphakathi okufanayo kwenzeka?

MT: - Kuba andifane ndidibane nokwaphulwa kokhuseleko ebomini bokwenyani, andinakutsho ukuba kuyenzeka. Kodwa ukuba sithetha ngefilosofi yophuhliso, sicinga ngolu hlobo: sinomjikelezo obonelela abafana abenza ukhuseleko - le yinqaba, udonga; kwaye ngaphakathi kwiperimeter unokwenza nantoni na oyifunayo. Kucacile ukuba kukho abasebenzisi abanekhono lokujonga kuphela, kwaye kukho abasebenzisi abanamandla okucima uvimba weefayili.

Ngokuxhomekeke kumalungelo, umonakalo owenziwa ngabasebenzisi unokuba yimpuku, okanye inokuba yindlovu. Kucacile ukuba umsebenzisi onamalungelo apheleleyo angenza nantoni na. Umsebenzisi onamalungelo anqongopheleyo anokubangela ingozi encinci kakhulu. Ngokukodwa, ayikwazi ukuphula inkqubo.

KWI: - Kwi-perimeter ekhuselweyo, umntu uzame ukwenza iiprothokholi ezingalindelekanga kumncedisi ukuze atshabalalise ngokupheleleyo umncedisi, kwaye ukuba unethamsanqa, iqoqo lonke ... Ngaba lihlala lifumana loo "ilungile"?

MT: Andizange ndeva ngezinto ezinjalo. Inyani yokuba unokungqubana nomncedisi ngale ndlela akukho mfihlo. Ukungaphumeleli ngaphakathi, ukusuka kwiprotocol, ukuba ngumsebenzisi ogunyazisiweyo onokubhala into enje kumyalezo ... Enyanisweni, akunakwenzeka, kuba kuya kuqinisekiswa. Kuyenzeka ukukhubaza oku kuqinisekiswa kubasebenzisi abangayifuniyo - ke yingxaki yabo leyo; bona, ngokucokisekileyo, batshabalalisa iindonga ngokwabo kwaye unokutyhala indlovu apho, eya kunyathela ... Kodwa ngokubanzi, unokugqoka njengomlungisi, uze uyikhuphe!

KWI: – Enkosi ngengxelo. Sergey (Yandex). Kukho rhoqo kwi-Mong ekhawulela inani lamalungu okuvota kwi-Replica Set, kwaye le nto ihlala i-7 (ezisixhenxe). Kutheni le nto ihlala njalo? Kutheni le ingelohlobo oluthile lweparamitha?

MT: -SineeSeti zeReplica ezineendawo ezingama-40. Kuhlala kukho isininzi. Andazi ukuba yeyiphi inguqulelo...

KWI: - Kwi-Replica Set ungaqhuba amalungu angavoti, kodwa kukho ubuninzi bamalungu okuvota angama-7. Singasinda njani ukuvalwa kwesi siganeko ukuba i-Replica Set yethu isasazwa kumaziko edatha ye-3? Elinye iziko ledatha linokucima ngokulula, kwaye omnye umatshini unokuwa.

MT: – Oku sele kuncinane ngaphaya kobubanzi bengxelo. Lo ngumbuzo jikelele. Mhlawumbi ndingakuxelela ngayo kamva.

HighLoad++, Mikhail Tyulenev (MongoDB): Causal consistency: ukusuka kwithiyori ukuya kwipractice

Ezinye iintengiso πŸ™‚

Enkosi ngokuhlala nathi. Ngaba uyawathanda amanqaku ethu? Ngaba ufuna ukubona umxholo onomdla ngakumbi? Sixhase ngokufaka iodolo okanye ngokucebisa abahlobo, ifu VPS kubaphuhlisi ukusuka $4.99, i-analogue eyodwa yeeseva zomgangatho wokungena, eyenzelwe wena: Inyaniso yonke malunga neVPS (KVM) E5-2697 v3 (6 Cores) 10GB DDR4 480GB SSD 1Gbps ukusuka kwi-$ 19 okanye indlela yokwabelana ngomncedisi? (ifumaneka nge-RAID1 kunye ne-RAID10, ukuya kuthi ga kwi-24 cores kunye ne-40GB DDR4).

Dell R730xd 2x ngexabiso eliphantsi kwiziko ledatha le-Equinix Tier IV eAmsterdam? Kuphela apha 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TV ukusuka $199 eNetherlands! Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - ukusuka $99! Funda malunga Ulwakha njani umbutho weziseko zophuhliso. iklasi ngokusetyenziswa kwe-Dell R730xd E5-2650 iiseva ze-v4 ezixabisa i-9000 yee-euro ngepeni?

umthombo: www.habr.com

Yongeza izimvo