HighLoad++, Mikhail Tyulenev (MongoDB): Causal consistency: from theory to practice

Msonkhano wotsatira wa HighLoad ++ udzachitika pa Epulo 6 ndi 7, 2020 ku St.
Tsatanetsatane ndi matikiti kugwirizana. HighLoad ++ Siberia 2019. Hall "Krasnoyarsk". June 25, 12:00. Izi ndi mawu.

HighLoad++, Mikhail Tyulenev (MongoDB): Causal consistency: from theory to practice

Zimachitika kuti zofunikira zenizeni zimasemphana ndi chiphunzitso, pomwe zinthu zofunika pazamalonda sizimaganiziridwa. Nkhaniyi ikupereka ndondomeko yosankha ndi kuphatikiza njira zosiyanasiyana zopangira zigawo za Causal kusasinthasintha kutengera kafukufuku wamaphunziro malinga ndi zofunikira za malonda. Omvera aphunzira za njira zomwe zilipo kale zamawotchi omveka, kutsata kudalira, chitetezo chadongosolo, kulumikizana kwa mawotchi, ndi chifukwa chake MongoDB idakhazikika pamayankho ena.

Mikhail Tyulenev (wotchedwa MT): - Ndilankhula za Causal kusasinthika - ichi ndi gawo lomwe tidagwirapo ntchito ku MongoDB. Ndimagwira ntchito mu gulu la machitidwe ogawidwa, tinachita pafupifupi zaka ziwiri zapitazo.

HighLoad++, Mikhail Tyulenev (MongoDB): Causal consistency: from theory to practice

Pochita izi, ndidayenera kudzidziwa bwino ndi kafukufuku wambiri wamaphunziro, chifukwa gawoli laphunziridwa bwino. Zinapezeka kuti palibe nkhani imodzi yomwe ikugwirizana ndi zomwe zimafunikira muzosungirako zopangira chifukwa cha zofunikira zenizeni zomwe mwina zimapezeka muzopanga zilizonse.

Ndilankhula za momwe ife, monga ogula Kafukufuku wamaphunziro, timakonzekera china chake kuchokera pamenepo chomwe titha kuwonetsa kwa ogwiritsa ntchito ngati mbale yokonzekera yomwe ndiyosavuta komanso yotetezeka kugwiritsa ntchito.

Causal kusasinthasintha. Tiyeni tifotokoze mfundozo

Poyamba, ndikufuna kunena mwachidule kuti Causal kusasinthika ndi chiyani. Pali anthu awiri - Leonard ndi Penny (TV "The Big Bang Theory"):

HighLoad++, Mikhail Tyulenev (MongoDB): Causal consistency: from theory to practice

Tiyerekeze kuti Penny ali ku Ulaya ndipo Leonard akufuna kumuchitira phwando lodzidzimutsa. Ndipo sangaganize chilichonse chabwino kuposa kumutaya pamndandanda wa abwenzi ake, kutumiza abwenzi ake onse kuti: "Tiyeni tisangalatse Penny!" (ali ku Ulaya, pamene akugona, sakuwona zonsezi ndipo sangathe kuziwona, chifukwa kulibe). Pamapeto pake, amachotsa positiyi, amachotsa ku Feed ndikubwezeretsanso mwayi kuti asazindikire kalikonse ndipo palibe chokhumudwitsa.
Zonsezi ndi zabwino, koma tiyeni tiyerekeze kuti dongosolo likugawidwa ndipo zinthu zinalakwika pang'ono. Zitha kuchitika, mwachitsanzo, kuti kuletsa kwa Penny kunachitika pambuyo poti izi zidawonekera, ngati zochitikazo sizikugwirizana ndi chifukwa ndi zotsatira zake. Kwenikweni, ichi ndi chitsanzo cha pamene Causal kusasinthasintha kumafunika kuti achite bizinesi (pankhaniyi).

M'malo mwake, izi ndizinthu zosawerengeka za database - ndi anthu ochepa omwe amawathandiza. Tiyeni tipitirire ku zitsanzo.

Zitsanzo Zogwirizana

Kodi fanizo losasinthika mu database ndi chiyani? Izi ndi zina mwa zitsimikizo zomwe dongosolo logawidwa limapereka za deta yomwe kasitomala angalandire komanso motsatira.

M'malo mwake, mitundu yonse yofananira imatsikira momwe dongosolo logawira limafanana ndi dongosolo lomwe limayenda, mwachitsanzo, pa node imodzi pa laputopu. Umu ndi momwe dongosolo lomwe limayendera masauzande ambiri a "Node" zogawidwa ndi geo ndi laputopu, momwe zinthu zonsezi zimachitikira zokha.

Choncho, zitsanzo zotsatizana zimagwiritsidwa ntchito kokha ku machitidwe ogawidwa. Machitidwe onse omwe analipo kale ndipo ankagwira ntchito mofananamo sikelo yowongoka sanakumanepo ndi mavuto amenewa. Panali Buffer Cache imodzi, ndipo zonse zinkawerengedwa kuchokera pamenepo.

Chitsanzo Champhamvu

Kwenikweni, mtundu woyamba kwambiri ndi Wamphamvu (kapena mzere wokwera, monga umatchulidwira nthawi zambiri). Ichi ndi chitsanzo chokhazikika chomwe chimatsimikizira kuti kusintha kulikonse, kamodzi kutsimikiziridwa kuti kwachitika, kumawonekera kwa onse ogwiritsa ntchito dongosolo.

Izi zimapanga dongosolo lapadziko lonse la zochitika zonse mu database. Ichi ndi chinthu cholimba kwambiri chokhazikika, ndipo nthawi zambiri chimakhala chokwera mtengo kwambiri. Komabe, imathandizidwa bwino kwambiri. Ndizokwera mtengo kwambiri komanso zochedwa - sizimagwiritsidwa ntchito kawirikawiri. Izi zimatchedwa kukwera luso.

Palinso katundu wina wamphamvu womwe umathandizidwa ku Spanner - wotchedwa External Consistency. Tikambirana pambuyo pake.

Chopinga

Chotsatira ndi Causal, zomwe ndizomwe ndimakamba. Pali magawo angapo ang'onoang'ono pakati pa Strong ndi Causal omwe sindilankhula, koma onse amagwera ku Causal. Ichi ndi chitsanzo chofunikira chifukwa ndi champhamvu kwambiri pamitundu yonse, kugwirizana kwamphamvu kwambiri pamaso pa intaneti kapena magawo.

Zoyambitsa ndizochitika zomwe zochitika zimalumikizidwa ndi ubale woyambitsa-ndi-zotsatira. Nthawi zambiri amawonedwa ngati Werengani za ufulu wanu kuchokera kumalingaliro a kasitomala. Ngati kasitomala awona mfundo zina, sangathe kuwona zomwe zinali m'mbuyomu. Wayamba kale kuwona zowerengera zoyambirira. Zonse zimatsikira ku chinthu chomwecho.
Zoyambitsa monga chitsanzo chokhazikika ndi dongosolo lapadera la zochitika pa seva, momwe zochitika kuchokera kwa makasitomala onse zimawonedwa mofanana. Pankhaniyi, Leonard ndi Penny.

