HighLoad ++, Mikhail Tyulenev (MongoDB): Ua rau muaj kev sib xws: los ntawm kev xav mus rau kev xyaum

Lub rooj sib tham HighLoad++ tom ntej no yuav muaj rau lub Plaub Hlis 6 thiab 7, 2020 hauv St. Petersburg.
Paub meej thiab daim pib txuas. HighLoad++ Siberia 2019. Hall "Krasnoyarsk". Peb 25, 12:00. Cov no thiab kev nthuav qhia.

HighLoad ++, Mikhail Tyulenev (MongoDB): Ua rau muaj kev sib xws: los ntawm kev xav mus rau kev xyaum

Nws tshwm sim tias cov kev xav tau tsis sib haum xeeb nrog txoj kev xav, qhov tseem ceeb ntawm cov khoom lag luam tsis suav nrog. Qhov kev sib tham no nthuav tawm cov txheej txheem rau kev xaiv thiab sib txuas cov txheej txheem sib txawv los tsim cov Causal cov khoom sib xws raws li kev tshawb fawb kev kawm raws li kev xav tau ntawm cov khoom lag luam. Cov neeg mloog yuav kawm txog cov txheej txheem theoretical uas twb muaj lawm rau lub moos logical, kev soj ntsuam kev nyob ruaj khov, kev ruaj ntseg, moos synchronization, thiab vim li cas MongoDB tau txiav txim siab rau qee qhov kev daws teeb meem.

Mikhail Tyulenev (tom qab no hu ua MT): - Kuv yuav tham txog Causal tsis sib xws - qhov no yog qhov peb ua haujlwm hauv MongoDB. Kuv ua hauj lwm nyob rau hauv ib pab pawg neeg ntawm faib systems, peb tau ua nws li ob xyoos dhau los.

HighLoad ++, Mikhail Tyulenev (MongoDB): Ua rau muaj kev sib xws: los ntawm kev xav mus rau kev xyaum

Nyob rau hauv tus txheej txheem, kuv yuav tsum paub kuv tus kheej nrog ntau yam kev kawm tshawb fawb, vim hais tias qhov no feature tau kawm heev heev. Nws muab tawm tias tsis yog ib tsab xov xwm haum rau qhov yuav tsum tau muaj nyob rau hauv cov ntaub ntawv tsim khoom vim yog cov cai tshwj xeeb uas tej zaum muaj nyob rau hauv ib daim ntawv thov ntau lawm.

Kuv yuav tham txog yuav ua li cas peb, raws li cov neeg siv khoom ntawm Kev Tshawb Fawb Kev Tshawb Fawb, npaj qee yam los ntawm nws uas peb tuaj yeem nthuav qhia rau peb cov neeg siv khoom ua zaub mov npaj tau yooj yim thiab nyab xeeb siv.

Kev sib haum xeeb. Cia peb txhais cov ntsiab lus

Yuav pib nrog, kuv xav hais nyob rau hauv cov nqe lus dav dav dab tsi Causal sib xws yog. Muaj ob lub cim - Leonard thiab Penny (TV series "The Big Bang Theory"):

HighLoad ++, Mikhail Tyulenev (MongoDB): Ua rau muaj kev sib xws: los ntawm kev xav mus rau kev xyaum

Cia peb hais tias Penny nyob hauv Tebchaws Europe thiab Leonard xav pov nws ib qho kev xav tsis thoob. Thiab nws tsis tuaj yeem xav txog dab tsi zoo dua li muab nws tawm ntawm nws cov phooj ywg npe, xa tag nrho nws cov phooj ywg hloov tshiab ntawm kev pub khoom noj: "Cia peb ua rau Penny zoo siab!" (nws nyob hauv Tebchaws Europe, thaum nws tsaug zog, nws tsis pom txhua yam no thiab pom tsis tau, vim nws tsis nyob ntawd). Thaum kawg, nws tshem tawm cov ntawv no, tshem tawm ntawm Pub thiab rov qab nkag mus kom nws tsis pom dab tsi thiab tsis muaj kev txaj muag.
Qhov no yog txhua yam zoo thiab zoo, tab sis cia peb xav tias lub kaw lus tau muab faib thiab cov khoom ua yuam kev me ntsis. Tej zaum nws yuav, piv txwv li, tshwm sim tias Penny qhov kev txwv tsis pub nkag tau tshwm sim tom qab qhov tshaj tawm no tshwm sim, yog tias cov xwm txheej tsis cuam tshuam los ntawm qhov ua rau thiab cuam tshuam. Qhov tseeb, qhov no yog ib qho piv txwv ntawm thaum Causal sib xws yuav tsum tau txhawm rau ua haujlwm ua lag luam (hauv qhov no).

Qhov tseeb, cov no yog cov khoom tsis tseem ceeb ntawm cov ntaub ntawv - tsawg tus neeg txhawb nqa lawv. Cia peb txav mus rau cov qauv.

Cov qauv sib xws

Dab tsi yog tus qauv sib xws hauv databases? Cov no yog qee qhov kev lees paub tias qhov kev faib tawm muab cov ntaub ntawv dab tsi uas tus neeg siv tuaj yeem tau txais thiab nyob rau hauv dab tsi ua ntu zus.

Raws li txoj cai, txhua tus qauv sib xws tau nqes mus rau qhov zoo sib xws ntawm qhov kev faib tawm mus rau qhov system uas khiav, piv txwv li, ntawm ib qho ntawm lub laptop. Thiab qhov no yog qhov zoo ib yam li lub kaw lus uas khiav ntawm ntau txhiab tus geo-distributed "Nodes" yog rau lub laptop, uas tag nrho cov khoom no tau ua tiav hauv txoj cai.

Yog li ntawd, cov qauv sib xws tsuas yog siv rau cov kab ke sib faib. Txhua lub tshuab uas yav dhau los muaj thiab ua haujlwm ntawm tib qhov kev ntsuas ntsug tsis tau ntsib cov teeb meem zoo li no. Muaj ib qho Buffer Cache, thiab txhua yam yeej ib txwm nyeem los ntawm nws.

Qauv Muaj Zog

Qhov tseeb, thawj tus qauv yog Strong (los yog txoj kab nce siab, raws li nws feem ntau hu ua). Qhov no yog tus qauv sib xws uas ua kom ntseeg tau tias txhua qhov kev hloov pauv, ib zaug paub tseeb tias nws tau tshwm sim, pom rau txhua tus neeg siv ntawm lub system.

Qhov no tsim ib qho kev txiav txim thoob ntiaj teb ntawm txhua qhov xwm txheej hauv cov ntaub ntawv. Qhov no yog cov cuab yeej muaj zog sib xws, thiab nws feem ntau kim heev. Txawm li cas los xij, nws txhawb tau zoo heev. Nws tsuas yog kim heev thiab qeeb - nws tsuas yog tsis tshua siv. Qhov no yog hu ua nce peev xwm.

Muaj lwm yam khoom muaj zog uas txhawb nqa hauv Spanner - hu ua External Consistency. Peb mam li tham txog nws me ntsis tom qab.

Qhov Ntsuas

Cov tom ntej no yog Causal, uas yog raws nraim li kuv tau tham txog. Muaj ob peb theem ntxiv ntawm Strong thiab Causal uas kuv yuav tsis tham txog, tab sis lawv txhua tus npau taws rau Causal. Qhov no yog ib qho qauv tseem ceeb vim tias nws yog qhov muaj zog tshaj plaws ntawm txhua tus qauv, qhov muaj zog tshaj plaws nyob rau hauv lub xub ntiag ntawm lub network los yog partitions.

Causals yog qhov tseeb ntawm qhov xwm txheej uas cuam tshuam los ntawm kev sib raug zoo-thiab-tshuaj. Feem ntau lawv tau pom tias Nyeem koj cov cai los ntawm tus neeg siv khoom qhov kev xav. Yog tias tus neeg siv tau pom qee qhov txiaj ntsig, nws tsis tuaj yeem pom qhov tseem ceeb uas yav dhau los. Nws twb pib pom prefix nyeem ntawv. Nws tag nrho los rau tib yam.
Causals raws li tus qauv sib xws yog ib feem ntawm kev txiav txim ntawm cov xwm txheej ntawm lub server, nyob rau hauv uas cov xwm txheej los ntawm txhua tus neeg siv khoom raug soj ntsuam hauv tib lub sijhawm. Hauv qhov no, Leonard thiab Penny.

