HighLoad++, Mikhail Tyulenev (MongoDB): Konsistenza kawżali: mit-teorija sal-prattika

Il-konferenza HighLoad++ li jmiss se ssir fis-6 u s-7 ta’ April, 2020 f’San Pietruburgu.
Dettalji u biljetti по ссылке. HighLoad++ Siberja 2019. Sala "Krasnoyarsk". 25 ta’ Ġunju, 12:00. Teżijiet u preżentazzjoni.

HighLoad++, Mikhail Tyulenev (MongoDB): Konsistenza kawżali: mit-teorija sal-prattika

Jiġri li r-rekwiżiti prattiċi jikkonfliġġu mat-teorija, fejn aspetti importanti għal prodott kummerċjali ma jiġux ikkunsidrati. Din it-taħdita tippreżenta proċess għall-għażla u l-kombinazzjoni ta’ approċċi differenti biex jinħolqu komponenti ta’ konsistenza Kawżali bbażati fuq riċerka akkademika bbażata fuq ir-rekwiżiti ta’ prodott kummerċjali. Is-semmiegħa se jitgħallmu dwar approċċi teoretiċi eżistenti għall-arloġġi loġiċi, it-traċċar tad-dipendenza, is-sigurtà tas-sistema, is-sinkronizzazzjoni tal-arloġġi, u għaliex MongoDB issetilja fuq ċerti soluzzjonijiet.