Zomaliza

Chitsanzo chachitatu ndi Eventual Consistency. Izi ndi zomwe machitidwe onse ogawidwa amathandizira, mtundu wocheperako womwe umamveka konse. Zimatanthawuza zotsatirazi: tikakhala ndi zosintha zina mu deta, nthawi zina zimakhala zogwirizana.

Panthawi imeneyi iye sanena kalikonse, mwinamwake iye angatembenuke kukhala Kugwirizana Kwakunja - ingakhale nkhani yosiyana kwambiri. Komabe, iyi ndi chitsanzo chodziwika kwambiri, chofala kwambiri. Mwachikhazikitso, onse ogwiritsa ntchito machitidwe ogawidwa amagwiritsa ntchito Eventual Consistency.

Ndikufuna kupereka zitsanzo zofananira:

HighLoad++, Mikhail Tyulenev (MongoDB): Causal consistency: from theory to practice

Kodi mivi imeneyi ikutanthauza chiyani?

  • Kuchedwa. Pamene mphamvu yokhazikika ikuwonjezeka, imakhala yaikulu pazifukwa zoonekeratu: muyenera kupanga zolemba zambiri, kupeza chitsimikiziro kuchokera kwa makamu onse ndi node omwe amatenga nawo mbali mumagulu kuti deta ilipo kale. Chifukwa chake, Eventual Consistency ili ndi yankho lachangu kwambiri, chifukwa, monga lamulo, mutha kuzikumbukira ndipo izi, makamaka, zidzakhala zokwanira.
  • Kupezeka. Ngati timvetsetsa izi monga kuthekera kwa dongosolo loyankhira pamaso pa kusweka kwa maukonde, magawo, kapena kulephera kwamtundu wina, kulolerana kolakwa kumawonjezeka pamene chitsanzo chokhazikika chikucheperachepera, chifukwa ndi zokwanira kwa ife kuti wolandira mmodzi amakhala ndi nthawi yomweyo. nthawi imapanga deta. Kusasinthika komaliza sikutsimikizira chilichonse chokhudza deta - ikhoza kukhala chilichonse.
  • Zosokoneza. Pa nthawi yomweyi, ndithudi, chiwerengero cha anomalies chikuwonjezeka. Mu Kugwirizana Kwamphamvu iwo pafupifupi sayenera kukhalapo konse, koma mu Kugwirizana Kwamapeto atha kukhala chilichonse. Funso likubuka: chifukwa chiyani anthu amasankha Eventual Consistency ngati ili ndi zolakwika? Yankho ndiloti zitsanzo za Eventual Consistency zikugwiritsidwa ntchito ndipo zolakwika zilipo, mwachitsanzo, mu nthawi yochepa; ndizotheka kugwiritsa ntchito mfitiyo kuti muwerenge komanso kuwerenga zambiri zomwe zimagwirizana; Nthawi zambiri zimakhala zotheka kugwiritsa ntchito zitsanzo zolimba zokhazikika. Mwakuchita izi zimagwira ntchito, ndipo nthawi zambiri kuchuluka kwa anomalies kumakhala kochepa panthawi.

Chithunzi cha CAP

Mukawona mawu osasinthasintha, kupezeka - ndi chiyani chimabwera m'maganizo mwanu? Ndiko kulondola - CAP theorem! Tsopano ndikufuna kuchotsa nthano ... Si ine - ndi Martin Kleppmann, yemwe analemba nkhani yodabwitsa, buku lodabwitsa.

HighLoad++, Mikhail Tyulenev (MongoDB): Causal consistency: from theory to practice

Theorem ya CAP ndi mfundo yomwe idapangidwa m'zaka za m'ma 2000 kuti Consistency, kupezeka, Partitions: tengani ziwiri zilizonse, ndipo simungathe kusankha zitatu. Inali mfundo yakutiyakuti. Zinatsimikiziridwa ngati theorem zaka zingapo pambuyo pake ndi Gilbert ndi Lynch. Ndiye anayamba kugwiritsidwa ntchito ngati mantra - machitidwe anayamba kugawidwa mu CA, CP, AP ndi zina zotero.

Chiphunzitsochi chinatsimikiziridwadi pazochitika zotsatirazi ... Choyamba, Kupezeka sikunkaganiziridwa ngati mtengo wopitirira kuchokera ku ziro mpaka mazana (0 - dongosolo ndi "lakufa", 100 - limayankha mofulumira; tazolowera kuziganizira motere) , koma monga katundu wa algorithm , zomwe zimatsimikizira kuti pazochita zake zonse zimabwezera deta.

Palibe mawu okhudza nthawi yoyankha konse! Pali algorithm yomwe imabweza deta pambuyo pa zaka 100 - algorithm yodabwitsa kwambiri yomwe ilipo, yomwe ili gawo la theorem ya CAP.
Chachiwiri: theorem idatsimikiziridwa kuti isintha makiyi omwewo, ngakhale kuti zosinthazi ndizosinthanso. Izi zikutanthauza kuti kwenikweni sagwiritsidwa ntchito, chifukwa mitunduyo ndi yosiyana Potsirizira pake, Consistency Yamphamvu (mwina).

Kodi zonsezi ndi za chiyani? Komanso, chiphunzitso cha CAP chimodzimodzi momwe chidatsimikizidwira sichikugwira ntchito ndipo sichigwiritsidwa ntchito kawirikawiri. M'mawonekedwe ongoyerekeza, mwanjira ina imalepheretsa chilichonse. Zimakhala mfundo ina yomwe ili yolondola mwachidziwitso, koma nthawi zambiri sinatsimikizidwe.

Causal kusasinthika ndi chitsanzo champhamvu kwambiri

Zomwe zikuchitika tsopano ndikuti mutha kupeza zinthu zonse zitatu: Kukhazikika, Kupezeka pogwiritsa ntchito magawo. Makamaka, Causal consistency ndiye chitsanzo champhamvu kwambiri chokhazikika, chomwe chimagwirabe ntchito pamaso pa Magawo (kuphwanya maukonde). Ichi ndichifukwa chake ili ndi chidwi kwambiri, ndichifukwa chake tidachita izi.

HighLoad++, Mikhail Tyulenev (MongoDB): Causal consistency: from theory to practice

Choyamba, imathandizira ntchito ya opanga mapulogalamu. Makamaka, kukhalapo kwa chithandizo chachikulu kuchokera kwa seva: pamene zolemba zonse zomwe zimachitika mkati mwa kasitomala mmodzi zimatsimikiziridwa kuti zifike motsatira ndondomeko yomweyo pa kasitomala wina. Kachiwiri, imalimbana ndi magawo.

MongoDB Internal Kitchen

Pokumbukira kuti ndi chakudya chamasana, timasamukira kukhitchini. Ndikuuzani zachitsanzo cha dongosolo, chomwe ndi MongoDB kwa iwo omwe akumva za database yotere kwa nthawi yoyamba.

HighLoad++, Mikhail Tyulenev (MongoDB): Causal consistency: from theory to practice