Thaum kawg

Tus qauv thib peb yog qhov kev sib raug zoo. Qhov no yog dab tsi kiag li txhua qhov kev faib tshuab txhawb nqa, tus qauv me me uas ua rau kev nkag siab txhua. Nws txhais tau hais tias cov hauv qab no: thaum peb muaj qee qhov kev hloov pauv hauv cov ntaub ntawv, qee lub sijhawm lawv ua tau zoo ib yam.

Lub sijhawm ntawd nws tsis hais dab tsi, txwv tsis pub nws yuav tig mus rau Sab Nraud Consistency - nws yuav yog zaj dab neeg sib txawv kiag li. Txawm li cas los xij, qhov no yog cov qauv nrov heev, feem ntau. Los ntawm lub neej ntawd, txhua tus neeg siv ntawm cov kab ke faib siv qhov tshwm sim sib xws.

Kuv xav muab qee qhov piv txwv piv txwv:

HighLoad ++, Mikhail Tyulenev (MongoDB): Ua rau muaj kev sib xws: los ntawm kev xav mus rau kev xyaum

Cov xub no txhais li cas?

  • Latency Raws li qhov sib xws lub zog nce, nws yuav loj dua rau cov laj thawj pom tseeb: koj yuav tsum tau ua cov ntaub ntawv ntxiv, tau txais kev pom zoo los ntawm txhua tus tswv thiab cov nodes uas koom nrog hauv pawg uas cov ntaub ntawv twb muaj lawm. Raws li qhov tshwm sim, Kev Sib Koom Tes muaj cov lus teb ceev tshaj plaws, vim tias muaj, raws li txoj cai, koj tuaj yeem ua nws rau kev nco thiab qhov no yuav, hauv paus ntsiab lus, txaus.
  • Muaj Txaus. Yog hais tias peb to taub qhov no raws li lub peev xwm ntawm lub system los teb nyob rau hauv lub xub ntiag ntawm network breaks, partitions, los yog tej yam tsis ua hauj lwm, txhaum kam rau siab nce raws li tus qauv sib xws, vim nws txaus rau peb uas ib tug tswv tsev nyob thiab tib yam. lub sijhawm tsim qee cov ntaub ntawv. Kev sib raug zoo kawg nkaus tsis tau lees paub dab tsi txog cov ntaub ntawv txhua - nws tuaj yeem ua tau dab tsi.
  • Kev tsis sib haum xeeb. Nyob rau tib lub sij hawm, ntawm chav kawm, tus naj npawb ntawm anomalies nce. Hauv Kev Ncaj Ncees Zoo Lawv yuav luag tsis muaj nyob rau hauv tag nrho, tab sis nyob rau hauv Qhov Zoo Tshaj Plaws Lawv tuaj yeem yog dab tsi. Cov lus nug tshwm sim: vim li cas tib neeg thiaj li xaiv qhov Kev Sib Raug Zoo Yog tias nws muaj qhov tsis sib xws? Cov lus teb yog tias Cov qauv kev sib raug zoo sib xws yog siv tau thiab muaj qhov tsis sib xws, piv txwv li, nyob rau lub sijhawm luv luv; nws muaj peev xwm siv tus wizard los nyeem thiab nyeem ntau dua lossis tsawg dua cov ntaub ntawv zoo ib yam; Nws yog feem ntau siv tau cov qauv muaj zog sib xws. Hauv kev xyaum, qhov no ua haujlwm, thiab feem ntau tus naj npawb ntawm kev tsis sib xws yog txwv nyob rau lub sijhawm.

CAP Theorem

Thaum koj pom cov lus sib xws, muaj - dab tsi los rau koj lub siab? Yog lawm - CAP theorem! Tam sim no kuv xav kom tshem tawm cov dab neeg ... Nws tsis yog kuv - nws yog Martin Kleppmann, uas tau sau ib tsab xov xwm zoo, phau ntawv zoo.

HighLoad ++, Mikhail Tyulenev (MongoDB): Ua rau muaj kev sib xws: los ntawm kev xav mus rau kev xyaum

CAP theorem yog ib lub hauv paus ntsiab lus tsim nyob rau xyoo 2000s uas Consistency, Availability, Partitions: coj ob, thiab koj xaiv tsis tau peb. Nws yog ib lub ntsiab cai. Nws tau raug pov thawj raws li kev xav tau ob peb xyoos tom qab los ntawm Gilbert thiab Lynch. Tom qab ntawd qhov no pib siv los ua mantra - tshuab pib muab faib ua CA, CP, AP thiab lwm yam.

Qhov kev xav no tau ua pov thawj tiag tiag rau cov xwm txheej hauv qab no ... Ua ntej, Muaj tau suav tias tsis yog tus nqi txuas ntxiv los ntawm xoom mus rau pua pua (0 - lub kaw lus "tuag", 100 - teb sai; peb tau siv los txiav txim siab li ntawd) , tab sis raws li cov cuab yeej ntawm algorithm, uas lav tias rau tag nrho nws cov kev ua tiav nws rov qab cov ntaub ntawv.

Tsis muaj lus hais txog lub sijhawm teb txhua! Muaj ib qho algorithm uas xa rov qab cov ntaub ntawv tom qab 100 xyoo - ib qho zoo heev muaj algorithm, uas yog ib feem ntawm CAP txoj kev xav.
Thib ob: lub theorem tau ua pov thawj rau kev hloov pauv ntawm qhov tseem ceeb ntawm tib lub ntsiab lus, txawm tias qhov kev hloov pauv no tuaj yeem hloov kho. Qhov no txhais tau hais tias nyob rau hauv kev muaj tiag lawv yog xyaum tsis siv, vim hais tias cov qauv yog txawv Eventual Consistency, Strong Consistency (tej zaum).

Qhov no yog dab tsi? Ntxiv mus, CAP theorem nyob rau hauv raws nraim daim ntawv nyob rau hauv uas nws twb proven yog xyaum tsis muaj feem xyuam thiab yog tsis tshua muaj siv. Hauv daim ntawv theoretical, nws qee qhov txwv txhua yam. Nws hloov tawm ib lub hauv paus ntsiab lus uas yog intuitively tseeb, tab sis feem ntau tsis tau muaj pov thawj.

Causal sib xws yog tus qauv muaj zog tshaj plaws

Qhov tshwm sim tam sim no yog tias koj tuaj yeem tau txais tag nrho peb yam: Consistency, Availability siv Partitions. Hauv particular, Causal sib xws yog cov qauv sib xws uas muaj zog tshaj plaws, uas tseem ua haujlwm nyob rau hauv lub xub ntiag ntawm Partitions (so hauv lub network). Tias yog vim li cas nws yog qhov txaus siab heev, thiab yog vim li cas peb thiaj li tau txais nws.

HighLoad ++, Mikhail Tyulenev (MongoDB): Ua rau muaj kev sib xws: los ntawm kev xav mus rau kev xyaum

Ua ntej, nws yooj yim rau kev ua haujlwm ntawm daim ntawv thov tsim tawm. Tshwj xeeb, muaj kev txhawb nqa zoo los ntawm cov neeg rau zaub mov: thaum tag nrho cov ntaub ntawv uas tshwm sim hauv ib tus neeg siv khoom tau lees tias tuaj txog tib lub sijhawm ntawm lwm tus neeg siv khoom. Qhov thib ob, nws tiv taus cov partitions.

MongoDB Sab Hauv Chav Ua Noj

Nco ntsoov tias noj su, peb tsiv mus rau chav ua noj. Kuv yuav qhia koj txog tus qauv qauv, uas yog, MongoDB yog dab tsi rau cov neeg uas hnov ​​​​txog cov ntaub ntawv no thawj zaug.

HighLoad ++, Mikhail Tyulenev (MongoDB): Ua rau muaj kev sib xws: los ntawm kev xav mus rau kev xyaum

HighLoad ++, Mikhail Tyulenev (MongoDB): Ua rau muaj kev sib xws: los ntawm kev xav mus rau kev xyaum

MongoDB (tom qab no hu ua "MongoDB") yog ib qho kev faib tawm uas txhawb nqa kab rov tav scaling, uas yog, sharding; thiab nyob rau hauv txhua shard nws kuj txhawb cov ntaub ntawv redundancy, uas yog, replication.