Mikhail Tyulenev (minn hawn 'il quddiem imsejjaħ MT): – Se nitkellem dwar il-konsistenza Kawżali - din hija karatteristika li ħdimna fuqha f'MongoDB. Jien naħdem fi grupp ta 'sistemi distribwiti, għamilna madwar sentejn ilu.

HighLoad++, Mikhail Tyulenev (MongoDB): Konsistenza kawżali: mit-teorija sal-prattika

Fil-proċess, kelli nifamiljarizza ruħi ma 'ħafna riċerka akkademika, minħabba li din il-karatteristika ġiet studjata pjuttost tajjeb. Irriżulta li ebda oġġett wieħed ma jidħol f'dak li huwa meħtieġ f'database tal-produzzjoni minħabba rekwiżiti speċifiċi ħafna li probabbilment huma preżenti fi kwalunkwe applikazzjoni ta 'produzzjoni.

Se nitkellem dwar kif aħna, bħala konsumaturi tar-Riċerka akkademika, inħejju xi ħaġa minnha li mbagħad nistgħu nippreżentaw lill-utenti tagħna bħala dixx lest li huwa konvenjenti u sikur biex jintuża.

Konsistenza kawżali. Ejja niddefinixxu l-kunċetti

Biex nibda, irrid ngħid f'termini ġenerali x'inhi l-konsistenza Kawżali. Hemm żewġ karattri - Leonard u Penny (serje televiżiva "The Big Bang Theory"):

HighLoad++, Mikhail Tyulenev (MongoDB): Konsistenza kawżali: mit-teorija sal-prattika

Ejja ngħidu li Penny tinsab fl-Ewropa u Leonard irid itellagħha festa sorpriża. U ma jista 'jaħseb f'xi ħaġa aħjar milli jneħħiha mil-lista ta' ħbieb tiegħu, jibgħat lill-ħbieb tiegħu kollha aġġornament dwar l-għalf: "Ejja nagħmel lil Penny kuntenta!" (hi fl-Ewropa, waqt li torqod, ma tarax dan kollu u ma tistax tarah, għax ma tkunx hemm). Fl-aħħar mill-aħħar, tħassar din il-kariga, tħassarha mill-Feed u tirrestawra l-aċċess sabiex ma tinnota xejn u ma jkun hemm l-ebda skandlu.
Dan kollu tajjeb u tajjeb, imma ejja nassumu li s-sistema hija mqassma u l-affarijiet marru ftit ħażin. Jista', pereżempju, jiġri li r-restrizzjoni tal-aċċess ta' Penny seħħet wara li dehret din il-post, jekk l-avvenimenti ma jkunux relatati b'kawża u effett. Fil-fatt, dan huwa eżempju ta' meta l-konsistenza kawżali hija meħtieġa sabiex titwettaq funzjoni tan-negozju (f'dan il-każ).

Fil-fatt, dawn huma proprjetajiet pjuttost mhux trivjali tad-database - ftit nies jappoġġjawhom. Ejja ngħaddu għall-mudelli.

Mudelli ta' Konsistenza

X'inhu eżattament mudell ta' konsistenza fid-databases? Dawn huma wħud mill-garanziji li sistema mqassma tagħti dwar liema data jista 'jirċievi l-klijent u f'liema sekwenza.

Fil-prinċipju, il-mudelli kollha ta 'konsistenza jinżlu għal kemm sistema mqassma hija simili għal sistema li timxi, pereżempju, fuq node wieħed fuq laptop. U hekk hija simili sistema li taħdem fuq eluf ta '"Nodes" ġeo-distribuiti għal laptop, li fih dawn il-proprjetajiet kollha huma mwettqa awtomatikament fil-prinċipju.

Għalhekk, mudelli ta 'konsistenza huma applikati biss għal sistemi distribwiti. Is-sistemi kollha li qabel kienu jeżistu u joperaw fl-istess skala vertikali ma esperjenzawx problemi bħal dawn. Kien hemm Buffer Cache wieħed, u kollox kien dejjem jinqara minnu.

Mudell Qawwija

Attwalment, l-ewwel mudell huwa Qawwija (jew il-linja tal-kapaċità ta 'żieda, kif spiss tissejjaħ). Dan huwa mudell ta’ konsistenza li jiżgura li kull bidla, ladarba tkun ikkonfermata li tkun seħħet, tkun viżibbli għall-utenti kollha tas-sistema.

Dan joħloq ordni globali tal-avvenimenti kollha fid-database. Din hija proprjetà ta 'konsistenza qawwija ħafna, u ġeneralment hija għalja ħafna. Madankollu, huwa appoġġjat tajjeb ħafna. Huwa biss għali ħafna u bil-mod - huwa biss rarament użat. Din tissejjaħ ħila ta' żieda.

Hemm proprjetà oħra, aktar b'saħħitha li hija appoġġjata fi Spanner - imsejħa Konsistenza Esterna. Nitkellmu dwarha ftit aktar tard.

Kawża

Li jmiss huwa Causal, li huwa eżattament dak li kont qed nitkellem dwaru. Hemm diversi aktar sotto-livelli bejn Qawwija u Kawżali li mhux se nitkellem dwarhom, iżda kollha jnaqqsu għal Kawżali. Dan huwa mudell importanti għaliex huwa l-aktar b'saħħtu mill-mudelli kollha, l-aktar konsistenza b'saħħitha fil-preżenza ta 'netwerk jew diviżorji.

Il-kawżali huma fil-fatt sitwazzjoni li fiha l-avvenimenti huma konnessi b'relazzjoni ta 'kawża u effett. Ħafna drabi huma pperċepiti bħala Aqra tiegħek dwar id-drittijiet mill-perspettiva tal-klijent. Jekk il-klijent osserva xi valuri, ma jistax jara valuri li kienu fil-passat. Diġà qed jibda jara qari tal-prefissi. Kollox jinżel għall-istess ħaġa.
Kawżali bħala mudell ta 'konsistenza huwa ordni parzjali ta' avvenimenti fuq is-server, li fih avvenimenti mill-klijenti kollha huma osservati fl-istess sekwenza. F'dan il-każ, Leonard u Penny.

Eventwali

It-tielet mudell huwa l-Konsistenza Eventwali. Dan huwa dak li assolutament jappoġġjaw is-sistemi distribwiti kollha, il-mudell minimu li jagħmel sens għal kollox. Dan ifisser dan li ġej: meta jkollna xi bidliet fid-dejta, f'xi punt dawn isiru konsistenti.

F'mument bħal dan ma tgħid xejn, inkella tinbidel f'Konsistenza Esterna - tkun storja kompletament differenti. Madankollu, dan huwa mudell popolari ħafna, l-aktar komuni. B'mod awtomatiku, l-utenti kollha ta 'sistemi distribwiti jużaw Konsistenza Eventwali.

Irrid nagħti xi eżempji komparattivi:

HighLoad++, Mikhail Tyulenev (MongoDB): Konsistenza kawżali: mit-teorija sal-prattika

Xi jfissru dawn il-vleġeġ?

  • Latenza. Hekk kif tiżdied is-saħħa tal-konsistenza, din issir akbar għal raġunijiet ovvji: għandek bżonn tagħmel aktar rekords, tikseb konferma mill-hosts u n-nodi kollha li jipparteċipaw fil-cluster li d-dejta diġà hemm. Għaldaqstant, il-Konsistenza Eventwali għandha l-aktar tweġiba mgħaġġla, għaliex hemm, bħala regola, tista 'saħansitra tikkommettiha għall-memorja u dan, fil-prinċipju, ikun biżżejjed.
  • Disponibbiltà. Jekk nifhmu dan bħala l-abbiltà tas-sistema li tirrispondi fil-preżenza ta’ waqfiet tan-netwerk, diviżorji, jew xi tip ta’ falliment, it-tolleranza tal-ħsara tiżdied hekk kif il-mudell ta’ konsistenza jonqos, peress li huwa biżżejjed għalina li jgħix host wieħed u fl-istess ħin. iż-żmien jipproduċi xi data. Il-Konsistenza Eventwali ma tiggarantixxi xejn dwar id-dejta - tista' tkun xi ħaġa.
  • Anomaliji. Fl-istess ħin, ovvjament, in-numru ta 'anomaliji jiżdied. F'Konsistenza Qawwa kważi m'għandhom jeżistu xejn, iżda f'Konsistenza Eventwali jistgħu jkunu xi ħaġa. Tqum il-mistoqsija: għaliex in-nies jagħżlu Konsistenza Eventwali jekk fiha anomaliji? It-tweġiba hija li l-mudelli ta 'Konsistenza Eventwali huma applikabbli u l-anomaliji jeżistu, pereżempju, f'perjodu qasir ta' żmien; huwa possibbli li tuża l-wizard biex taqra u ftit jew wisq taqra data konsistenti; Ħafna drabi huwa possibbli li jintużaw mudelli ta 'konsistenza qawwija. Fil-prattika dan jaħdem, u ħafna drabi n-numru ta 'anomaliji huwa limitat fiż-żmien.

Teorema tal-PAK

Meta tara l-kliem konsistenza, disponibbiltà - x'jiġi f'moħħok? Hekk hu - teorema tal-PAK! Issa rrid inneħħi l-leġġenda... Mhux jien - huwa Martin Kleppmann, li kiteb artiklu mill-isbaħ, ktieb mill-isbaħ.

HighLoad++, Mikhail Tyulenev (MongoDB): Konsistenza kawżali: mit-teorija sal-prattika

It-teorema tal-PAK hija prinċipju fformulat fis-snin 2000 li Konsistenza, Disponibbiltà, Diviżorji: ħu tnejn kwalunkwe, u ma tistax tagħżel tlieta. Kien ċertu prinċipju. Ġie ppruvat bħala teorema ftit snin wara minn Gilbert u Lynch. Imbagħad dan beda jintuża bħala mantra - is-sistemi bdew jinqasmu f'CA, CP, AP eċċ.

Din it-teorema kienet fil-fatt ippruvata għall-każijiet li ġejjin... L-ewwelnett, id-Disponibbiltà tqieset mhux bħala valur kontinwu minn żero għal mijiet (0 - is-sistema hija "mejta", 100 - twieġeb malajr; aħna mdorrija nqisuha b'dan il-mod) , iżda bħala proprjetà tal-algoritmu , li jiggarantixxi li għall-eżekuzzjonijiet kollha tiegħu jirritorna data.

M'hemm l-ebda kelma dwar il-ħin ta 'rispons! Hemm algoritmu li jirritorna data wara 100 sena - algoritmu disponibbli assolutament mill-isbaħ, li huwa parti mit-teorema tal-PAK.
It-tieni: it-teorema ġiet ippruvata għal bidliet fil-valuri tal-istess ċavetta, minkejja l-fatt li dawn il-bidliet jistgħu jinbidlu. Dan ifisser li fir-realtà ma jintużawx prattikament, minħabba li l-mudelli huma differenti Konsistenza Eventwali, Konsistenza qawwija (forsi).

Dan kollu għal xiex? Barra minn hekk, it-teorema tal-PAK fil-forma eżatta li fiha ġiet ippruvata hija prattikament mhux applikabbli u rarament tintuża. Fil-forma teoretika, b'xi mod tillimita kollox. Jirriżulta ċertu prinċipju li huwa intuwittivament korrett, iżda b'mod ġenerali ma ġiex ippruvat.

Il-konsistenza kawżali hija l-aktar mudell b'saħħtu

Dak li qed jiġri issa huwa li tista 'tikseb it-tliet affarijiet: Konsistenza, Disponibbiltà billi tuża diviżorji. B'mod partikolari, Konsistenza kawżali hija l-mudell ta 'konsistenza l-aktar b'saħħtu, li għadu jaħdem fil-preżenza ta' Diviżorji (pawżi fin-netwerk). Għalhekk huwa ta’ interess daqshekk kbir, u għalhekk ħadna.

HighLoad++, Mikhail Tyulenev (MongoDB): Konsistenza kawżali: mit-teorija sal-prattika

L-ewwelnett, tissimplifika x-xogħol tal-iżviluppaturi tal-applikazzjonijiet. B'mod partikolari, il-preżenza ta 'appoġġ kbir mis-server: meta r-rekords kollha li jseħħu ġewwa klijent wieħed huma garantiti li jaslu fl-istess sekwenza fuq klijent ieħor. It-tieni nett, jiflaħ il-ħitan.

Kċina Interna MongoDB

Filwaqt li niftakru li huwa l-ikla, nimxu lejn il-kċina. Jien se ngħidlek dwar il-mudell tas-sistema, jiġifieri, x'inhu MongoDB għal dawk li qed jisimgħu dwar tali database għall-ewwel darba.

HighLoad++, Mikhail Tyulenev (MongoDB): Konsistenza kawżali: mit-teorija sal-prattika

HighLoad++, Mikhail Tyulenev (MongoDB): Konsistenza kawżali: mit-teorija sal-prattika

MongoDB (minn hawn 'il quddiem imsejjaħ "MongoDB") hija sistema distribwita li tappoġġja skalar orizzontali, jiġifieri, sharding; u fi ħdan kull shard jappoġġja wkoll redundancy tad-data, jiġifieri, replikazzjoni.

Sharding f'MongoDB (mhux database relazzjonali) iwettaq ibbilanċjar awtomatiku, jiġifieri, kull ġabra ta 'dokumenti (jew "tabella" f'termini ta' data relazzjonali) hija maqsuma f'biċċiet, u s-server awtomatikament iċċaqlaqhom bejn shards.

Il-Query Router, li jqassam it-talbiet, għal klijent huwa xi klijent li permezz tiegħu jaħdem. Diġà jaf fejn u liema data tinsab u jidderieġi t-talbiet kollha lejn il-parti t-tajba.

Punt importanti ieħor: MongoDB huwa kaptan wieħed. Hemm Primarja waħda - tista 'tieħu rekords li jappoġġjaw iċ-ċwievet li fih. Ma tistax tagħmel Multi-master write.

Għamilna rilaxx 4.2 - hemm affarijiet ġodda interessanti dehru. B'mod partikolari, huma daħħal Lucene - tfittxija - jiġifieri java eżekutibbli direttament f'Mongo, u hemmhekk sar possibbli li jsiru tfittxijiet permezz ta 'Lucene, l-istess bħal f'Elastica.

U għamlu prodott ġdid - Charts, huwa wkoll disponibbli fuq Atlas (Cloud ta 'Mongo stess). Huma għandhom Free Tier - tista 'tilgħab magħha. Għoġobni ħafna Ċarts - viżwalizzazzjoni tad-dejta, intuwittivi ħafna.

Ingredjenti Konsistenza kawżali

Għaddejt madwar 230 artiklu li ġew ippubblikati fuq dan is-suġġett – minn Leslie Lampert. Issa mill-memorja tiegħi se nwassallek xi partijiet minn dawn il-materjali.

HighLoad++, Mikhail Tyulenev (MongoDB): Konsistenza kawżali: mit-teorija sal-prattika

Kollox beda b’artiklu ta’ Leslie Lampert, li nkiteb fis-snin sebgħin. Kif tistgħu taraw, xi riċerka dwar dan is-suġġett għadha għaddejja. Issa l-konsistenza kawżali qed tesperjenza interess b'rabta mal-iżvilupp ta 'sistemi distribwiti.

Restrizzjonijiet

X'restrizzjonijiet hemm? Dan huwa fil-fatt wieħed mill-punti ewlenin, għaliex ir-restrizzjonijiet li timponi sistema ta’ produzzjoni huma differenti ħafna mir-restrizzjonijiet li jeżistu fl-artikoli akkademiċi. Ħafna drabi huma pjuttost artifiċjali.

HighLoad++, Mikhail Tyulenev (MongoDB): Konsistenza kawżali: mit-teorija sal-prattika

  • L-ewwelnett, "MongoDB" huwa kaptan wieħed, kif diġà għedt (dan jissimplifika ħafna).
  • Aħna nemmnu li s-sistema għandha tappoġġja madwar 10 elf shards. Ma nistgħux nieħdu deċiżjonijiet arkitettoniċi li jillimitaw b'mod espliċitu dan il-valur.
  • Għandna sħaba, iżda nassumu li persuna xorta għandu jkollha l-opportunità meta tniżżel binarju, tmexxiha fuq il-laptop tagħha, u kollox jaħdem tajjeb.
  • Nassumu xi ħaġa li r-Riċerka rari tassumi: klijenti esterni jistgħu jagħmlu dak kollu li jridu. MongoDB huwa sors miftuħ. Għaldaqstant, il-klijenti jistgħu jkunu tant intelliġenti u rrabjati - jistgħu jkunu jridu jkissru kollox. Aħna nispekulaw li Feilors Biżantini jistgħu joriġinaw.
  • Għal klijenti esterni li huma barra mill-perimetru, hemm limitazzjoni importanti: jekk din il-karatteristika hija diżattivata, allura m'għandha tiġi osservata l-ebda degradazzjoni tal-prestazzjoni.
  • Punt ieħor huwa ġeneralment anti-akkademiku: il-kompatibilità tal-verżjonijiet preċedenti u dawk futuri. Is-sewwieqa qodma għandhom jappoġġjaw aġġornamenti ġodda, u d-database trid tappoġġja sewwieqa qodma.

B'mod ġenerali, dan kollu jimponi restrizzjonijiet.

Komponenti ta' konsistenza kawżali

Issa se nitkellem dwar xi wħud mill-komponenti. Jekk inqisu l-konsistenza Kawżali b'mod ġenerali, nistgħu nagħżlu blokki. Aħna għażilna minn xogħlijiet li jappartjenu għal ċertu blokk: Traċċar tad-Dipendenza, għażla ta 'arloġġi, kif dawn l-arloġġi jistgħu jiġu sinkronizzati ma' xulxin, u kif niżguraw is-sigurtà - din hija deskrizzjoni approssimattiva ta 'dak li se nitkellem dwaru:

HighLoad++, Mikhail Tyulenev (MongoDB): Konsistenza kawżali: mit-teorija sal-prattika

Traċċar tad-Dipendenza Sħiħ

Għaliex hija meħtieġa? Sabiex meta d-dejta tiġi replikata, kull rekord, kull bidla fid-dejta jkun fiha informazzjoni dwar liema bidliet tiddependi fuqhom. L-ewwel bidla u naive hija meta kull messaġġ li fih rekord ikun fih informazzjoni dwar messaġġi preċedenti:

HighLoad++, Mikhail Tyulenev (MongoDB): Konsistenza kawżali: mit-teorija sal-prattika

F'dan l-eżempju, in-numru fil-parentesi kaboċċi huwa n-numri tar-rekord. Xi drabi dawn ir-rekords b'valuri huma saħansitra trasferiti fl-intier tagħhom, xi drabi xi verżjonijiet jiġu trasferiti. L-aħħar linja hija li kull bidla fiha informazzjoni dwar dik ta 'qabel (ovvjament iġorr dan kollu fih innifsu).

Għaliex iddeċidejna li ma nużawx dan l-approċċ (traċċar sħiħ)? Ovvjament, minħabba li dan l-approċċ mhuwiex prattiku: kwalunkwe bidla f'netwerk soċjali tiddependi fuq il-bidliet preċedenti kollha għal dak in-netwerk soċjali, li tittrasferixxi, ngħidu aħna, Facebook jew VKontakte f'kull aġġornament. Madankollu, hemm ħafna riċerka dwar it-Traċċar tad-Dipendenza Sħiħa - dawn huma netwerks pre-soċjali; għal xi sitwazzjonijiet verament jaħdem.

Traċċar tad-Dipendenza Espliċita

Li jmiss huwa aktar limitat. It-trasferiment tal-informazzjoni huwa kkunsidrat ukoll hawnhekk, iżda biss dak li huwa dipendenti b'mod ċar. Dak li jiddependi fuq dak, bħala regola, huwa determinat mill-Applikazzjoni. Meta d-dejta tiġi replikata, il-mistoqsija tirritorna tweġibiet biss meta d-dipendenzi preċedenti jkunu ġew sodisfatti, jiġifieri, murija. Din hija l-essenza ta' kif taħdem il-konsistenza Kawżali.

HighLoad++, Mikhail Tyulenev (MongoDB): Konsistenza kawżali: mit-teorija sal-prattika

Hija tara li r-rekord 5 jiddependi fuq ir-rekords 1, 2, 3, 4 - għalhekk, hija tistenna qabel ma l-klijent ikollu aċċess għall-bidliet magħmula mid-deċiżjoni ta 'aċċess ta' Penny, meta l-bidliet preċedenti kollha jkunu diġà għaddew mid-database.

Dan lanqas jaqbel lilna, għax għad hemm wisq informazzjoni, u se jonqos l-affarijiet. Hemm approċċ ieħor...

Lampport Arloġġ

Huma qodma ħafna. Lamport Clock ifisser li dawn id-dipendenzi huma mitwija f'funzjoni skalari, li tissejjaħ Lamport Clock.

Funzjoni skalari hija xi numru astratt. Ħafna drabi jissejjaħ ħin loġiku. Ma 'kull avveniment, dan il-counter jiżdied. Counter, li bħalissa huwa magħruf għall-proċess, jibgħat kull messaġġ. Huwa ċar li l-proċessi jistgħu jkunu mhux sinkronizzati, jista 'jkollhom ħinijiet kompletament differenti. Madankollu, is-sistema b'xi mod tibbilanċja l-arloġġ ma 'messaġġi bħal dawn. X'jiġri f'dan il-każ?

Qsamt dik il-parti kbira fi tnejn biex tagħmilha ċara: Ħbieb jistgħu jgħixu f'node wieħed, li fih biċċa mill-kollezzjoni, u Feed jista 'jgħix f'nodu ieħor, li fih biċċa minn din il-kollezzjoni. Huwa ċar kif jistgħu joħorġu mill-linja? L-ewwel Għalf jgħid: "Replikat", u mbagħad Ħbieb. Jekk is-sistema ma tipprovdix xi tip ta 'garanzija li l-Feed mhux se jintwera sakemm id-dipendenzi tal-Ħbieb fil-ġbir tal-Ħbieb jitwasslu wkoll, allura jkollna eżattament is-sitwazzjoni li semmejt.

Tara kif il-ħin tal-counter fuq Feed jiżdied b'mod loġiku:

HighLoad++, Mikhail Tyulenev (MongoDB): Konsistenza kawżali: mit-teorija sal-prattika

Allura l-proprjetà ewlenija ta 'din l-Arloġġ Lamport u l-konsistenza Kawżali (spjegati permezz ta' Arloġġ Lamport) hija din: jekk ikollna Avvenimenti A u B, u Avveniment B jiddependi fuq Avveniment A *, allura jirriżulta li l-Ħin Loġiku ta 'Avveniment A huwa inqas minn Ħin Loġiku mill-Avveniment B.

* Xi drabi jgħidu wkoll li A ġara qabel B, jiġifieri, A ġara qabel B - din hija ċerta relazzjoni li tordna parzjalment is-sett kollu ta 'avvenimenti li ġraw b'mod ġenerali.

L-oppost huwa żbaljat. Dan huwa fil-fatt wieħed mill-iżvantaġġi ewlenin ta 'Lamport Clock - ordni parzjali. Hemm kunċett dwar avvenimenti simultanji, jiġifieri, avvenimenti li fihom la (A ġara qabel B) u lanqas (A ġara qabel B). Eżempju jkun iż-żieda parallela ta’ Leonard ta’ xi ħadd ieħor bħala ħabib (lanqas Leonard, iżda Sheldon, pereżempju).
Din hija l-proprjetà li ħafna drabi tintuża meta jaħdmu bl-arloġġi Lamport: iħarsu speċifikament lejn il-funzjoni u minn dan jikkonkludu li forsi dawn l-avvenimenti huma dipendenti. Minħabba li mod wieħed huwa veru: jekk LogicalTime A huwa inqas minn LogicalTime B, allura B ma jistax iseħħ qabel A; u jekk aktar, allura forsi.

Arloġġ Vector

L-iżvilupp loġiku tal-arloġġ Lamport huwa l-Arloġġ Vector. Huma differenti peress li kull node li hawn fih l-arloġġ separat tiegħu stess, u huma trażmessi bħala vettur.
F'dan il-każ, tara li l-indiċi żero tal-vettur huwa responsabbli għall-Għalf, u l-ewwel indiċi tal-vettur huwa għall-Ħbieb (kull wieħed minn dawn in-nodi). U issa se jiżdiedu: l-indiċi żero ta '"Feed" jiżdied meta tikteb - 1, 2, 3:

HighLoad++, Mikhail Tyulenev (MongoDB): Konsistenza kawżali: mit-teorija sal-prattika

Għaliex Vector Clock huwa aħjar? Minħabba li jippermettulek issib liema avvenimenti huma simultanji u meta jseħħu fuq nodi differenti. Dan huwa importanti ħafna għal sistema ta 'sharding bħal MongoDB. Madankollu, aħna ma għażilniex dan, għalkemm hija ħaġa mill-isbaħ, u taħdem tajjeb ħafna, u probabbilment jaqbel magħna...

Jekk ikollna 10 elf shards, ma nistgħux nittrasferixxu 10 elf komponenti, anki jekk nikkompressawha jew noħorġu b'xi ħaġa oħra - il-payload xorta se tkun bosta drabi iżgħar mill-volum ta 'dan il-vettur kollu. Għalhekk, għaxxqu qalbna u snienna, abbandunajna dan l-approċċ u mxejna għal ieħor.

Spanner TrueTime. Arloġġ atomiku

Għidt li jkun hemm storja dwar Spanner. Din hija ħaġa friska, mill-ewwel mis-seklu XNUMX: arloġġi atomiċi, sinkronizzazzjoni tal-GPS.

X'inhi l-idea? "Spanner" hija sistema Google li reċentement saħansitra saret disponibbli għan-nies (żiedu SQL magħha). Kull tranżazzjoni hemm għandha xi timbru taż-żmien. Peress li l-ħin huwa sinkronizzat*, kull avveniment jista 'jiġi assenjat ħin speċifiku - l-arloġġi atomiċi għandhom ħin ta' stennija, u wara huwa garantit li "jiġri" ħin differenti.

HighLoad++, Mikhail Tyulenev (MongoDB): Konsistenza kawżali: mit-teorija sal-prattika

Għalhekk, billi sempliċiment tikteb fid-database u tistenna għal xi perjodu ta 'żmien, is-Serializability tal-avveniment hija awtomatikament garantita. Huma għandhom l-aktar mudell ta 'Konsistenza b'saħħitha li jista' jiġi immaġinat fil-prinċipju - hija l-Konsistenza Esterna.

* Din hija l-problema ewlenija bl-arloġġi Lampart - qatt ma huma sinkroniċi fuq sistemi distribwiti. Jistgħu jvarjaw; anke bl-NTP, għadhom ma jaħdmux tajjeb ħafna. "Spanner" għandu arloġġ atomiku u s-sinkronizzazzjoni, jidher, hija mikrosekondi.

Għaliex ma għażilniex? Aħna ma nassumux li l-utenti tagħna għandhom arloġġ atomiku mibni. Meta jidhru, qed jinbnew f'kull laptop, se jkun hemm xi tip ta' sinkronizzazzjoni tal-GPS super cool - allura iva... Imma għalissa l-aħjar li huwa possibbli huwa Amazon, Base Stations - għall-fanatiċi... Allura użajna arloġġi oħra .

Arloġġ Ibridu

Dan huwa fil-fatt dak li jimmarka f'MongoDB meta jiżgura l-konsistenza Kawżali. Kif huma ibridi? L-ibridu huwa valur skalari, iżda għandu żewġ komponenti:

HighLoad++, Mikhail Tyulenev (MongoDB): Konsistenza kawżali: mit-teorija sal-prattika

  • L-ewwel hija l-epoka Unix (kemm għaddew sekondi mill-"bidu tad-dinja tal-kompjuter").
  • It-tieni huwa xi inkrement, ukoll int 32-bit mhux iffirmat.

Dak kollu, fil-fatt. Hemm dan l-approċċ: il-parti li hija responsabbli għall-ħin hija sinkronizzata mal-arloġġ il-ħin kollu; kull darba li jseħħ aġġornament, din il-parti hija sinkronizzata mal-arloġġ u jirriżulta li l-ħin huwa dejjem xi ftit jew wisq korrett, u inkrement jippermettilek li tiddistingwi bejn avvenimenti li seħħew fl-istess ħin.

Għaliex dan huwa importanti għal MongoDB? Minħabba li jippermettilek li tagħmel xi tip ta 'ristoranti backup f'ċertu punt fil-ħin, jiġifieri, l-avveniment huwa indiċjat skond il-ħin. Dan huwa importanti meta ċerti avvenimenti huma meħtieġa; Għal database, avvenimenti huma bidliet fid-database li seħħew f'ċerti intervalli fil-ħin.

Jien ngħidlek l-iktar raġuni importanti għalik biss (jekk jogħġbok, tgħid lil ħadd)! Għamilna dan għax hekk tidher id-dejta organizzata u indiċjata f'MongoDB OpLog. OpLog hija struttura tad-dejta li fiha assolutament il-bidliet kollha fid-database: l-ewwel imorru għall-OpLog, u mbagħad jiġu applikati għall-Ħażna stess fil-każ meta tkun data jew shard replikata.

Din kienet ir-raġuni ewlenija. Xorta waħda, hemm ukoll rekwiżiti prattiċi għall-iżvilupp ta 'database, li jfisser li għandha tkun sempliċi - kodiċi ftit, kemm jista' jkun affarijiet miksur li jeħtieġ li jerġgħu jinkitbu u jiġu ttestjati. Il-fatt li l-oplogs tagħna kienu indiċjati minn arloġġi ibridi għen ħafna u ppermettilna nagħmlu l-għażla t-tajba. Tassew ħallset u b'xi mod maġikament ħadem fuq l-ewwel prototip. Kien jibred ħafna!

Sinkronizzazzjoni tal-arloġġ

Hemm diversi metodi ta 'sinkronizzazzjoni deskritti fil-letteratura xjentifika. Qed nitkellem dwar is-sinkronizzazzjoni meta jkollna żewġ shards differenti. Jekk ikun hemm sett ta 'repliki wieħed, m'hemmx bżonn ta' xi sinkronizzazzjoni: dan huwa "kaptan wieħed"; għandna OpLog, li fih jaqgħu l-bidliet kollha - f'dan il-każ, kollox huwa diġà ordnat sekwenzjali fl-"Oplog" innifsu. Imma jekk ikollna żewġ shards differenti, is-sinkronizzazzjoni tal-ħin hija importanti hawn. Dan huwa fejn l-arloġġ vector għen aktar! Imma aħna m'għandniex.

HighLoad++, Mikhail Tyulenev (MongoDB): Konsistenza kawżali: mit-teorija sal-prattika

It-tieni wieħed huwa adattat - dan huwa "Heartbeats". Huwa possibbli li jiġu skambjati xi sinjali li jseħħu kull unità ta 'żmien. Iżda Heartbeats huma bil-mod wisq, ma nistgħux nipprovdu latency lill-klijent tagħna.

Il-ħin veru huwa, ovvjament, ħaġa sabiħa. Iżda, għal darb'oħra, dan huwa probabbilment il-futur... Għalkemm diġà jista 'jsir f'Atlas, diġà hemm sinkronizzaturi tal-ħin "Amazon" veloċi. Iżda mhux se jkun disponibbli għal kulħadd.

Gossiping huwa meta l-messaġġi kollha jinkludu l-ħin. Dan huwa bejn wieħed u ieħor dak li nużaw. Kull messaġġ bejn in-nodi, sewwieq, router ta 'node ta' data, assolutament kollox għal MongoDB huwa xi tip ta 'element, komponent ta' database li fih arloġġ li jaħdem. Huma għandhom it-tifsira ta 'ħin ibridu kullimkien, huwa trażmess. 64 bit? Dan jippermetti, dan huwa possibbli.

Kif jaħdem kollox flimkien?

Hawnhekk qed inħares lejn sett wieħed ta' replika biex tagħmilha ftit aktar faċli. Hemm Primarja u Sekondarja. Is-Sekondarja tagħmel replikazzjoni u mhux dejjem tkun kompletament sinkronizzata mal-Primarja.

Inserzjoni sseħħ fil-"Primarja" b'ċertu valur ta 'żmien. Din l-inserzjoni żżid l-għadd intern bi 11, jekk dan huwa l-massimu. Jew se tiċċekkja l-valuri tal-arloġġ u tissinkronizza mal-arloġġ jekk il-valuri tal-arloġġ huma akbar. Dan jippermettilek torganizza bil-ħin.

Wara li jagħmel ir-reġistrazzjoni, iseħħ mument importanti. L-arloġġ huwa f'"MongoDB" u jiżdied biss f'każ li tikteb lil "Oplog". Dan huwa l-avveniment li jibdel l-istat tas-sistema. Fl-artikoli klassiċi assolutament kollha, avveniment jitqies li jkun meta messaġġ jolqot node: il-messaġġ ikun wasal, li jfisser li s-sistema bidlet l-istat tagħha.

Dan minħabba l-fatt li waqt ir-riċerka mhux ċar għal kollox kif se jiġi interpretat dan il-messaġġ. Aħna nafu żgur li jekk ma jkunx rifless fl-"Oplog", allura ma jiġi interpretat bl-ebda mod, u bidla fl-istat tas-sistema hija biss dħul fl-"Oplog". Dan jissimplifika kollox għalina: il-mudell jissimplifikah, u jippermettilna norganizzawha fi ħdan sett ta 'repliki wieħed, u ħafna affarijiet utli oħra.

Il-valur li diġà huwa miktub lill-"Oplog" huwa rritornat - nafu li l-"Oplog" diġà fih dan il-valur, u l-ħin tiegħu huwa 12. Issa, ngħidu aħna, il-qari jibda minn node ieħor (Sekondarju), u jittrasmetti wara ClusterTime fi il-messaġġ. Jgħid: “Għandi bżonn dak kollu li ġara mill-inqas wara t-12 jew matul it-tnax” (ara stampa hawn fuq).

Dan huwa dak li jissejjaħ Kawżali konsistenti (CAT). Hemm tali kunċett fit-teorija li dan huwa xi porzjon ta 'żmien, li huwa konsistenti fih innifsu. F'dan il-każ, nistgħu ngħidu li dan huwa l-istat tas-sistema li kien osservat fil-ħin 12.

Issa m'hemm xejn hawn s'issa, għaliex dan it-tip ta 'jissimula s-sitwazzjoni meta għandek bżonn is-Sekondarja biex tirreplika d-dejta mill-Primarja. Huwa jistenna... U issa d-dejta waslet - jirritorna dawn il-valuri lura.

HighLoad++, Mikhail Tyulenev (MongoDB): Konsistenza kawżali: mit-teorija sal-prattika

Dak huwa pjuttost kif jaħdem kollox. Kważi.

Xi jfisser "kważi"? Ejja nassumu li hemm xi persuna li qrat u fehem kif jaħdem dan kollu. Irrealizzajt li kull darba li jseħħ ClusterTime, jaġġorna l-arloġġ loġiku intern, u mbagħad id-dħul li jmiss tiżdied b'wieħed. Din il-funzjoni tieħu 20 linja. Ejja ngħidu li din il-persuna tittrasmetti l-akbar numru ta '64-bit, nieqes wieħed.

Għaliex "minus one"? Minħabba li l-arloġġ intern se jiġi sostitwit f'dan il-valur (ovvjament, dan huwa l-akbar possibbli u akbar mill-ħin attwali), allura dħul se jseħħ f'"Oplog", u l-arloġġ se jiżdied b'unità oħra - u jkun hemm diġà jkun valur massimu (sempliċement hemm l-unitajiet kollha, m'hemm imkien ieħor fejn imorru), , ints unsaint).

Huwa ċar li wara dan is-sistema ssir assolutament inaċċessibbli għal xejn. Jista 'jinħatt u jitnaddaf biss - ħafna xogħol manwali. Disponibbiltà sħiħa:

HighLoad++, Mikhail Tyulenev (MongoDB): Konsistenza kawżali: mit-teorija sal-prattika

Barra minn hekk, jekk dan jiġi replikat x'imkien ieħor, allura l-cluster kollu sempliċement jaqa '. Sitwazzjoni assolutament inaċċettabbli li kulħadd jista' jorganizza malajr u faċilment! Għalhekk, qiesna dan il-mument bħala wieħed mill-aktar importanti. Kif tipprevjenih?

Il-mod tagħna huwa li niffirmaw clusterTime

Dan huwa kif jiġi trażmess fil-messaġġ (qabel it-test blu). Imma bdejna wkoll niġġeneraw firma (test blu):

HighLoad++, Mikhail Tyulenev (MongoDB): Konsistenza kawżali: mit-teorija sal-prattika

Il-firma hija ġġenerata minn ċavetta li hija maħżuna ġewwa d-database, ġewwa perimetru sigur; innifsu huwa ġġenerat u aġġornat (l-utenti ma jaraw xejn dwarha). Jiġi ġġenerat hash, u kull messaġġ jiġi ffirmat meta jinħoloq u validat meta riċevut.
Il-mistoqsija probabbilment tqum f’moħħ in-nies: “Dan kemm inaqqas l-affarijiet?” Għidtlek li għandha taħdem malajr, speċjalment fin-nuqqas ta 'din il-karatteristika.

Xi jfisser li tuża Konsistenza Kawżali f'dan il-każ? Dan biex juri l-parametru afterClusterTime. Mingħajr dan, sempliċement se jgħaddi l-valuri xorta waħda. Gossiping, li jibda mill-verżjoni 3.6, dejjem jaħdem.

Jekk inħallu l-ġenerazzjoni kostanti ta 'firem, inaqqas is-sistema anki fin-nuqqas ta' karatteristika, li ma tissodisfax l-approċċi u r-rekwiżiti tagħna. Allura x’għamilna?

Agħmel malajr!

Hija ħaġa pjuttost sempliċi, iżda l-trick huwa interessanti - ser naqsamha, forsi xi ħadd ikun interessat.
Għandna hash li jaħżen id-dejta ffirmata. Id-dejta kollha tgħaddi mill-cache. Il-cache ma jiffirmax il-ħin speċifiku, iżda l-Medda. Meta jasal xi valur, niġġeneraw Medda, nagħtu l-aħħar 16-il bit, u niffirmaw dan il-valur:

HighLoad++, Mikhail Tyulenev (MongoDB): Konsistenza kawżali: mit-teorija sal-prattika

Billi nirċievu tali firma, aħna nħaffu s-sistema (relattivament) 65 elf darba. Taħdem tajjeb ħafna: meta wettaqna esperimenti, il-ħin fil-fatt naqas b'10 elf darba meta kellna aġġornament sekwenzjali. Huwa ċar li meta jkunu f'kontradizzjoni, dan ma jaħdimx. Iżda fil-biċċa l-kbira tal-każijiet prattiċi taħdem. Il-kombinazzjoni tal-firma Range flimkien mal-firma solviet il-problema tas-sigurtà.

X’tgħallimna?

Lezzjonijiet li tgħallimna minn dan:

  • Irridu naqraw materjali, stejjer, artikli, għax għandna ħafna affarijiet interessanti. Meta naħdmu fuq xi karatteristika (speċjalment issa, meta għamilna tranżazzjonijiet, eċċ.), irridu naqraw u nifhmu. Huwa jieħu ż-żmien, iżda fil-fatt huwa utli ħafna għax jagħmilha ċara fejn qegħdin. Aħna ma dehru li ħriġna b'xi ħaġa ġdida - aħna biss ħadna l-ingredjenti.

    B'mod ġenerali, hemm ċerta differenza fil-ħsieb meta jkun hemm konferenza akkademika (Sigmon, pereżempju) - kulħadd jiffoka fuq ideat ġodda. X'inhu ġdid dwar l-algoritmu tagħna? M'hemm xejn partikolarment ġdid hawn. In-novità pjuttost tinsab fil-mod kif għaqqadna flimkien l-approċċi eżistenti. Għalhekk, l-ewwel ħaġa hi li taqra l-klassiċi, ibda minn Lampart.

  • Fil-produzzjoni, ir-rekwiżiti huma kompletament differenti. Jiena ċert li ħafna minnkom m'humiex iffaċċjati b'databases "sferiċi" f'vakwu astratt, iżda b'affarijiet normali u reali li għandhom problemi bid-disponibbiltà, il-latenza u t-tolleranza tal-ħsarat.
  • L-aħħar ħaġa hija li kellna nħarsu lejn ideat differenti u ngħaqqdu diversi artikoli kompletament differenti f'approċċ wieħed, flimkien. L-idea dwar l-iffirmar, per eżempju, ġeneralment ġiet minn artiklu li jqis il-protokoll ta’ Paxos, li għal Failors mhux Biżantini jinsab ġewwa l-protokoll ta’ awtorizzazzjoni, għal dawk Biżantini - barra l-protokoll ta’ awtorizzazzjoni... B’mod ġenerali, dan huwa eżattament dak li aħna spiċċat tagħmel.

    M'hemm assolutament xejn ġdid hawn! Imma hekk kif ħalltuha kollha flimkien... L-istess kif ngħidu li r-riċetta tal-insalata Olivier hija bla sens, għax diġà ġew ivvintati bajd, mayonnaise u ħjar... Dwar l-istess storja.

HighLoad++, Mikhail Tyulenev (MongoDB): Konsistenza kawżali: mit-teorija sal-prattika

Nispiċċa b'dan. Grazzi!

mistoqsijiet

Mistoqsija mill-udjenza (minn hawn 'il quddiem imsejħa B): – Grazzi, Mikhail, għar-rapport! Is-suġġett dwar iż-żmien huwa interessanti. Qed tuża Gossiping. Qalu li kulħadd għandu l-ħin tiegħu, kulħadd jaf il-ħin lokali tiegħu. Kif nifhem jien, għandna xufier - jista' jkun hemm ħafna klijenti bis-sewwieqa, query-planners ukoll, shards ukoll... U x'inhi s-sistema jekk f'daqqa waħda jkollna diskrepanza: xi ħadd jiddeċiedi li huwa għal xi minuta quddiem, xi ħadd minuta wara? Fejn se nispiċċaw?

MT: – Mistoqsija kbira tassew! Ridt biss nitkellem dwar shards. Jekk nifhem il-mistoqsija b'mod korrett, għandna s-sitwazzjoni li ġejja: hemm shard 1 u shard 2, il-qari jseħħ minn dawn iż-żewġ shards - għandhom diskrepanza, ma jinteraġixxux ma 'xulxin, minħabba li l-ħin li jafu huwa differenti, speċjalment iż-żmien li jeżistu fl-oplogs.
Ejja ngħidu li shard 1 għamel miljun rekord, shard 2 ma għamel xejn, u t-talba waslet għal żewġ shards. U l-ewwel wieħed għandu afterClusterTime ta 'aktar minn miljun. F'sitwazzjoni bħal din, kif spjegajt, shard 2 qatt mhu se jirrispondi għal kollox.

FI: – Xtaqt inkun naf kif jissinkronizzaw u jagħżlu ħin loġiku wieħed?

MT: - Faċli ħafna biex tissinkronizza. Shard, meta waraClusterTime jasal lilu u ma jsibx ħin fil-"Oplog", jibda l-ebda approvat. Jiġifieri jgħolli l-ħin tiegħu b’idejh għal dan il-valur. Dan ifisser li m'għandu l-ebda avveniment li jaqbel ma' din it-talba. Huwa joħloq dan l-avveniment artifiċjalment u għalhekk isir Konsistenti Kawżali.

FI: – X'jiġri jekk wara dan jiġulu xi avvenimenti oħra li ntilfu x'imkien fin-netwerk?

MT: – Shard hija mfassla b'tali mod li ma jerġgħux jiġu, peress li huwa kaptan wieħed. Jekk ikun diġà ffirma, allura ma jiġux, iżda jiġu aktar tard. Ma jistax jiġri li xi ħaġa jeħel x'imkien, allura ma jiktebx, u mbagħad jaslu dawn l-avvenimenti - u l-konsistenza Kawżali tinkiser. Meta ma jiktebx, għandhom jiġu kollha wara (hu se jistenniehom).

HighLoad++, Mikhail Tyulenev (MongoDB): Konsistenza kawżali: mit-teorija sal-prattika

FI: – Għandi diversi mistoqsijiet dwar il-kjuwijiet. Il-konsistenza kawżali tassumi li hemm kju speċifiku ta' azzjonijiet li jeħtieġ li jitwettqu. X'jiġri jekk wieħed mill-pakketti tagħna jisparixxi? Hawn ġej l-10, il-11... it-12 sparixxa, u kulħadd qed jistenna li jsir realtà. U f'daqqa waħda l-karozza tagħna mietet, ma nistgħu nagħmlu xejn. Hemm tul massimu tal-kju li jakkumula qabel ma jiġi eżegwit? Liema falliment fatali jseħħ meta xi stat wieħed jintilef? Barra minn hekk, jekk niktbu li hemm xi stat preċedenti, allura għandna b'xi mod nibdew minnu? Imma ma mbottawhx!

MT: – Mistoqsija kbira wkoll! X'qed nagħmlu? MongoDB għandu l-kunċett ta 'kworum jikteb, kworum jaqra. F'liema każijiet jista' jintilef messaġġ? Meta kitba ma tkunx kworum jew meta qari ma jkunx kworum (xi tip ta’ żibel jista’ wkoll jeħel).
Rigward il-konsistenza Kawżali, sar test sperimentali kbir, li r-riżultat tiegħu kien li fil-każ meta l-kitba u l-qari ma jkunux kworum, iseħħu vjolazzjonijiet tal-konsistenza Kawżali. Eżattament dak li tgħid!

Il-parir tagħna: uża mill-inqas qari tal-kworum meta tuża Konsistenza Kawżali. F'dan il-każ, xejn mhu se jintilef, anki jekk jintilef ir-rekord tal-kworum... Din hija sitwazzjoni ortogonali: jekk l-utent ma jridx li tintilef id-dejta, jeħtieġ li juża rekord tal-kworum. Konsistenza kawżali ma tiggarantixxix durabilità. Id-durabilità hija garantita mir-replikazzjoni u l-makkinarju assoċjat mar-replikazzjoni.

FI: – Meta noħolqu istanza li twettaq sharding għalina (mhux kaptan, iżda slave, rispettivament), tiddependi fuq il-ħin Unix tal-magna tagħha stess jew fuq il-ħin tal-"kaptan"; Tissinkronizza għall-ewwel darba jew perjodikament?

MT: – Issa niċċara. Shard (jiġifieri partizzjoni orizzontali) - dejjem hemm Primarja hemmhekk. U shard jista 'jkollu "kaptan" u jista' jkun hemm repliki. Iżda l-shard dejjem jappoġġja r-reġistrazzjoni, minħabba li għandu jappoġġja xi dominju (it-shard għandu Primarja).

FI: – Allura kollox jiddependi purament fuq il-“kaptan”? Il-ħin tal-kaptan dejjem jintuża?

MT: - Iva. Tista 'tgħid b'mod figurattiv: l-arloġġ qed jimmarka meta sseħħ dħul fil-"kaptan", fl-"Oplog".

FI: – Għandna klijent li jgħaqqad u m’għandux bżonn ikun jaf xejn dwar il-ħin?

MT: – M’għandek bżonn tkun taf xejn! Jekk nitkellmu dwar kif taħdem fuq il-klijent: meta l-klijent irid juża Konsistenza Kawżali, jeħtieġ li jiftaħ sessjoni. Issa kollox qiegħed hemm: tranżazzjonijiet fis-sessjoni, u jirkupraw drittijiet... Sessjoni hija l-ordni ta 'avvenimenti loġiċi li jseħħu mal-klijent.

Jekk jiftaħ din is-sessjoni u jgħid hemmhekk li jrid Konsistenza Każwali (jekk is-sessjoni tappoġġja l-konsistenza Każwali b'mod awtomatiku), kollox jaħdem awtomatikament. Is-sewwieq jiftakar dan iż-żmien u jżidu meta jirċievi messaġġ ġdid. Tiftakar liema tweġiba ta 'qabel mis-server li rritorna d-data. It-talba li jmiss se jkun fiha afterCluster ("ħin akbar minn dan").

Il-klijent m'għandux għalfejn ikun jaf assolutament xejn! Dan huwa kompletament opak għalih. Jekk in-nies jużaw dawn il-karatteristiċi, x'jistgħu jagħmlu? L-ewwel, tista 'taqra b'mod sikur is-sekondarji: tista' tikteb lill-Primarja u taqra minn sekondarji replikati ġeografikament u kun żgur li taħdem. Fl-istess ħin, sessjonijiet li ġew irreġistrati fil-Primarja jistgħu saħansitra jiġu trasferiti għas-Sekondarja, jiġifieri tista 'tuża mhux sessjoni waħda, iżda bosta.

FI: – Saff ġdid ta’ xjenza tal-Kompjuter – tipi ta’ dejta CRDT (Tipi ta’ Dejta Replikati mingħajr Konflitti) – huwa relatat ħafna mas-suġġett tal-Konsistenza Eventwali. Ħsibt li tintegra dawn it-tipi ta' data fid-database u x'tista' tgħid dwarha?

MT: - Mistoqsija tajba! CRDT jagħmel sens għal konflitti ta 'kitba: f'MongoDB, kaptan wieħed.

FI: – Għandi mistoqsija mid-devops. Fid-dinja reali, hemm sitwazzjonijiet Ġiżwiti bħal dawn meta jseħħ il-Nuqqas Biżantin, u n-nies ħżiena ġewwa l-perimetru protett jibdew jitfgħu fil-protokoll, jibagħtu pakketti tas-snajja b'mod speċjali?

HighLoad++, Mikhail Tyulenev (MongoDB): Konsistenza kawżali: mit-teorija sal-prattika

MT: – Nies ħżiena ġewwa l-perimetru huma bħal Trojan horse! Nies ħżiena ġewwa l-perimetru jistgħu jagħmlu ħafna affarijiet ħżiena.

FI: – Huwa ċar li tħalli, bejn wieħed u ieħor, toqba fis-server li minnha tista’ tpoġġi żoo ta’ iljunfanti u tikkollassa r-raggruppament kollu għal dejjem... Se jieħu ż-żmien għall-irkupru manwali... Dan, biex ngħiduha ħafif, huwa ħażin. Min-naħa l-oħra, dan huwa interessanti: fil-ħajja reali, fil-prattika, hemm sitwazzjonijiet meta jseħħu attakki interni simili b'mod naturali?

MT: – Peress li rari niltaqa’ ma’ ksur tas-sigurtà fil-ħajja reali, ma nistax ngħid jekk jiġrix. Imma jekk nitkellmu dwar il-filosofija tal-iżvilupp, naħsbu hekk: għandna perimetru li jipprovdi lill-guys li jagħmlu s-sigurtà - dan huwa kastell, ħajt; u ġewwa l-perimetru tista 'tagħmel dak kollu li trid. Huwa ċar li hemm utenti bil-kapaċità li jaraw biss, u hemm utenti bil-kapaċità li jħassru d-direttorju.

Skont id-drittijiet, il-ħsara li jistgħu jagħmlu l-utenti tista 'tkun ġurdien, jew tista' tkun iljunfant. Huwa ċar li utent bi drittijiet sħaħ jista' jagħmel kull ħaġa. Utent bi drittijiet limitati jista' jikkawża ħafna inqas ħsara. B'mod partikolari, ma tistax tkisser is-sistema.

FI: – Fil-perimetru protett, xi ħadd ipprova joħloq protokolli mhux mistennija għas-server sabiex jeqred kompletament is-server, u jekk int xortik tajba, il-cluster kollu... Qatt tikseb dak "tajjeb"?

MT: "Qatt ma smajt b'affarijiet bħal dawn." Il-fatt li tista 'tiġġarraf server b'dan il-mod mhuwiex sigriet. Falli ġewwa, tkun mill-protokoll, tkun utent awtorizzat li jista 'jikteb xi ħaġa bħal din fil-messaġġ... Fil-fatt, huwa impossibbli, għax xorta se jiġi vverifikat. Huwa possibbli li din l-awtentikazzjoni tiġi diżattivata għall-utenti li ma jridux - allura dik hija l-problema tagħhom; huma, bejn wieħed u ieħor, qerdu l-ħitan infushom u inti tista 'timbotta iljunfant ġewwa, li se trample... Imma b'mod ġenerali, inti tista' dress up bħala tiswija, ejja u iġbed!

FI: – Grazzi tar-rapport. Sergey (Yandex). Hemm kostanti f'Mong li tillimita n-numru ta 'membri tal-vot fis-Set tar-Repliki, u din il-kostanti hija 7 (seba'). Għaliex din hija kostanti? Għaliex dan mhuwiex xi tip ta 'parametru?

MT: – Għandna Settijiet ta 'Repliki b'40 node. Dejjem hemm maġġoranza. Ma nafx liema verżjoni...

FI: – F'Replica Set tista' tmexxi membri li ma jivvutawx, iżda hemm massimu ta' membri li jivvutaw 7. Kif nistgħu ngħixu l-għeluq f'dan il-każ jekk is-Replica Set tagħna jkun mifrux fuq 3 data centres? Ċentru tad-dejta wieħed jista 'faċilment jintefa, u magna oħra tista' taqa 'barra.

MT: – Dan diġà huwa ftit lil hinn mill-ambitu tar-rapport. Din hija mistoqsija ġenerali. Forsi nista 'ngħidlek dwar dan aktar tard.

HighLoad++, Mikhail Tyulenev (MongoDB): Konsistenza kawżali: mit-teorija sal-prattika

Xi reklami 🙂

Grazzi talli bqajt magħna. Tħobb l-artikoli tagħna? Trid tara aktar kontenut interessanti? Appoġġuna billi tagħmel ordni jew tirrakkomanda lill-ħbieb, Cloud VPS għall-iżviluppaturi minn $4.99, analogu uniku ta 'servers ta' livell ta 'dħul, li ġie ivvintat minna għalik: Il-verità kollha dwar VPS (KVM) E5-2697 v3 (6 Cores) 10GB DDR4 480GB SSD 1Gbps minn $19 jew kif taqsam server? (disponibbli b'RAID1 u RAID10, sa 24 core u sa 40GB DDR4).

Dell R730xd 2 darbiet orħos fiċ-ċentru tad-dejta Equinix Tier IV f'Amsterdam? Hawn biss 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TV minn $199 fl-Olanda! Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - minn $99! Aqra dwar Kif tibni l-infrastruttura corp. klassi bl-użu ta 'servers Dell R730xd E5-2650 v4 li jiswew 9000 ewro għal ċenteżmu?

Sors: www.habr.com

Żid kumment