HighLoad++, Mikhail Tyulenev (MongoDB): Causal consistency: from theory to practice

MongoDB (yomwe imatchedwanso "MongoDB") ndi njira yogawidwa yomwe imathandizira makulitsidwe opingasa, ndiko kuti, sharding; ndipo mkati mwa shard iliyonse imathandiziranso kubwezeredwa kwa data, ndiko kuti, kubwerezabwereza.

Sharding ku MongoDB (osati malo ochezera a pa Intaneti) imapanga kugwirizanitsa, ndiko kuti, zolemba zilizonse (kapena "tebulo" malinga ndi deta yokhudzana) zimagawidwa m'zidutswa, ndipo seva imasuntha pakati pa shards.

Query Router, yomwe imagawira zopempha, kwa kasitomala ndi kasitomala yemwe amagwira ntchito. Imadziwa kale komwe ndi komwe kuli deta ndikuwongolera zopempha zonse ku shard yolondola.

Mfundo ina yofunika: MongoDB ndi mbuye mmodzi. Pali Pulayimale imodzi - imatha kutenga zolemba zomwe zimathandizira makiyi omwe ali nawo. Simungathe kulemba Multi-master write.

Tidatulutsa 4.2 - zinthu zatsopano zosangalatsa zidawonekera pamenepo. Makamaka, adayika Lucene - kusaka - yomwe ndi java yotheka ku Mongo, ndipo zidakhala zotheka kuchita kusaka kudzera ku Lucene, chimodzimodzi monga ku Elastica.

Ndipo adapanga chatsopano - Ma chart, amapezekanso pa Atlas (Mtambo wa Mongo womwe). Ali ndi Free Tier - mutha kusewera nayo. Ndinkakonda kwambiri Ma chart - kuwonera kwa data, mwachilengedwe.

Zosakaniza Choyambitsa kusasinthasintha

Ndinawerengera pafupifupi zolemba za 230 zomwe zasindikizidwa pamutuwu - kuchokera kwa Leslie Lampert. Tsopano kuchokera mu kukumbukira kwanga ndikuwuzani zina mwazinthu izi.

HighLoad++, Mikhail Tyulenev (MongoDB): Causal consistency: from theory to practice

Zonsezi zinayamba ndi nkhani ya Leslie Lampert, yomwe inalembedwa m'ma 1970. Monga mukuonera, kafukufuku wina pamutuwu akupitilirabe. Tsopano Causal consistency ikukumana ndi chidwi chokhudzana ndi chitukuko cha machitidwe ogawidwa.

Zoletsa

Kodi pali zoletsa zotani? Imeneyi ndi imodzi mwa mfundo zazikuluzikulu, chifukwa zoletsa zomwe dongosolo lopanga limapanga ndizosiyana kwambiri ndi zoletsedwa zomwe zimapezeka m'nkhani zamaphunziro. Nthawi zambiri amakhala ochita kupanga.

HighLoad++, Mikhail Tyulenev (MongoDB): Causal consistency: from theory to practice

  • Choyamba, "MongoDB" ndi mbuye m'modzi, monga ndanenera kale (izi zimathandizira kwambiri).
  • Timakhulupirira kuti dongosololi liyenera kuthandizira pafupifupi 10 shards. Sitingathe kupanga zisankho zilizonse zomanga zomwe zingachepetse mtengo uwu.
  • Tili ndi mtambo, koma timaganiza kuti munthu ayenera kukhala ndi mwayi akamatsitsa binary, amayendetsa pa laputopu yake, ndipo zonse zimayenda bwino.
  • Timangoganiza zomwe Kafukufuku samangoganizira: makasitomala akunja amatha kuchita chilichonse chomwe akufuna. MongoDB ndi gwero lotseguka. Chifukwa chake, makasitomala amatha kukhala anzeru komanso okwiya - amatha kufuna kuswa chilichonse. Tikuganiza kuti Byzantine Feilors angayambike.
  • Kwa makasitomala akunja omwe ali kunja kwa perimeter, pali malire ofunika: ngati mbaliyi ili yolephereka, ndiye kuti palibe kuwonongeka kwa ntchito kuyenera kuwonedwa.
  • Mfundo ina nthawi zambiri imakhala yotsutsana ndi maphunziro: kuyanjana kwa mitundu yam'mbuyomu ndi yamtsogolo. Madalaivala akale ayenera kuthandizira zosintha zatsopano, ndipo database iyenera kuthandizira madalaivala akale.

Kawirikawiri, zonsezi zimaika malire.

Zoyambitsa kusasinthika zigawo

Ine tsopano kulankhula za zigawo zikuluzikulu. Ngati tilingalira za Causal kusasinthasintha, titha kusankha midadada. Tidasankha kuchokera kuzinthu zomwe zili mgulu linalake: Kutsata Kudalira, kusankha mawotchi, momwe mawotchiwa angagwirizanitsire wina ndi mzake, ndi momwe timatsimikizirira chitetezo - ichi ndi chidule cha zomwe ndilankhulepo:

HighLoad++, Mikhail Tyulenev (MongoDB): Causal consistency: from theory to practice

Kutsata Kudalira Kwathunthu

N’chifukwa chiyani kuli kofunikira? Kotero kuti pamene deta ikubwerezedwa, zolemba zilizonse, kusintha kulikonse kwa deta kumakhala ndi chidziwitso chokhudza kusintha komwe kumadalira. Kusintha koyamba komanso kosazindikira ndi pamene uthenga uliwonse womwe uli ndi mbiri uli ndi zambiri za mauthenga am'mbuyomu:

HighLoad++, Mikhail Tyulenev (MongoDB): Causal consistency: from theory to practice

Mu chitsanzo ichi, nambala yomwe ili m'mabokosi opotana ndi manambala olembera. Nthawi zina zolemba izi zokhala ndi mtengo zimasamutsidwa kwathunthu, nthawi zina mitundu ina imasamutsidwa. Mfundo yaikulu ndi yakuti kusintha kulikonse kumakhala ndi chidziwitso cha m'mbuyomo (mwachiwonekere kumanyamula zonsezi mkati mwake).

Chifukwa chiyani tidasankha kusagwiritsa ntchito njirayi (kutsata kwathunthu)? Mwachiwonekere, chifukwa njirayi ndi yosatheka: kusintha kulikonse kwa malo ochezera a pa Intaneti kumadalira kusintha konse kwa malo ochezera a pa Intaneti, kusamutsa, kunena, Facebook kapena VKontakte pakusintha kulikonse. Komabe, pali kafukufuku wambiri pa Full Dependency Tracking - awa ndi malo ochezera a pa Intaneti; nthawi zina amagwiradi ntchito.

Kutsata Kudalira Momveka

Chotsatira ndi chochepa kwambiri. Kusamutsa kwa chidziwitso kumaganiziridwanso pano, koma kokha zomwe zimadalira momveka bwino. Zomwe zimatengera zomwe, monga lamulo, zimatsimikiziridwa ndi Kugwiritsa ntchito. Deta ikabwerezedwa, funsolo limangobwezera mayankho pamene zodalira zam'mbuyomu zakwaniritsidwa, ndiye kuti, zikuwonetsedwa. Ichi ndiye chiyambi cha momwe Causal consistency imagwirira ntchito.