Sharding hauv MongoDB (tsis yog cov ntaub ntawv sib raug zoo) ua qhov ntsuas tsis siv neeg, uas yog, txhua qhov kev sau ntawm cov ntaub ntawv (lossis "cov lus" hais txog cov ntaub ntawv sib raug zoo) tau muab faib ua tej daim, thiab cov neeg rau zaub mov yuav txav lawv ntawm shards.

Cov Lus Nug Router, uas faib kev thov, rau tus neeg siv khoom yog qee tus neeg siv los ntawm nws ua haujlwm. Nws twb paub qhov twg thiab cov ntaub ntawv nyob qhov twg thiab coj txhua qhov kev thov mus rau qhov tseeb shard.

Lwm qhov tseem ceeb: MongoDB yog ib tus tswv. Muaj ib lub Koom Txoos - nws tuaj yeem nqa cov ntaub ntawv uas txhawb nqa cov yuam sij uas nws muaj. Koj tsis tuaj yeem ua Multi-master sau.

Peb tau tso tawm 4.2 - yam tshiab nthuav tawm nyob rau ntawd. Tshwj xeeb, lawv tau ntxig Lucene - tshawb nrhiav - uas yog executable java ncaj qha rau hauv Mongo, thiab nws tau dhau los ua kev tshawb fawb los ntawm Lucene, tib yam li hauv Elastica.