HighLoad++, Mikhail Tyulenev (MongoDB): Causal consistency: from theory to practice

Amawona kuti zolemba 5 zimadalira zolemba 1, 2, 3, 4 - motero, amadikirira kasitomala asanakhale ndi mwayi wosintha zomwe Penny adasankha, pamene zosintha zonse zam'mbuyomu zadutsa kale pa database.

Izi siziyeneranso kwa ife, chifukwa pali zambiri zambiri, ndipo zidzachedwetsa zinthu. Pali njira ina ...

Wotchi ya Lamport

Iwo ndi okalamba kwambiri. Lamport Clock imatanthawuza kuti zodalira izi zimapindika kukhala scalar ntchito, yomwe imatchedwa Lamport Clock.

Ntchito ya scalar ndi nambala yosawerengeka. Nthawi zambiri imatchedwa nthawi yomveka. Ndi chochitika chilichonse, counter iyi imawonjezeka. Kauntala, yomwe imadziwikanso ndi ndondomekoyi, imatumiza uthenga uliwonse. Zikuwonekeratu kuti njira zitha kukhala zosalunzanitsidwa, zimatha kukhala ndi nthawi zosiyanasiyana. Komabe, makinawa amalinganiza nthawi ndi mauthenga otere. Kodi chimachitika ndi chiyani pamenepa?

Ndinagawaniza shard yaikuluyo pawiri kuti ndimveke bwino: Anzanu akhoza kukhala mu mfundo imodzi, yomwe ili ndi chidutswa cha zosonkhanitsira, ndipo Feed akhoza kukhala mu mfundo ina, yomwe ili ndi chidutswa cha chosonkhanitsa ichi. Kodi zikuwonekeratu momwe angachokere pamzere? Choyamba Chakudya chidzati: "Kubwereza", ndiyeno Mabwenzi. Ngati dongosolo silipereka mtundu wina wa chitsimikizo kuti Chakudya sichidzawonetsedwa mpaka zodalira za Anzanu mumsonkho wa Anzathu ziperekedwanso, ndiye kuti tidzakhala ndi zomwe ndatchulazo.

Mukuwona momwe nthawi yowerengera pa Feed imachulukira momveka bwino:

HighLoad++, Mikhail Tyulenev (MongoDB): Causal consistency: from theory to practice

Kotero katundu wamkulu wa Lamport Clock ndi Causal kusasinthasintha (kufotokozedwa kupyolera mu Lamport Clock) ndi ichi: ngati tili ndi Zochitika A ndi B, ndipo Chochitika B chimadalira Chochitika A *, ndiye kuti LogicalTime ya Chochitika A ndi yochepa kuposa LogicalTime kuchokera ku Chochitika B.

* Nthaŵi zina amanenanso kuti A inachitika B asanakhalepo, kutanthauza kuti, A chinachitika B asanakhalepo - uwu ndi unansi wina wake umene umatsogolera pang’ono zochitika zonse zimene zinachitika mwachizoloŵezi.

Zosiyana ndi zolakwika. Ichi ndi chimodzi mwazovuta zazikulu za Lamport Clock - dongosolo lapadera. Pali lingaliro la zochitika nthawi imodzi, ndiko kuti, zochitika zomwe (A zidachitika B) kapena (A zisanachitike B). Chitsanzo chingakhale chowonjezera cha Leonard cha munthu wina ngati bwenzi (osati ngakhale Leonard, koma Sheldon, mwachitsanzo).
Izi ndizomwe zimagwiritsidwa ntchito nthawi zambiri pogwira ntchito ndi mawotchi a Lamport: amayang'ana mwachindunji ntchitoyo ndipo kuchokera pa izi amatsimikiza kuti mwina zochitikazi zimadalira. Chifukwa njira imodzi ndi yowona: ngati LogicalTime A ndi yocheperapo LogicalTime B, ndiye B sichingachitike A asanakhale; ndipo ngati zambiri, ndiye mwina.

Vector Clock

Kukula koyenera kwa wotchi ya Lamport ndi Vector Clock. Amasiyana chifukwa mfundo iliyonse yomwe ili pano ili ndi wotchi yakeyake, ndipo imafalitsidwa ngati vector.
Pankhaniyi, mukuwona kuti zeroth index ya vector ndiyomwe imayang'anira Feed, ndipo cholozera choyamba cha vekitala ndi cha Friends (iliyonse mwa mfundozi). Ndipo tsopano awonjezeka: index ya zero ya "Feed" imawonjezeka polemba - 1, 2, 3:

HighLoad++, Mikhail Tyulenev (MongoDB): Causal consistency: from theory to practice

Chifukwa chiyani Vector Clock ili bwino? Chifukwa amakulolani kuti muzindikire zomwe zimachitika nthawi imodzi komanso zomwe zimachitika m'malo osiyanasiyana. Izi ndizofunikira kwambiri pamakina a sharding ngati MongoDB. Komabe, sitinasankhe izi, ngakhale ndichinthu chodabwitsa, ndipo zimagwira ntchito bwino, ndipo zingatigwirizane ...

Ngati tili ndi shards 10, sitingathe kusamutsa zigawo 10, ngakhale titazipondereza kapena kubwera ndi zina - malipirowo adzakhala ochepa kangapo kuposa kuchuluka kwa vekitala yonseyi. Chotero, tikukuta mitima yathu ndi mano, tinasiya njira imeneyi ndi kupita ku ina.

Spanner TrueTime. Wotchi ya atomiki

Ndinati pakhala nkhani ya Spanner. Ichi ndi chinthu chabwino, kuyambira m'zaka za zana la XNUMX: mawotchi a atomiki, kulumikizana kwa GPS.

Lingaliro ndi chiyani? "Spanner" ndi dongosolo la Google lomwe posachedwapa linapezeka kwa anthu (anawonjezera SQL kwa ilo). Kugulitsa kulikonse komwe kuli ndi sitampu ya nthawi. Popeza nthawi imalumikizidwa *, chochitika chilichonse chikhoza kuperekedwa nthawi yake - mawotchi a atomiki amakhala ndi nthawi yodikirira, kenako nthawi yosiyana imatsimikiziridwa kuti "idzachitika".

HighLoad++, Mikhail Tyulenev (MongoDB): Causal consistency: from theory to practice

Chifukwa chake, pongolembera ku database ndikudikirira kwa nthawi yayitali, Serializability ya chochitikacho imatsimikizika. Ali ndi chitsanzo champhamvu kwambiri cha Consistency chomwe chingaganizidwe mwalamulo - ndi Kugwirizana Kwakunja.

* Ili ndiye vuto lalikulu ndi mawotchi a Lampart - samalumikizana konse pamakina ogawidwa. Amatha kupatukana; ngakhale ndi NTP, sagwirabe ntchito bwino. "Spanner" ili ndi wotchi ya atomiki ndi kulunzanitsa, zikuwoneka, ndi ma microseconds.