Thiab lawv tau tsim cov khoom tshiab - Cov kab kos, nws kuj muaj nyob rau ntawm Atlas (Mongo's own Cloud). Lawv muaj Tier Dawb - koj tuaj yeem ua si nrog nws. Kuv yeej nyiam Daim Ntawv Qhia - cov ntaub ntawv pom kev, intuitive heev.

Cov khoom xyaw Causal sib xws

Kuv suav txog 230 kab lus uas tau luam tawm ntawm lub ncauj lus no - los ntawm Leslie Lampert. Tam sim no los ntawm kuv lub cim xeeb kuv yuav qhia rau koj qee qhov ntawm cov ntaub ntawv no.

HighLoad ++, Mikhail Tyulenev (MongoDB): Ua rau muaj kev sib xws: los ntawm kev xav mus rau kev xyaum

Nws tag nrho pib nrog ib tsab xov xwm los ntawm Leslie Lampert, uas tau sau nyob rau hauv 1970s. Raws li koj tuaj yeem pom, qee qhov kev tshawb fawb ntawm cov ncauj lus no tseem tab tom ua. Tam sim no Causal sib xws tab tom muaj kev txaus siab nyob rau hauv kev twb kev txuas nrog rau txoj kev loj hlob ntawm faib systems.

Kev txwv

Muaj kev txwv dab tsi? Qhov no yog ib qho ntawm cov ntsiab lus tseem ceeb, vim hais tias cov kev txwv uas ib qho kev tsim khoom tsim tawm txawv heev los ntawm cov kev txwv uas muaj nyob hauv cov ntawv kawm. Lawv feem ntau yog cov neeg dag.

HighLoad ++, Mikhail Tyulenev (MongoDB): Ua rau muaj kev sib xws: los ntawm kev xav mus rau kev xyaum

  • Ua ntej, "MongoDB" yog ib tus tswv, raws li kuv twb tau hais lawm (qhov no yooj yim heev).
  • Peb ntseeg tias lub kaw lus yuav tsum txhawb txog 10 txhiab shards. Peb tsis tuaj yeem txiav txim siab txog kev tsim vaj tsev uas yuav txwv tsis pub tus nqi no.
  • Peb muaj huab, tab sis peb xav tias ib tug neeg yuav tsum tseem muaj lub sijhawm thaum nws rub tawm binary, khiav ntawm nws lub laptop, thiab txhua yam ua haujlwm zoo.
  • Peb xav tias qee yam uas Kev Tshawb Fawb tsis tshua xav tias: cov neeg siv khoom sab nraud tuaj yeem ua txhua yam lawv xav tau. MongoDB yog qhib qhov chaw. Raws li, cov neeg siv khoom tuaj yeem ntse thiab npau taws - lawv tuaj yeem xav rhuav txhua yam. Peb xav tias Byzantine Feilors tuaj yeem tshwm sim.
  • Rau cov neeg siv khoom sab nraud uas nyob sab nraum ib puag ncig, muaj qhov txwv tseem ceeb: yog tias qhov kev ua haujlwm no raug cuam tshuam, ces yuav tsum tsis txhob muaj kev ua haujlwm tsis zoo.
  • Lwm cov ntsiab lus yog feem ntau los tiv thaiv kev kawm: kev sib raug zoo ntawm yav dhau los versions thiab yav tom ntej sawv daws yuav. Cov neeg tsav tsheb qub yuav tsum txhawb cov kev hloov tshiab tshiab, thiab cov ntaub ntawv yuav tsum txhawb cov tsav tsheb qub.

Feem ntau, tag nrho cov no imposes txwv.

Cov yam ntxwv sib xws

Tam sim no kuv yuav tham txog qee yam ntawm cov khoom. Yog hais tias peb xav txog Causal sib xws feem ntau, peb tuaj yeem xaiv cov blocks. Peb tau xaiv los ntawm kev ua haujlwm uas muaj nyob rau qee qhov thaiv: Kev Ua Raws Li Kev Ua Haujlwm, xaiv cov moos, yuav ua li cas cov moos no tuaj yeem ua ke nrog ib leeg, thiab peb yuav ua li cas kom muaj kev ruaj ntseg - qhov no yog cov ntsiab lus ntxhib ntawm qhov kuv yuav tham txog:

HighLoad ++, Mikhail Tyulenev (MongoDB): Ua rau muaj kev sib xws: los ntawm kev xav mus rau kev xyaum

Full Dependency Tracking

Vim li cas thiaj xav tau? Yog li ntawd, thaum cov ntaub ntawv replicated, txhua cov ntaub ntawv, txhua cov ntaub ntawv hloov pauv muaj cov ntaub ntawv hais txog dab tsi hloov nws nyob ntawm. Thawj qhov kev hloov pauv tsis zoo yog thaum txhua cov lus uas muaj cov ntaub ntawv muaj cov ntaub ntawv hais txog cov lus dhau los:

HighLoad ++, Mikhail Tyulenev (MongoDB): Ua rau muaj kev sib xws: los ntawm kev xav mus rau kev xyaum

Hauv qhov piv txwv no, tus lej hauv curly brackets yog cov lej sau tseg. Qee lub sij hawm cov ntaub ntawv no nrog rau qhov tseem ceeb txawm raug xa mus rau lawv tag nrho, qee zaum qee qhov hloov pauv. Cov kab hauv qab yog tias txhua qhov kev hloov pauv muaj cov ntaub ntawv hais txog yav dhau los (pom tseeb nqa tag nrho qhov no hauv nws tus kheej).

Vim li cas peb thiaj txiav txim siab tsis siv txoj hauv kev no (tag nrho taug qab)? Pom tseeb, vim tias txoj hauv kev no tsis muaj txiaj ntsig: txhua qhov kev hloov pauv rau kev sib raug zoo yog nyob ntawm txhua qhov kev hloov pauv yav dhau los rau qhov kev sib raug zoo ntawd, hloov pauv, hais, Facebook lossis VKontakte hauv txhua qhov hloov tshiab. Txawm li cas los xij, muaj ntau qhov kev tshawb fawb txog Kev Taug Kev Taug Kev Taug Kev - cov no yog kev sib tham ua ntej; rau qee qhov xwm txheej nws ua haujlwm tiag tiag.

Nthuav Nthuav Nthuav Taug Kev Taug Kev

Cov tom ntej no yog txwv ntau. Kev hloov ntawm cov ntaub ntawv kuj tseem suav hais tias yog ntawm no, tab sis tsuas yog qhov uas pom meej meej nyob. Dab tsi nyob ntawm seb, raws li txoj cai, yog txiav txim los ntawm Daim Ntawv Thov. Thaum cov ntaub ntawv rov ua dua, cov lus nug tsuas yog rov qab cov lus teb thaum yav dhau los kev vam meej tau txaus siab, uas yog, qhia. Qhov no yog qhov tseem ceeb ntawm kev ua haujlwm Causal sib xws.

HighLoad ++, Mikhail Tyulenev (MongoDB): Ua rau muaj kev sib xws: los ntawm kev xav mus rau kev xyaum

Nws pom tias cov ntaub ntawv 5 nyob ntawm cov ntaub ntawv 1, 2, 3, 4 - raws li, nws tos ua ntej tus neeg siv tau nkag mus rau cov kev hloov pauv los ntawm Penny qhov kev txiav txim siab nkag, thaum tag nrho cov kev hloov pauv dhau los tau dhau los ntawm cov ntaub ntawv.

Qhov no tsis haum rau peb ib yam, vim tias tseem muaj cov ntaub ntawv ntau dhau, thiab nws yuav ua rau qeeb. Muaj lwm txoj hauv kev ...

Lub moos Lamport

Lawv laus heev. Lamport Clock txhais tau hais tias cov kev vam khom no tau muab tais rau hauv kev ua haujlwm scalar, uas yog hu ua Lamport Clock.

Ib qho scalar muaj nuj nqi yog qee tus lej paub daws teeb. Nws yog feem ntau hu ua logical lub sij hawm. Nrog rau txhua qhov xwm txheej, qhov ntsuas no nce ntxiv. Counter, uas tam sim no paub txog cov txheej txheem, xa txhua cov lus. Nws yog tseeb tias cov txheej txheem tuaj yeem tawm ntawm sync, lawv tuaj yeem muaj sijhawm sib txawv kiag li. Txawm li cas los xij, lub kaw lus qee qhov sib npaug ntawm lub moos nrog cov lus zoo li no. Yuav ua li cas rau qhov no?

Kuv faib cov shard loj hauv ob los ua kom pom tseeb: Cov phooj ywg tuaj yeem nyob hauv ib lub node, uas muaj ib daim ntawm cov khoom sau, thiab Pub tuaj yeem nyob hauv lwm qhov, uas muaj ib daim ntawm cov khoom no. Nws puas meej tias lawv tuaj yeem tawm ntawm kab li cas? Thawj Pub yuav hais tias: "Tshwj xeeb", thiab tom qab ntawd Cov Phooj Ywg. Yog tias lub kaw lus tsis muab qee yam kev lees paub tias Pub yuav tsis tshwm sim kom txog rau thaum Cov Phooj Ywg nyob hauv cov phooj ywg sau kuj raug xa tawm, ces peb yuav muaj raws nraim qhov xwm txheej uas kuv tau hais.

Koj pom yuav ua li cas lub sij hawm counter ntawm Feed logically nce:

HighLoad ++, Mikhail Tyulenev (MongoDB): Ua rau muaj kev sib xws: los ntawm kev xav mus rau kev xyaum

Yog li cov cuab yeej tseem ceeb ntawm Lamport Clock thiab Causal sib xws (piav los ntawm Lamport Clock) yog qhov no: yog tias peb muaj Cov Txheej Txheem A thiab B, thiab Txheej Txheem B nyob ntawm qhov xwm txheej A *, tom qab ntawd nws ua raws li LogicalTime of Event A tsawg dua. LogicalTime los ntawm Event B.

* Qee lub sij hawm lawv kuj hais tias A tshwm sim ua ntej B, uas yog, A tshwm sim ua ntej B - qhov no yog ib qho kev sib raug zoo uas ib nrab txiav txim rau tag nrho cov txheej xwm uas tshwm sim feem ntau.

Qhov ntxeev tsis yog. Qhov no yog qhov ua tau yog ib qho tsis zoo ntawm Lamport Clock - ib feem kev txiav txim. Muaj ib lub tswv yim hais txog cov xwm txheej ib txhij, uas yog, cov xwm txheej uas tsis yog (A tshwm sim ua ntej B) los yog (A tshwm sim ua ntej B). Ib qho piv txwv yuav yog Leonard qhov sib npaug ntawm lwm tus ua phooj ywg (tsis yog Leonard, tab sis Sheldon, piv txwv).
Qhov no yog cov cuab yeej uas feem ntau siv thaum ua haujlwm nrog Lamport moos: lawv saib tshwj xeeb ntawm kev ua haujlwm thiab los ntawm qhov no lawv txiav txim siab tias tej zaum cov xwm txheej no nyob ntawm. Vim tias ib txoj kev muaj tseeb: yog tias LogicalTime A tsawg dua LogicalTime B, ces B tsis tuaj yeem tshwm sim ua ntej A; thiab yog tias ntau, ces tej zaum.

Vector Clock

Txoj kev tsim kho ntawm lub moos Lamport yog Vector Clock. Lawv txawv ntawm txhua qhov ntawm node muaj nws lub moos cais, thiab lawv raug xa mus ua vector.
Hauv qhov no, koj pom tias zeroth Performance index ntawm vector yog lub luag haujlwm rau Pub, thiab thawj qhov ntsuas ntawm vector yog rau phooj ywg (txhua tus ntawm cov nodes). Thiab tam sim no lawv yuav nce: xoom qhov ntsuas ntawm "Pib" nce thaum sau ntawv - 1, 2, 3:

HighLoad ++, Mikhail Tyulenev (MongoDB): Ua rau muaj kev sib xws: los ntawm kev xav mus rau kev xyaum

Vim li cas Vector Clock zoo dua? Vim tias lawv tso cai rau koj txheeb xyuas cov xwm txheej twg ib txhij thiab thaum lawv tshwm sim ntawm cov nodes sib txawv. Qhov no yog ib qho tseem ceeb heev rau lub sharding system zoo li MongoDB. Txawm li cas los xij, peb tsis tau xaiv qhov no, txawm tias nws yog qhov zoo tshaj plaws, thiab nws ua haujlwm zoo, thiab nws yuav haum rau peb ...

Yog tias peb muaj 10 txhiab shards, peb tsis tuaj yeem hloov 10 txhiab yam khoom, txawm tias peb compress nws los yog tuaj nrog lwm yam - lub payload tseem yuav yog ob peb zaug me dua qhov ntim ntawm tag nrho vector. Yog li ntawd, gritting peb lub siab thiab cov hniav, peb tso tseg txoj kev no thiab txav mus rau lwm qhov.

Spanner TrueTime. Atomic moos

Kuv hais tias yuav muaj ib zaj dab neeg txog Spanner. Qhov no yog qhov txias, ncaj qha tawm ntawm lub xyoo pua XNUMXst: atomic moos, GPS synchronization.

Lub tswv yim yog dab tsi? "Spanner" yog Google system uas nyuam qhuav dhau los ua rau tib neeg (lawv ntxiv SQL rau nws). Txhua qhov kev lag luam muaj qee lub sijhawm. Txij li lub sij hawm synchronized *, txhua qhov kev tshwm sim tuaj yeem raug muab rau lub sijhawm tshwj xeeb - atomic moos muaj sijhawm tos, tom qab ntawd lub sijhawm sib txawv tau lees paub tias "tshwm sim".

HighLoad ++, Mikhail Tyulenev (MongoDB): Ua rau muaj kev sib xws: los ntawm kev xav mus rau kev xyaum

Yog li, los ntawm kev sau ntawv yooj yim rau hauv cov ntaub ntawv thiab tos rau qee lub sijhawm, Serializability ntawm qhov kev tshwm sim tau txais kev lees paub. Lawv muaj cov qauv zoo sib xws uas tuaj yeem xav txog hauv txoj cai - nws yog Sab Nraud Consistency.

* Qhov no yog qhov teeb meem tseem ceeb nrog Lampart moos - lawv yeej tsis synchronous ntawm cov kab ke. Lawv tuaj yeem sib txawv; txawm tias nrog NTP, lawv tseem ua haujlwm tsis zoo. "Spanner" muaj lub moos atomic thiab synchronization, zoo li, yog microseconds.

Vim li cas peb tsis xaiv? Peb tsis xav tias peb cov neeg siv muaj lub moos atomic built-in. Thaum lawv tshwm sim, tau tsim rau hauv txhua lub laptop, yuav muaj qee yam zoo heev GPS synchronization - ces yog ... Tab sis rau tam sim no qhov zoo tshaj plaws uas ua tau yog Amazon, Base Stations - rau fanatics... Yog li peb siv lwm yam watches .

Lub moos Hybrid

Qhov no yeej yog dab tsi zuam hauv MongoDB thaum kom ntseeg tau tias Causal sib xws. Lawv hybrid li cas? Hybrid yog tus nqi scalar, tab sis nws muaj ob yam:

HighLoad ++, Mikhail Tyulenev (MongoDB): Ua rau muaj kev sib xws: los ntawm kev xav mus rau kev xyaum

  • Thawj yog lub sijhawm Unix (peb vib nas this tau dhau los txij li "pib lub ntiaj teb lub computer").
  • Qhov thib ob yog qee qhov nce ntxiv, kuj yog 32-ntsis tsis tau kos npe int.

Qhov ntawd yog tag nrho, ua tau. Muaj txoj hauv kev no: feem uas yog lub luag haujlwm rau lub sijhawm yog synchronized nrog lub moos txhua lub sijhawm; txhua zaus qhov hloov tshiab tshwm sim, qhov no yog synchronized nrog lub moos thiab nws hloov tawm hais tias lub sij hawm yog ib txwm ntau los yog tsawg dua, thiab increment tso cai rau koj kom paub qhov txawv ntawm cov xwm txheej uas tshwm sim nyob rau tib lub sij hawm.

Vim li cas qhov no tseem ceeb rau MongoDB? Vim tias nws tso cai rau koj ua qee yam ntawm cov khw noj mov thaub qab ntawm qee lub sijhawm, uas yog, qhov xwm txheej tau ntsuas los ntawm lub sijhawm. Qhov no yog qhov tseem ceeb thaum xav tau qee yam xwm txheej; Rau cov ntaub ntawv, cov xwm txheej yog kev hloov pauv hauv cov ntaub ntawv uas tshwm sim ntawm qee lub sijhawm hauv lub sijhawm.

Kuv yuav qhia koj qhov laj thawj tseem ceeb tshaj plaws rau koj (thov tsis txhob qhia leej twg)! Peb tau ua qhov no vim qhov no yog qhov teeb tsa, cov ntaub ntawv txheeb xyuas zoo li hauv MongoDB OpLog. OpLog yog cov qauv ntaub ntawv uas muaj tag nrho cov kev hloov pauv hauv cov ntaub ntawv: lawv thawj zaug mus rau OpLog, thiab tom qab ntawd lawv tau thov rau Kev Cia nws tus kheej nyob rau hauv rooj plaub thaum nws yog hnub rov ua dua lossis shard.

Qhov no yog qhov laj thawj tseem ceeb. Txawm li cas los xij, tseem muaj cov kev cai tsim nyog rau kev tsim cov ntaub ntawv, uas txhais tau hais tias nws yuav tsum yooj yim - me ntsis code, ob peb yam uas tawg li sai tau uas yuav tsum tau rov sau dua thiab sim. Qhov tseeb tias peb cov oplogs tau txheeb xyuas los ntawm hybrid moos tau pab ntau heev thiab tso cai rau peb xaiv txoj cai. Nws yeej them tawm thiab ua cas magically ua haujlwm ntawm thawj tus qauv. Nws yog txias heev!

Lub moos synchronization

Muaj ntau ntau txoj hauv kev synchronization tau piav qhia hauv cov ntaub ntawv tshawb fawb. Kuv tab tom tham txog synchronization thaum peb muaj ob qhov sib txawv. Yog hais tias muaj ib qho kev hloov pauv, tsis tas yuav muaj kev sib koom ua ke: qhov no yog "ib tus tswv"; peb muaj OpLog, uas txhua qhov kev hloov pauv poob - qhov no, txhua yam twb tau txiav txim nyob rau hauv "Oplog" nws tus kheej. Tab sis yog tias peb muaj ob qhov sib txawv, lub sijhawm synchronization tseem ceeb ntawm no. Nov yog qhov vector moos pab ntau dua! Tab sis peb tsis muaj lawv.

HighLoad ++, Mikhail Tyulenev (MongoDB): Ua rau muaj kev sib xws: los ntawm kev xav mus rau kev xyaum

Qhov thib ob yog qhov tsim nyog - qhov no yog "Lub plawv dhia". Nws muaj peev xwm pauv tau qee cov cim qhia uas tshwm sim txhua lub sijhawm. Tab sis Heartbeats qeeb dhau, peb tsis tuaj yeem muab latency rau peb cov neeg siv khoom.

Lub sijhawm tiag tiag yog qhov zoo kawg nkaus. Tab sis, dua, qhov no yuav yog yav tom ntej ... Txawm hais tias nws tuaj yeem ua tiav hauv Atlas, twb tau nrawm "Amazon" lub sijhawm synchronizers. Tab sis nws yuav tsis muaj rau txhua tus.

Gossiping yog thaum tag nrho cov lus suav nrog lub sijhawm. Qhov no yog kwv yees li peb siv. Txhua cov lus ntawm cov nodes, tus tsav tsheb, cov ntaub ntawv ntawm router, txhua yam rau MongoDB yog qee yam ntawm cov khoom, cov khoom siv database uas muaj lub moos uas khiav. Lawv muaj lub ntsiab lus ntawm hybrid lub sij hawm nyob txhua qhov chaw, nws yog kis. 64 ntsis? Qhov no tso cai, qhov no yog ua tau.

Nws ua haujlwm li cas ua ke?

Ntawm no kuv tab tom saib ntawm ib qho teeb tsa replica ua kom yooj yim me ntsis. Muaj cov thawj thiab thib ob. Secondary ua replication thiab tsis yog ib txwm synchronized tag nrho nrog Primary.

Ib qho kev ntxig tshwm sim rau hauv "Primery" nrog rau qee lub sijhawm tus nqi. Qhov kev ntxig no nce qhov suav nrog 11, yog tias qhov no yog qhov siab tshaj plaws. Los yog nws yuav xyuas cov nqi moos thiab sync rau lub moos yog tias lub moos muaj nuj nqis ntau dua. Qhov no tso cai rau koj los npaj raws sijhawm.

Tom qab nws ua qhov kev kaw cia, lub sijhawm tseem ceeb tshwm sim. Lub moos nyob hauv "MongoDB" thiab tsuas yog nce ntxiv thaum sau ntawv rau "Oplog". Qhov no yog qhov xwm txheej uas hloov lub xeev ntawm lub system. Nyob rau hauv tag nrho cov lus classic, ib qho kev tshwm sim yog suav tias yog thaum cov lus hits ib lub node: cov lus tau tuaj txog, uas txhais tau hais tias lub kaw lus tau hloov nws lub xeev.

Qhov no yog vim lub fact tias thaum lub sij hawm kev tshawb fawb nws tsis tau meej meej yuav ua li cas cov lus no yuav raug txhais. Peb paub tseeb tias yog tias nws tsis muaj kev cuam tshuam hauv "Oplog", ces nws yuav tsis raug txhais nyob rau hauv ib txoj kev, thiab kev hloov hauv lub xeev ntawm lub system tsuas yog nkag mus rau hauv "Oplog". Qhov no simplifies txhua yam rau peb: tus qauv simplifies nws, thiab tso cai rau peb los npaj nws nyob rau hauv ib tug replica set, thiab ntau lwm yam pab tau.

Tus nqi uas twb tau sau rau "Oplog" yog xa rov qab - peb paub tias "Oplog" twb muaj tus nqi no, thiab nws lub sijhawm yog 12. Tam sim no, hais tias, nyeem ntawv pib los ntawm lwm qhov ntawm (Secondary), thiab nws kis tom qabClusterTime hauv lus. Nws hais tias: β€œKuv xav tau txhua yam uas tshwm sim tsawg kawg tom qab 12 lossis thaum lub sijhawm kaum ob” (saib daim duab saum toj no).

Qhov no yog qhov hu ua Causal ib txwm sib xws (CAT). Muaj ib lub tswv yim zoo li no hauv kev xav tias qhov no yog qee lub sijhawm, uas zoo ib yam hauv nws tus kheej. Hauv qhov no, peb tuaj yeem hais tias qhov no yog lub xeev ntawm qhov system uas tau pom thaum lub sijhawm 12.

Tam sim no tsis muaj dab tsi nyob ntawm no tsis tau, vim hais tias hom no simulates qhov xwm txheej thaum koj xav tau Lub Tsev Kawm Ntawv Phaj Siab los rov luam cov ntaub ntawv los ntawm Thawj Tswj Hwm. Nws tos...Thiab tam sim no cov ntaub ntawv tau tuaj txog - nws rov qab cov nqi no rov qab.

HighLoad ++, Mikhail Tyulenev (MongoDB): Ua rau muaj kev sib xws: los ntawm kev xav mus rau kev xyaum

Qhov ntawd zoo nkauj npaum li cas nws txhua yam ua haujlwm. Yuav luag.

"yuav luag" txhais li cas? Cia peb xav tias muaj qee tus neeg tau nyeem thiab nkag siab tias qhov no ua haujlwm li cas. Kuv pom tau hais tias txhua zaus ClusterTime tshwm sim, nws hloov kho lub moos logical sab hauv, thiab tom qab ntawd nkag mus ntxiv los ntawm ib qho. Txoj haujlwm no siv 20 kab. Cia peb hais tias tus neeg no kis tus lej loj tshaj 64-ntsis, rho tawm ib qho.

Vim li cas "tso ib"? Vim tias lub moos sab hauv yuav raug hloov pauv rau hauv tus nqi no (pom tseeb, qhov no yog qhov loj tshaj plaws thiab ntau dua li lub sijhawm tam sim no), ces qhov kev nkag yuav tshwm sim hauv "Oplog", thiab lub moos yuav nce ntxiv los ntawm lwm chav tsev - thiab yuav muaj. ua tus nqi siab tshaj plaws (muaj tsuas yog tag nrho cov units, tsis muaj qhov twg mus), unsaint ints).