Chifukwa chiyani sitinasankhe? Sitikuganiza kuti ogwiritsa ntchito athu ali ndi wotchi yopangidwa ndi atomiki. Zikawoneka, zikumangidwa mu laputopu iliyonse, padzakhala mtundu wina wa kulunzanitsa kozizira kwambiri kwa GPS - ndiye inde... Koma pakadali pano zabwino zomwe zingatheke ndi Amazon, Base Stations - kwa okonda ... .

Wotchi ya Hybrid

Izi ndizomwe zimayika ku MongoDB pakuwonetsetsa kusasinthika kwa Causal. Kodi iwo ali wosakanizidwa bwanji? Hybrid ndi mtengo wa scalar, koma ili ndi zigawo ziwiri:

HighLoad++, Mikhail Tyulenev (MongoDB): Causal consistency: from theory to practice

  • Yoyamba ndi nthawi ya Unix (ndi masekondi angati adutsa kuyambira "chiyambi cha makompyuta").
  • Yachiwiri ndi increment, komanso 32-bit int osasainidwa.

Ndizo zonse, kwenikweni. Pali njira iyi: gawo lomwe limayang'anira nthawi limalumikizidwa ndi wotchi nthawi zonse; nthawi iliyonse pomwe zosintha zichitika, gawo ili limalumikizidwa ndi wotchi ndipo zimakhala kuti nthawiyo imakhala yolondola nthawi zonse, ndipo kuwonjezereka kumakupatsani mwayi wosiyanitsa zochitika zomwe zidachitika nthawi yomweyo.

Chifukwa chiyani izi ndizofunikira kwa MongoDB? Chifukwa zimakulolani kuti mupange malo odyera osunga zobwezeretsera panthawi inayake, ndiye kuti, chochitikacho chimalembedwa ndi nthawi. Izi ndizofunikira pakafunika zochitika zina; Kwa database, zochitika ndizosintha mu database zomwe zidachitika pakanthawi kochepa.

Ndikuuzani chifukwa chofunikira kwambiri kwa inu (chonde, musauze aliyense)! Tidachita izi chifukwa ndizomwe zidakonzedwa, zolozera zimawoneka ngati MongoDB OpLog. OpLog ndi dongosolo la deta lomwe lili ndi zosintha zonse mu nkhokwe: zimayamba kupita ku OpLog, ndiyeno zimayikidwa ku Kusungirako komwe kuli ngati tsiku lofanana kapena shard.

Ichi chinali chifukwa chachikulu. Komabe, palinso zofunikira zopangira database, zomwe zikutanthauza kuti ziyenera kukhala zosavuta - kachidindo kakang'ono, zinthu zochepa zosweka momwe zingathere zomwe ziyenera kulembedwanso ndikuyesedwa. Mfundo yakuti ma plogs athu adalembedwa ndi mawotchi osakanizidwa adathandizira kwambiri ndipo adatilola kupanga chisankho choyenera. Zinalipiradi ndipo mwanjira ina zamatsenga zidagwira ntchito pa prototype yoyamba. Zinali zabwino kwambiri!

Kulunzanitsa koloko

Pali njira zingapo zolumikizirana zomwe zafotokozedwa m'mabuku asayansi. Ndikulankhula za kulunzanitsa tikakhala ndi ma shards awiri osiyana. Ngati pali seti imodzi yofananira, palibe chifukwa cholumikizira: uyu ndi "mbuye m'modzi"; tili ndi OpLog, momwe zosintha zonse zimagwera - pakadali pano, zonse zidayimitsidwa kale mu "Oplog" yomwe. Koma ngati tili ndi ma shards awiri osiyana, kugwirizanitsa nthawi ndikofunikira pano. Apa ndipamene wotchi ya vector idathandizira zambiri! Koma ife tiribe iwo.

HighLoad++, Mikhail Tyulenev (MongoDB): Causal consistency: from theory to practice

Yachiwiri ndiyoyenera - iyi ndi "Kugunda kwamtima". Ndizotheka kusinthanitsa zizindikiro zina zomwe zimachitika nthawi iliyonse. Koma kugunda kwamtima kumachedwa kwambiri, sitingathe kupereka latency kwa kasitomala wathu.

Nthawi yeniyeni ndi chinthu chodabwitsa. Koma, kachiwiri, izi mwina ndi zam'tsogolo ... Ngakhale kuti zikhoza kuchitika kale mu Atlas, pali kale "Amazon" yofulumira nthawi synchronizers. Koma sichipezeka kwa aliyense.

Miseche ndi pamene mauthenga onse amakhala ndi nthawi. Izi ndi pafupifupi zomwe timagwiritsa ntchito. Mauthenga aliwonse pakati pa ma node, dalaivala, rauta ya data, chilichonse cha MongoDB ndi mtundu wina wazinthu, gawo la database lomwe lili ndi wotchi yomwe imayenda. Iwo ali ndi tanthawuzo la nthawi yosakanizidwa kulikonse, imafalitsidwa. 64 gawo? Izi zimalola, izi ndizotheka.

Kodi zonsezi zimayendera limodzi bwanji?

Apa ndikuyang'ana chofananira chimodzi kuti chikhale chosavuta. Pali Pulayimale ndi Sekondale. Yachiwiri imachita kubwereza ndipo nthawi zonse sizimalumikizidwa ndi Pulayimale.

Kuyika kumachitika mu "Primery" ndi mtengo wake wa nthawi. Kuyika uku kumawonjezera kuchuluka kwamkati ndi 11, ngati uku ndikokwanira. Kapena idzayang'ana mayendedwe a wotchi ndi kulunzanitsa ndi wotchi ngati mawotchi ali okulirapo. Izi zimakupatsani mwayi wopanga nthawi.

Akapanga kujambula, mphindi yofunika imachitika. Wotchi ili mu "MongoDB" ndipo imangowonjezera pokhapokha mutalemba ku "Oplog". Ichi ndi chochitika chomwe chimasintha dongosolo la dongosolo. M'zolemba zonse zapamwamba, chochitika chimatengedwa kuti ndi pamene uthenga ugunda mfundo: uthenga wafika, zomwe zikutanthauza kuti dongosolo lasintha.

Izi ndichifukwa choti panthawi yofufuza sizidziwika bwino momwe uthengawu udzatanthauziridwa. Tikudziwa motsimikiza kuti ngati sichiwonetsedwa mu "Oplog", ndiye kuti sichidzatanthauziridwa mwanjira iliyonse, ndipo kusintha kwa dongosololi ndikulowa mu "Oplog". Izi zifewetsera chilichonse kwa ife: chitsanzocho chimapangitsa kuti chikhale chosavuta, ndipo chimatilola kuti tizichikonza mkati mwa seti imodzi yofanana, ndi zina zambiri zothandiza.

Mtengo womwe unalembedwa kale ku "Oplog" wabwezedwa - tikudziwa kuti "Oplog" ili kale ndi mtengo uwu, ndipo nthawi yake ndi 12. Tsopano, titi, kuwerenga kumayambira kuchokera ku mfundo ina (Sekondale), ndipo imatumiza afterClusterTime in. uthenga. Iye akuti: "Ndikufuna zonse zomwe zinachitika pambuyo pa 12 kapena pa khumi ndi ziwiri" (onani chithunzi pamwambapa).

Izi ndi zomwe zimatchedwa Causal a consistent (CAT). Pali lingaliro lotero mu chiphunzitso chakuti ichi ndi kagawo kakang'ono ka nthawi, komwe kumagwirizana palokha. Pamenepa, tikhoza kunena kuti izi ndi momwe dongosololi linkawonekera pa nthawi ya 12.

Tsopano palibe kalikonse pano, chifukwa mtundu uwu umatengera momwe zinthu zilili mukamafunikira Sekondale kuti mubwereze zambiri kuchokera ku Pulayimale. Amadikirira ... Ndipo tsopano deta yafika - amabwezera izi.

HighLoad++, Mikhail Tyulenev (MongoDB): Causal consistency: from theory to practice

Ndimo momwe zonse zimagwirira ntchito. Pafupifupi.

Kodi "pafupifupi" amatanthauza chiyani? Tiyerekeze kuti pali munthu wina amene wawerengapo ndi kumvetsa mmene zonsezi zimagwirira ntchito. Ndinazindikira kuti nthawi iliyonse ClusterTime ikachitika, imasintha wotchi yamkati yomveka, ndiyeno chotsatira chimawonjezeka ndi chimodzi. Ntchitoyi imatenga mizere 20. Tiyerekeze kuti munthuyu atumiza nambala yayikulu kwambiri ya 64-bit, kuchotsera imodzi.

Chifukwa chiyani "minus one"? Chifukwa wotchi yamkati idzalowetsedwa m'malo mwa mtengo uwu (mwachiwonekere, ichi ndiye chachikulu kwambiri komanso chachikulu kuposa nthawi yamakono), ndiye kuti cholowa chidzachitika mu "Oplog", ndipo wotchiyo idzawonjezeredwa ndi gawo lina - ndipo padzakhala kale. kukhala wamtengo wapatali (pali mayunitsi onse, palibe kwina koti mupite), ints osaint).

Zikuwonekeratu kuti pambuyo pake dongosololi limakhala losafikirika konse. Ikhoza kutulutsidwa ndi kutsukidwa - ntchito zambiri zamanja. Kupezeka kwathunthu:

HighLoad++, Mikhail Tyulenev (MongoDB): Causal consistency: from theory to practice

Komanso, ngati izi zabwerezedwa kwinakwake, ndiye kuti gulu lonselo limagwa pansi. Mkhalidwe wosavomerezeka mwamtheradi womwe aliyense angakonzekere mwachangu komanso mosavuta! Chifukwa chake, tidawona mphindi iyi ngati imodzi mwazofunikira kwambiri. Kodi kupewa izo?

Njira yathu ndikusayina clusterTime

Umu ndi momwe zimafalitsira mu uthenga (pamaso pa buluu). Koma tidayambanso kupanga siginecha (mawu abuluu):

HighLoad++, Mikhail Tyulenev (MongoDB): Causal consistency: from theory to practice

Siginecha imapangidwa ndi kiyi yomwe imasungidwa mkati mwa database, mkati mwa gawo lotetezedwa; yokha imapangidwa ndikusinthidwa (ogwiritsa sakuwona chilichonse chokhudza izo). Hashi imapangidwa, ndipo uthenga uliwonse umasainidwa ukapangidwa ndikutsimikiziridwa ukalandiridwa.
Mwina funso limabuka m'maganizo mwa anthu: "Kodi izi zimachepetsa bwanji zinthu?" Ndinakuuzani kuti iyenera kugwira ntchito mofulumira, makamaka pakalibe mbaliyi.

Kodi kugwiritsa ntchito Causal kusasinthika kumatanthauza chiyani? Izi ndikuwonetsa parameter ya afterClusterTime. Popanda izi, zimangodutsa ma values ​​mulimonse. Miseche, kuyambira mtundu 3.6, imagwira ntchito nthawi zonse.

Ngati tisiya mbadwo wokhazikika wa siginecha, zidzachedwetsa dongosolo ngakhale kulibe mawonekedwe, omwe sagwirizana ndi njira zathu ndi zofunikira. Ndiye tinatani?

Chitani mwamsanga!

Ndi chinthu chophweka, koma chinyengocho ndi chosangalatsa - ndigawana nawo, mwinamwake wina angasangalale.
Tili ndi hashi yomwe imasunga zomwe zasainidwa. Deta yonse imadutsa mu cache. Chosungira sichimasaina nthawi yeniyeni, koma Range. Mtengo ukafika, timapanga Range, kubisa ma bits 16 omaliza, ndipo timasaina mtengo uwu:

HighLoad++, Mikhail Tyulenev (MongoDB): Causal consistency: from theory to practice

Polandira siginecha yotere, timafulumizitsa dongosolo (pafupifupi) nthawi 65 zikwi. Zimagwira ntchito bwino: tikamayesa, nthawi idatsika ndi 10 nthawi zikwizikwi pomwe tinali ndi zosintha zotsatizana. N’zoonekeratu kuti akasemphana maganizo, zimenezi sizithandiza. Koma nthawi zambiri zothandiza zimagwira ntchito. Kuphatikiza kwa siginecha ya Range pamodzi ndi siginecha kunathetsa vuto lachitetezo.

Kodi taphunzirapo chiyani?

Mfundo zomwe tapeza pa izi:

  • Tiyenera kuwerenga zida, nkhani, zolemba, chifukwa tili ndi zinthu zambiri zosangalatsa. Pamene tikugwira ntchito zina (makamaka pano, pamene tinachita malonda, ndi zina zotero), tiyenera kuwerenga ndi kumvetsa. Zimatenga nthawi, koma ndizothandiza kwambiri chifukwa zimamveketsa bwino komwe tili. Sitinawonekere kuti tabwera ndi chatsopano - tinangotenga zosakaniza.

    Kawirikawiri, pali kusiyana kwina mu kuganiza pamene pali msonkhano wa maphunziro (Sigmon, mwachitsanzo) - aliyense amayang'ana malingaliro atsopano. Chatsopano ndi chiyani pa algorithm yathu? Palibe chatsopano pano. Zachilendo m'malo mwake zagona momwe timaphatikizira njira zomwe zilipo kale. Choncho, chinthu choyamba ndikuwerenga zachikale, kuyambira ndi Lampart.

  • Pakupanga, zofunikira ndizosiyana kotheratu. Ndili wotsimikiza kuti ambiri a inu simukumana ndi nkhokwe za "spherical" mosavutikira, koma ndi zinthu zabwinobwino, zenizeni zomwe zimakhala ndi vuto la kupezeka, latency ndi kulolerana kolakwa.
  • Chomaliza ndichakuti tidayenera kuyang'ana malingaliro osiyanasiyana ndikuphatikiza zolemba zingapo zosiyana kukhala njira imodzi, palimodzi. Lingaliro la kusaina, mwachitsanzo, nthawi zambiri linachokera ku nkhani yomwe inkawona kuti Paxos protocol, yomwe kwa Olephera a Byzantine ili mkati mwa chilolezo chovomerezeka, kwa Byzantine - kunja kwa chilolezo chovomerezeka ... anamaliza kuchita.

    Palibe chatsopano pano! Koma titangosakaniza zonse pamodzi ... Ndizofanana ndi kunena kuti Chinsinsi cha saladi ya Olivier ndi zopanda pake, chifukwa mazira, mayonesi ndi nkhaka zapangidwa kale ... Ndi nkhani yomweyi.