Nws yog qhov tseeb tias tom qab qhov no, lub kaw lus yuav ua tsis tau kiag li rau txhua yam. Nws tuaj yeem tsuas yog rub tawm thiab ntxuav - ntau phau ntawv ua haujlwm. Muaj tag nrho:

HighLoad ++, Mikhail Tyulenev (MongoDB): Ua rau muaj kev sib xws: los ntawm kev xav mus rau kev xyaum

Ntxiv mus, yog tias qhov no tau rov ua dua lwm qhov, ces tag nrho pawg tsuas yog poob. Qhov xwm txheej tsis txaus ntseeg kiag li uas leej twg tuaj yeem npaj tau sai thiab yooj yim! Yog li ntawd, peb suav tias lub sijhawm no yog ib qho tseem ceeb tshaj plaws. Yuav tiv thaiv li cas?

Peb txoj hauv kev yog kos npe rau clusterTime

Qhov no yog li cas nws kis tau rau hauv cov lus (ua ntej cov ntawv xiav). Tab sis peb kuj pib tsim ib qho kos npe (xiav ntawv):

HighLoad ++, Mikhail Tyulenev (MongoDB): Ua rau muaj kev sib xws: los ntawm kev xav mus rau kev xyaum

Kev kos npe yog tsim los ntawm tus yuam sij uas khaws cia hauv cov ntaub ntawv, hauv ib puag ncig ruaj ntseg; nws tus kheej yog tsim thiab kho tshiab (cov neeg siv tsis pom dab tsi txog nws). Ib qho hash yog tsim, thiab txhua cov lus tau kos npe thaum tsim thiab siv tau thaum tau txais.
Cov lus nug tej zaum yuav tshwm sim hauv tib neeg lub siab: "Qhov no ua rau qeeb npaum li cas?" Kuv tau hais rau koj tias nws yuav tsum ua haujlwm sai, tshwj xeeb tshaj yog thaum tsis muaj qhov tshwj xeeb no.