HighLoad++, Mikhail Tyulenev (MongoDB): Causal consistency: from theory to practice

Ndimaliza ndi izi. Zikomo!

Mafunso anu

Funso lochokera kwa omvera (amene atchulidwa pano ndi B): - Zikomo, Mikhail, chifukwa cha lipoti! Mutu wokhudza nthawi ndi wosangalatsa. Mukugwiritsa ntchito Miseche. Ananena kuti aliyense ali ndi nthawi yake, aliyense amadziwa nthawi yake. Monga ndikumvetsetsa, tili ndi dalaivala - pakhoza kukhala makasitomala ambiri omwe ali ndi madalaivala, okonza mafunso nawonso, shards nawonso ... miniti patsogolo, winawake miniti kumbuyo? Kodi tidzathera kuti?

MT: – Funso lalikulu ndithu! Ndinkangofuna kulankhula za shards. Ngati ndikumvetsetsa funsolo molondola, tili ndi zotsatirazi: pali shard 1 ndi shard 2, kuwerenga kumapezeka kuchokera ku shards ziwirizi - zimakhala ndi zosagwirizana, sizimagwirizanitsa, chifukwa nthawi yomwe amadziwa ndi yosiyana, makamaka nthawi yomwe amakhalapo mu oplogs.
Tinene kuti shard 1 idapanga ma miliyoni miliyoni, shard 2 sanachite kalikonse, ndipo pempholi lidafika pazigawo ziwiri. Ndipo yoyamba ili ndi afterClusterTime yopitilira miliyoni. Zikatero, monga ndidafotokozera, shard 2 sidzayankha konse.

Mu: - Ndinkafuna kudziwa momwe amalumikizirana ndikusankha nthawi imodzi yomveka?

MT: - Zosavuta kulunzanitsa. Shard, pambuyo paClusterTime ikabwera kwa iye ndipo sapeza nthawi mu "Oplog", imayamba osavomerezeka. Ndiko kuti, amakweza nthawi yake ndi manja ake ku mtengo uwu. Izi zikutanthauza kuti ilibe zochitika zofanana ndi pempholi. Iye amalenga chochitika ichi mwachinyengo ndipo motero amakhala Causal Consistent.

Mu: - Nanga bwanji zitachitika izi zochitika zina zibwera kwa iye zomwe zidatayika penapake pa intaneti?

MT: - Shard adapangidwa m'njira yoti asabwerenso, chifukwa ndi mbuye mmodzi. Ngati adalembetsa kale, ndiye kuti sabwera, koma adzabwera pambuyo pake. Sizingachitike kuti china chake chikakamira kwinakwake, ndiye kuti salemba, ndiye kuti zochitika izi zimafika - ndipo kugwirizana kwa Causal kwasweka. Akapanda kulemba onse abwere (awadikire).

HighLoad++, Mikhail Tyulenev (MongoDB): Causal consistency: from theory to practice

Mu: - Ndili ndi mafunso angapo okhudzana ndi mizere. Kusasinthika kwa causal kumaganiza kuti pali mndandanda wazinthu zomwe ziyenera kuchitidwa. Kodi chimachitika ndi chiyani ngati imodzi mwa phukusi lathu isowa? Apa pakubwera 10, 11 ... ya 12 yasowa, ndipo wina aliyense akuyembekezera kuti izi zichitike. Ndipo mwadzidzidzi galimoto yathu inafa, sitingathe kuchita kalikonse. Kodi pali utali wokwanira wa mzere womwe umawunjikana musanauzidwe? Kodi ndi kulephera koopsa kotani kumene kumachitika pamene dziko lina latayika? Komanso, ngati tilemba kuti pali dziko lina lapitalo, ndiye kuti tiyenera kuyambira pamenepo? Koma sanamukankhire kutali!

MT: - Komanso funso lalikulu! Kodi tikuchita chiyani? MongoDB ili ndi lingaliro la quorum limalemba, quorum imawerengedwa. Kodi ndimotani mmene uthenga ungatayike? Pamene kulemba sikuli quoramu kapena pamene kuwerenga sikunali quorum (mtundu wina wa zinyalala ungathenso kumamatira).
Ponena za Causal kusasinthasintha, kuyesa kwakukulu kunachitika, zomwe zotsatira zake zinali kuti pamene kulemba ndi kuwerenga sikuli kokwanira, kuphwanya kwa Causal kusasinthasintha kumachitika. Ndendende zomwe mukunena!

Malangizo athu: gwiritsani ntchito kuwerenga kocheperako mukamagwiritsa ntchito Causal kusasinthika. Pankhaniyi, palibe chomwe chidzatayika, ngakhale chiwerengero cha quorum chitayika ... Ichi ndi chikhalidwe cha orthogonal: ngati wogwiritsa ntchito sakufuna kuti deta iwonongeke, ayenera kugwiritsa ntchito zolemba za quorum. Kusasinthika kwa Causal sikutsimikizira kulimba. Kukhalitsa kumatsimikiziridwa ndi kubwerezabwereza ndi makina okhudzana ndi kubwerezabwereza.

Mu: - Tikamapanga chitsanzo chomwe chimatipangira sharding (osati mbuye, koma kapolo, motsatira), zimadalira nthawi ya Unix ya makina ake kapena nthawi ya "mbuye"; Kodi imalunzanitsa koyamba kapena pafupipafupi?

MT: - Ndikufotokozerani nokha. Shard (ie kugawa kopingasa) - nthawi zonse pamakhala Pulayimale pamenepo. Ndipo shard ikhoza kukhala ndi "mbuye" ndipo pakhoza kukhala zofananira. Koma shard nthawi zonse imathandizira kujambula, chifukwa iyenera kuthandizira dera lina (shard ili ndi Primary).

Mu: - Ndiye zonse zimadalira "mbuye"? Kodi nthawi ya master imagwiritsidwa ntchito nthawi zonse?

MT: - Inde. Mutha kunena mophiphiritsa: koloko ikupita pamene kulowa mu "mbuye", mu "Oplog" kumachitika.

Mu: - Tili ndi kasitomala yemwe amalumikizana ndipo safunikira kudziwa chilichonse chokhudza nthawiyo?

MT: - Simufunikanso kudziwa kalikonse! Ngati tilankhula za momwe zimagwirira ntchito kwa kasitomala: pamene kasitomala akufuna kugwiritsa ntchito Causal kusasinthasintha, ayenera kutsegula gawo. Tsopano zonse zilipo: zochitika mu gawoli, ndi kupeza ufulu... Gawo ndi dongosolo la zochitika zomveka zomwe zimachitika ndi kasitomala.