Nws txhais li cas los siv Causal sib xws hauv qhov no? Qhov no yog qhia cov afterClusterTime parameter. Yog tsis muaj qhov no, nws yuav yooj yim dhau qhov tseem ceeb lawm. Gossiping, pib ntawm version 3.6, ib txwm ua haujlwm.

Yog tias peb tawm mus tas li ntawm kev kos npe, nws yuav ua rau lub kaw lus qeeb txawm tias tsis muaj qhov tshwj xeeb, uas tsis ua raws li peb txoj hauv kev thiab cov kev xav tau. Yog li ntawd peb tau ua dab tsi?

Ua sai sai!

Nws yog ib qho yooj yim heev, tab sis qhov ua kom yuam kev yog qhov nthuav - Kuv yuav qhia nws, tej zaum ib tus neeg yuav txaus siab.
Peb muaj hash uas khaws cov ntaub ntawv kos npe. Tag nrho cov ntaub ntawv mus dhau lub cache. Lub cache tsis kos npe rau lub sijhawm tshwj xeeb, tab sis Range. Thaum qee tus nqi tuaj txog, peb tsim qhov Range, npog qhov kawg 16 khoom, thiab peb kos npe rau tus nqi no:

HighLoad ++, Mikhail Tyulenev (MongoDB): Ua rau muaj kev sib xws: los ntawm kev xav mus rau kev xyaum

Los ntawm tau txais kev kos npe zoo li no, peb ua kom lub kaw lus nrawm (kuj) 65 txhiab zaus. Nws ua haujlwm zoo: thaum peb ua qhov kev sim, lub sij hawm tau txo qis los ntawm 10 txhiab zaus thaum peb muaj qhov hloov tshiab ua ntu zus. Nws yog qhov tseeb tias thaum lawv muaj qhov sib txawv, qhov no tsis ua haujlwm. Tab sis nyob rau hauv feem ntau cov tswv yim nws ua hauj lwm. Kev sib xyaw ua ke ntawm Range kos npe nrog rau kos npe daws teeb meem kev ruaj ntseg.

Peb tau kawm dab tsi?

Cov lus qhia peb tau kawm los ntawm qhov no:

  • Peb yuav tsum nyeem cov ntaub ntawv, cov dab neeg, cov ntawv, vim peb muaj ntau yam nthuav. Thaum peb ua haujlwm ntawm qee qhov tshwj xeeb (tshwj xeeb tam sim no, thaum peb tau ua lag luam, thiab lwm yam), peb yuav tsum nyeem thiab nkag siab. Nws yuav siv sij hawm, tab sis nws yeej muaj txiaj ntsig zoo vim nws ua kom pom tseeb tias peb nyob qhov twg. Peb tsis zoo li tuaj nrog dab tsi tshiab - peb tsuas yog coj cov khoom xyaw.

    Feem ntau, muaj qee qhov sib txawv ntawm kev xav thaum muaj kev sib tham txog kev kawm (Sigmon, piv txwv) - txhua tus tsom mus rau cov tswv yim tshiab. Dab tsi yog qhov tshiab ntawm peb cov algorithm? Tsis muaj ib yam tshiab tshwj xeeb ntawm no. Lub novelty es nyob rau hauv txoj kev uas peb muab cov uas twb muaj lawm mus kom ze ua ke. Yog li ntawd, thawj qhov yog nyeem cov classics, pib nrog Lampart.

  • Hauv kev tsim khoom, cov kev xav tau sib txawv kiag li. Kuv paub tseeb tias koj feem ntau tsis ntsib nrog "sphereical" databases hauv lub tshuab nqus tsev tsis pom, tab sis nrog ib txwm muaj, cov khoom tiag tiag uas muaj teeb meem nrog kev muaj, latency thiab ua txhaum kev zam txim.
  • Qhov kawg yog qhov uas peb yuav tsum xav txog cov tswv yim sib txawv thiab muab ob peb cov lus sib txawv rau hauv ib qho, ua ke. Lub tswv yim hais txog kev kos npe, piv txwv li, feem ntau yog los ntawm ib tsab xov xwm uas suav tias yog Paxos raws tu qauv, uas rau cov uas tsis yog-Byzantine Failors yog nyob rau hauv kev tso cai raws tu qauv, rau Byzantine sawv daws - sab nraum lub tso cai raws tu qauv ... Feem ntau, qhov no yog raws nraim li peb. xaus li ua.

    Tsis muaj dab tsi tshiab ntawm no! Tab sis sai li sai tau peb muab tag nrho ua ke ... Nws yog tib yam li hais tias Olivier zaub xam lav daim ntawv qhia tsis muaj tseeb, vim hais tias qe, mayonnaise thiab dib twb tau tsim ... Nws yog hais txog tib zaj dab neeg.

HighLoad ++, Mikhail Tyulenev (MongoDB): Ua rau muaj kev sib xws: los ntawm kev xav mus rau kev xyaum

Kuv yuav ua tiav nrog qhov no. Ua tsaug!

Lus nug

Cov lus nug los ntawm cov neeg tuaj saib (tom qab no hu ua B): - Ua tsaug, Mikhail, rau daim ntawv qhia! Lub ncauj lus hais txog lub sijhawm yog qhov nthuav. Koj siv Gossiping. Lawv hais tias txhua tus muaj lawv lub sijhawm, txhua tus paub lawv lub sijhawm hauv zos. Raws li kuv nkag siab nws, peb muaj tus tsav tsheb - tuaj yeem muaj ntau tus neeg siv nrog cov neeg tsav tsheb, cov lus nug-planners ib yam nkaus, shards ib yam nkaus ... Thiab dab tsi yog qhov system tuaj rau yog tias peb mam li nco dheev muaj qhov tsis sib xws: ib tug neeg txiav txim siab tias nws yog rau ib qho. feeb tom ntej, ib feeb tom qab? Peb yuav mus qhov twg?

MT: - Cov lus nug zoo tiag tiag! Kuv tsuas yog xav tham txog shards. Yog tias kuv nkag siab cov lus nug kom raug, peb muaj cov xwm txheej hauv qab no: muaj shard 1 thiab shard 2, kev nyeem ntawv tshwm sim los ntawm ob lub shards - lawv muaj qhov sib txawv, lawv tsis sib cuam tshuam, vim lub sij hawm uas lawv paub txawv, tshwj xeeb tshaj yog lub sij hawm uas lawv muaj nyob rau hauv oplogs.
Wb hais tias shard 1 ua tau ib lab cov ntaub ntawv, shard 2 tsis ua dab tsi kiag li, thiab qhov kev thov tuaj rau ob shards. Thiab thawj tus muaj tom qabClusterTime tshaj li ib lab. Hauv qhov xwm txheej zoo li no, raws li kuv tau piav qhia, shard 2 yuav tsis teb txhua.

Hauv: – Kuv xav paub yuav ua li cas lawv synchronize thiab xaiv ib lub sij hawm tsim nyog?

MT: - Yooj yim heev rau synchronize. Shard, thaum tom qabClusterTime tuaj rau nws thiab nws tsis pom lub sijhawm hauv "Oplog", pib tsis pom zoo. Qhov ntawd yog, nws tsa nws lub sijhawm nrog nws txhais tes kom muaj nuj nqis no. Qhov no txhais tau hais tias nws tsis muaj cov xwm txheej cuam tshuam qhov kev thov no. Nws tsim qhov kev tshwm sim no artificially thiab yog li ua Causal Consistent.

Hauv: - Yuav ua li cas yog tias tom qab no qee qhov xwm txheej tuaj rau nws uas tau ploj mus rau qhov chaw hauv lub network?

MT: - Shard yog tsim los ntawm txoj kev uas lawv yuav tsis tuaj dua, vim nws yog ib tus tswv. Yog nws twb sau npe lawm ces lawv tsis tuaj, tab sis yuav tuaj tom qab. Nws tsis tuaj yeem tshwm sim tias ib yam dab tsi tau daig rau qhov chaw, tom qab ntawd nws tsis sau, thiab tom qab ntawd cov xwm txheej no tuaj txog - thiab Causal sib xws tau tawg. Thaum nws tsis sau, lawv yuav tsum tuaj tom ntej (nws yuav tos lawv).

HighLoad ++, Mikhail Tyulenev (MongoDB): Ua rau muaj kev sib xws: los ntawm kev xav mus rau kev xyaum

Hauv: - Kuv muaj ob peb lo lus nug txog cov kab. Causal sib xws xav tias muaj ib qho kab ke ntawm kev ua uas yuav tsum tau ua. Yuav ua li cas yog tias ib qho ntawm peb cov pob ploj lawm? Ntawm no los txog hnub tim 10, 11... lub 12 twb ploj lawm, thiab sawv daws tseem tos kom txog hnub kawg. Thiab tam sim ntawd peb lub tsheb tuag, peb ua tsis tau dab tsi. Puas muaj qhov ntev tshaj plaws ntawm cov kab uas sau ua ntej raug tua? Dab tsi ua rau tuag taus tshwm sim thaum ib lub xeev poob? Ntxiv mus, yog tias peb sau tseg tias muaj qee lub xeev yav dhau los, ces peb yuav tsum pib los ntawm nws li cas? Tab sis lawv tsis tau thawb nws mus!

MT: – Kuj yog ib lo lus nug zoo! Peb ua dab tsi? MongoDB muaj lub tswv yim ntawm pawg neeg sau ntawv, pawg neeg nyeem. Yuav ua li cas cov lus yuav ploj? Thaum sau ntawv tsis yog pawg lossis thaum nyeem tsis yog pawg (qee yam khib nyiab kuj yuav lo).
Hais txog Causal sib xws, ib qho kev sim loj loj tau ua tiav, qhov tshwm sim ntawm qhov uas yog thaum sau thiab nyeem tsis yog pawg, kev ua txhaum ntawm Causal sib xws tshwm sim. Raws li koj hais!

Peb cov lus qhia: siv tsawg kawg ntawm pawg nyeem ntawv thaum siv Causal sib xws. Hauv qhov no, tsis muaj dab tsi yuav ploj, txawm tias cov ntaub ntawv teev tseg ploj lawm... Qhov no yog qhov xwm txheej orthogonal: yog tus neeg siv tsis xav kom cov ntaub ntawv ploj, nws yuav tsum tau siv cov ntaub ntawv teev tseg. Lub Causal sib xws tsis tau lees tias durability. Durability yog guaranteed los ntawm replication thiab machinery txuam nrog replication.

Hauv: - Thaum peb tsim ib qho piv txwv uas ua haujlwm rau peb (tsis yog tswv, tab sis qhev, raws), nws tso siab rau lub sijhawm Unix ntawm nws tus kheej lub tshuab lossis lub sijhawm ntawm "tus tswv"; Nws puas sync rau thawj zaug lossis ib ntus?

MT: - Kuv yuav qhia meej tam sim no. Shard (piv txwv li kab rov tav muab faib) - yeej ib txwm muaj ib qho tseem ceeb nyob rau ntawd. Thiab ib tug shard tuaj yeem muaj "tus tswv" thiab tuaj yeem muaj qhov hloov pauv. Tab sis lub shard ib txwm txhawb cov ntaubntawv povthawj siv, vim hais tias nws yuav tsum txhawb ib co sau (lub shard muaj Primary).

Hauv: - Yog li txhua yam nyob ntawm tus "tus tswv" nkaus xwb? Puas yog lub sijhawm tswv ib txwm siv?

MT: - Yog. Koj tuaj yeem ua piv txwv hais tias: lub moos yog ticking thaum nkag mus rau "tus tswv", rau hauv "Oplog" tshwm sim.

Hauv: - Peb muaj cov neeg siv khoom sib txuas thiab tsis xav paub dab tsi txog lub sijhawm?

MT: - Koj tsis tas yuav paub dab tsi kiag li! Yog tias peb tham txog nws ua haujlwm li cas ntawm tus neeg siv khoom: thaum tus neeg siv khoom xav siv Causal sib xws, nws yuav tsum qhib kev sib tham. Tam sim no txhua yam nyob ntawd: kev lag luam hauv kev sib kho, thiab muab cov cai ... Ib qho kev sib kho yog qhov kev txiav txim ntawm cov xwm txheej tshwm sim nrog tus neeg siv khoom.

Yog tias nws qhib qhov kev sib tham no thiab hais tias nws xav tau Causal sib xws (yog tias qhov kev sib tham txhawb Causal sib xws los ntawm lub neej ntawd), txhua yam ua haujlwm tau txais. Tus neeg tsav tsheb nco txog lub sijhawm no thiab nce nws thaum nws tau txais cov lus tshiab. Nws nco ntsoov cov lus teb yav dhau los los ntawm lub server uas xa rov qab cov ntaub ntawv. Qhov kev thov tom ntej no yuav muaj afterCluster("lub sij hawm ntau dua qhov no").