Ngati atsegula gawoli ndikunena pamenepo kuti akufuna Causal consistence (ngati gawoli likuthandizira Causal consistency mwachisawawa), zonse zimagwira ntchito zokha. Dalaivala amakumbukira nthawiyi ndikuwonjezera akalandira uthenga watsopano. Imakumbukira yankho lomwe lapitalo linabwerera kuchokera ku seva yomwe idabweza deta. Pempho lotsatira likhala ndi afterCluster("nthawi yoposa iyi").

Wofuna chithandizo sayenera kudziwa chilichonse! Izi ndi zowonekeratu kwa iye. Ngati anthu agwiritsa ntchito zinthuzi, angachite chiyani? Choyamba, mutha kuwerenga omaliza maphunziro mosamala: mutha kulembera Pulayimale ndikuwerenga kuchokera kwa omaliza maphunziro omwe ali ndi malo ndipo onetsetsani kuti zikugwira ntchito. Nthawi yomweyo, magawo omwe adalembedwa pa Pulayimale amathanso kusamutsidwa kupita ku Sekondale, mwachitsanzo, simungagwiritse ntchito gawo limodzi, koma angapo.

Mu: - Gawo latsopano la sayansi ya Compute - CRDT (Zopanda Mikangano Replicated Data Types) mitundu ya data - ikugwirizana kwambiri ndi mutu wa Eventual consistency. Kodi mwaganiza zophatikizira mitundu iyi ya data mu nkhokwe ndipo munganene chiyani za izo?

MT: - Funso labwino! CRDT ndiyomveka pakulemba mikangano: ku MongoDB, master single.

Mu: - Ndili ndi funso kuchokera kwa ma devops. M'dziko lenileni, pali zochitika za Yesuitical pamene Kulephera kwa Byzantine kumachitika, ndipo anthu oipa omwe ali mkati mwa malo otetezedwa amayamba kulowerera mu protocol, kutumiza mapepala amisiri mwapadera?

HighLoad++, Mikhail Tyulenev (MongoDB): Causal consistency: from theory to practice

MT: - Anthu oyipa mkati mozungulira ali ngati kavalo wa Trojan! Anthu oipa mkati mozungulira akhoza kuchita zinthu zambiri zoipa.

Mu: - N'zoonekeratu kuti kusiya, pafupifupi kunena, dzenje mu seva momwe mungathe kuyika zoo ya njovu ndikugwetsa gulu lonse kwamuyaya ... Zidzatenga nthawi kuti ayambe kuchira ... Izi, kuziyika mofatsa, ndizo cholakwika. Kumbali inayi, izi ndizosangalatsa: m'moyo weniweni, muzochita, pali zochitika pamene mwachibadwa kuukira kofanana kwamkati kumachitika?

MT: - Popeza sindimakumana ndi zophwanya chitetezo m'moyo weniweni, sindinganene ngati zichitika. Koma ngati tilankhula za filosofi yachitukuko, timaganiza motere: tili ndi malire omwe amapereka anyamata omwe amachita chitetezo - iyi ndi nyumba yachifumu, khoma; ndipo mkati mozungulira mutha kuchita chilichonse chomwe mukufuna. Zikuwonekeratu kuti pali ogwiritsa ntchito omwe amatha kuwona okha, ndipo pali ogwiritsa ntchito omwe amatha kufafaniza chikwatu.

Kutengera ndi ufulu, kuwonongeka komwe ogwiritsa ntchito atha kukhala mbewa, kapena kungakhale njovu. Zikuwonekeratu kuti wogwiritsa ntchito ali ndi ufulu wonse akhoza kuchita chilichonse. Wogwiritsa ntchito yemwe ali ndi ufulu wochepera amatha kuvulaza kwambiri. Makamaka, sangathe kuswa dongosolo.

Mu: - Pamalo otetezedwa, wina adayesa kupanga ma protocol osayembekezeka a seva kuti awononge kwathunthu seva, ndipo ngati muli ndi mwayi, gulu lonselo ... Kodi zimayamba "zabwino"?

MT: "Sindinamvepo za zinthu zotere." Mfundo yakuti mukhoza kuwononga seva motere sichinsinsi. Kulephera mkati, kukhala kuchokera ku protocol, kukhala wogwiritsa ntchito wovomerezeka yemwe angathe kulemba chinachake chonga ichi mu uthenga ... Ndipotu, sizingatheke, chifukwa zidzatsimikiziridwabe. Ndizotheka kuletsa kutsimikizika uku kwa ogwiritsa ntchito omwe sakufuna - ndiye kuti ndilo vuto lawo; iwo, mwachiwonekere, anawononga makoma okha ndipo mukhoza kukankhira njovu mmenemo, yomwe idzapondaponda ... Koma kawirikawiri, mukhoza kuvala ngati wokonza, bwerani ndikutulutseni!

Mu: - Zikomo chifukwa cha lipoti. SERGEY (Yandex). Pali nthawi zonse ku Mong zomwe zimalepheretsa chiwerengero cha mamembala ovota mu Replica Set, ndipo izi ndi 7 (zisanu ndi ziwiri). Chifukwa chiyani izi ndizokhazikika? Chifukwa chiyani izi siziri mtundu wina wa parameter?

MT: - Tili ndi Replica Sets yokhala ndi node 40. Nthawi zonse pali ambiri. sindikudziwa mtundu wanji...

Mu: - Mu Replica Set mutha kuyendetsa mamembala osavota, koma pali ovota opitilira 7. Kodi tingapulumuke bwanji kuzimitsa pankhaniyi ngati Replica Set yathu ikufalikira pazida 3 za data? Malo amodzi a data amatha kuzimitsa mosavuta, ndipo makina ena amatha kugwa.

MT: - Izi zatsala pang'ono kupitirira lipotilo. Ili ndi funso wamba. Mwina ndingakuuzeni pambuyo pake.

HighLoad++, Mikhail Tyulenev (MongoDB): Causal consistency: from theory to practice

Zotsatsa zina 🙂

Zikomo chifukwa chokhala nafe. Kodi mumakonda zolemba zathu? Mukufuna kuwona zambiri zosangalatsa? Tithandizeni potipatsa oda kapena kulimbikitsa anzathu, mtambo VPS kwa opanga kuchokera ku $ 4.99, ma analogi apadera a ma seva olowera, omwe adakupangirani inu: Chowonadi chonse chokhudza VPS (KVM) E5-2697 v3 (6 Cores) 10GB DDR4 480GB SSD 1Gbps kuchokera $19 kapena momwe mungagawire seva? (ikupezeka ndi RAID1 ndi RAID10, mpaka 24 cores mpaka 40GB DDR4).

Dell R730xd 2x yotsika mtengo ku Equinix Tier IV data center ku Amsterdam? Pokhapokha 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TV kuchokera $199 ku Netherlands! Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - kuchokera $99! Werengani za Momwe mungamangire Infrastructure Corp. kalasi pogwiritsa ntchito ma seva a Dell R730xd E5-2650 v4 ofunika ma euro 9000 pa khobiri?

Source: www.habr.com

Kuwonjezera ndemanga