Tus neeg siv khoom tsis tas yuav paub dab tsi kiag li! Qhov no yog kiag li opaque rau nws. Yog tias tib neeg siv cov yam ntxwv no, lawv yuav ua li cas? Ua ntej, koj tuaj yeem nyeem cov tsev kawm theem nrab kom nyab xeeb: koj tuaj yeem sau ntawv mus rau Lub Tsev Kawm Ntawv Qib Siab thiab nyeem los ntawm cov tsev kawm theem nrab uas tau muab coj los ua thiab nco ntsoov tias nws ua haujlwm. Nyob rau tib lub sijhawm, cov kev sib tham uas tau sau tseg hauv Lub Tsev Kawm Ntawv Tseem Ceeb tuaj yeem hloov mus rau Secondary, piv txwv li koj tuaj yeem siv tsis yog ib zaug, tab sis ob peb.

Hauv: - Ib txheej tshiab ntawm Kev Tshawb Fawb Txog Kev Tshawb Fawb - CRDT (Cov Ntaub Ntawv Tsis Muaj Teeb Meem Tsis Muaj Teeb Meem) cov ntaub ntawv hom - muaj feem cuam tshuam nrog lub ntsiab lus ntawm Kev Sib Haum Xeeb. Koj puas tau xav txog kev sib koom ua ke cov ntaub ntawv no rau hauv cov ntaub ntawv thiab koj tuaj yeem hais dab tsi txog nws?

MT: - Cov lus nug zoo! CRDT ua rau kev nkag siab rau kev sau ntawv tsis sib haum: hauv MongoDB, ib tus tswv.

Hauv: - Kuv muaj lus nug los ntawm devops. Nyob rau hauv lub ntiaj teb no tiag tiag, muaj xws li Jesuitical xwm txheej thaum lub Byzantine tsis ua hauj lwm tshwm sim, thiab cov neeg phem nyob rau hauv lub cheeb tsam tiv thaiv pib poke rau hauv raws tu qauv, xa cov khoom siv tes ua nyob rau hauv ib tug tshwj xeeb txoj kev?

HighLoad ++, Mikhail Tyulenev (MongoDB): Ua rau muaj kev sib xws: los ntawm kev xav mus rau kev xyaum

MT: - Cov neeg phem nyob hauv ib puag ncig zoo li Trojan nees! Cov neeg phem nyob hauv ib puag ncig tuaj yeem ua ntau yam phem.

Hauv: - Nws yog qhov tseeb tias tawm mus, hais lus ntxhib, lub qhov nyob hauv lub server uas koj tuaj yeem thawb lub vaj tsiaj ntawm ntxhw thiab tsoo tag nrho pawg mus ib txhis ... Nws yuav siv sijhawm rau kev rov qab los ntawm phau ntawv ... Qhov no, muab nws me me, yog yuam kev. Ntawm qhov tod tes, qhov no yog qhov nthuav: hauv lub neej tiag tiag, hauv kev xyaum, muaj cov xwm txheej thaum ib txwm muaj kev tawm tsam sab hauv?

MT: - Txij li thaum kuv tsis tshua muaj kev cuam tshuam kev nyab xeeb hauv lub neej tiag tiag, kuv tsis tuaj yeem hais tias lawv tshwm sim. Tab sis yog tias peb tham txog kev txhim kho lub tswv yim, peb xav zoo li no: peb muaj ib puag ncig uas muab cov txiv neej ua kev ruaj ntseg - qhov no yog lub tsev fuabtais, phab ntsa; thiab hauv ib cheeb tsam koj tuaj yeem ua txhua yam koj xav tau. Nws yog qhov tseeb tias muaj cov neeg siv uas muaj peev xwm tsuas saib, thiab muaj cov neeg siv uas muaj peev xwm tshem tawm cov npe.

Nyob ntawm txoj cai, qhov kev puas tsuaj uas cov neeg siv tuaj yeem ua tau tuaj yeem yog nas, lossis nws tuaj yeem yog ntxhw. Nws yog qhov tseeb tias tus neeg siv nrog tag nrho cov cai tuaj yeem ua txhua yam. Tus neeg siv uas muaj cai txwv yuav ua rau muaj kev phom sij tsawg. Tshwj xeeb, nws tsis tuaj yeem rhuav tshem lub system.

Hauv: - Hauv thaj chaw tiv thaiv, ib tus neeg sim tsim cov txheej txheem npaj txhij txog rau cov neeg rau zaub mov txhawm rau txhawm rau rhuav tshem tag nrho cov server, thiab yog tias koj muaj hmoo, tag nrho pawg ... Puas yog nws puas tau txais qhov "zoo"?

MT: "Kuv yeej tsis tau hnov ​​txog tej yam zoo li no." Qhov tseeb tias koj tuaj yeem tsoo lub server hauv txoj kev no tsis muaj qhov zais cia. Ua tsis tiav sab hauv, yog los ntawm cov txheej txheem, yog tus neeg siv tau tso cai uas tuaj yeem sau qee yam zoo li no hauv cov lus ... Qhov tseeb, nws tsis yooj yim sua, vim nws tseem yuav raug txheeb xyuas. Nws muaj peev xwm lov tes taw qhov kev lees paub no rau cov neeg siv uas tsis xav tau - ces qhov ntawd yog lawv qhov teeb meem; lawv, hais lus ntxhib, rhuav tshem cov phab ntsa ntawm lawv tus kheej thiab koj tuaj yeem thawb tus ntxhw hauv qhov ntawd, uas yuav tsuj ... Tab sis feem ntau, koj tuaj yeem hnav ua tus kws kho, tuaj rub tawm!

Hauv: - Ua tsaug rau daim ntawv qhia. Sergey (Yandex). Muaj ib qhov tas mus li hauv Mong uas txwv cov neeg pov npav xaiv tsa hauv Replica Set, thiab qhov tas li no yog 7 (xya). Vim li cas qhov no yog qhov tsis tu ncua? Vim li cas qhov no tsis yog qee yam kev ntsuas?

MT: - Peb muaj Replica Sets nrog 40 nodes. Ib txwm muaj feem ntau. kuv tsis paub tias version twg...

Hauv: - Hauv Replica Set koj tuaj yeem khiav cov tswvcuab tsis pov npav, tab sis muaj ntau tshaj 7 tus tswvcuab pov npav. Peb yuav ua li cas thiaj li muaj sia nyob ntawm qhov kev kaw hauv qhov no yog tias peb Cov Txheej Txheem Tshaj Tawm tau kis mus thoob 3 lub chaw pov npav? Ib lub chaw khaws ntaub ntawv tuaj yeem tua tau yooj yim, thiab lwm lub tshuab tuaj yeem poob.

MT: - Qhov no twb dhau me ntsis dhau ntawm qhov kev tshaj tawm. Nov yog ib lo lus nug dav dav. Tej zaum kuv tuaj yeem qhia koj txog nws tom qab.

HighLoad ++, Mikhail Tyulenev (MongoDB): Ua rau muaj kev sib xws: los ntawm kev xav mus rau kev xyaum

Ib co ads πŸ™‚

Ua tsaug uas koj tau nyob nrog peb. Koj puas nyiam peb cov ntawv? Xav pom cov ntsiab lus nthuav ntxiv? Txhawb nqa peb los ntawm kev tso ib qho kev txiav txim lossis qhia rau cov phooj ywg, huab VPS rau cov tsim tawm los ntawm $ 4.99, ib qho tshwj xeeb analogue ntawm nkag-theem servers, uas tau tsim los ntawm peb rau koj: Qhov tseeb tag nrho txog VPS (KVM) E5-2697 v3 (6 Cores) 10GB DDR4 480GB SSD 1Gbps los ntawm $ 19 los yog yuav ua li cas faib cov server? (muaj nrog RAID1 thiab RAID10, mus txog 24 cores thiab mus txog 40GB DDR4).

Dell R730xd 2x pheej yig dua hauv Equinix Tier IV data center hauv Amsterdam? Tsuas yog nyob ntawm no 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TV los ntawm $ 199 hauv Netherlands! Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - los ntawm $ 99! Nyeem txog Yuav ua li cas tsim infrastructure Corp. chav kawm nrog kev siv Dell R730xd E5-2650 v4 servers muaj nqis 9000 euros rau ib lub nyiaj?

Tau qhov twg los: www.hab.com

Ntxiv ib saib