HighLoad ++, Mikhail Tyulenev (MongoDB): Seasmhachd adhbharach: bho theòiridh gu cleachdadh

Thèid an ath cho-labhairt HighLoad ++ a chumail air 6 agus 7 Giblean, 2020 ann an St.
Mion-fhiosrachadh agus tiogaidean Ceangal. HighLoad ++ Siberia 2019. Talla "Krasnoyarsk". 25 an t-Ògmhios, 12:00. tràchdais agus taisbeanadh.

HighLoad ++, Mikhail Tyulenev (MongoDB): Seasmhachd adhbharach: bho theòiridh gu cleachdadh

Tha e a 'tachairt gu bheil riatanasan practaigeach a' dol an aghaidh teòiridh, far nach eilear a 'toirt aire do nithean a tha cudromach airson toradh malairteach. Tha an òraid seo a’ taisbeanadh pròiseas airson a bhith a’ taghadh agus a’ cothlamadh diofar dhòighean-obrach airson co-phàirtean cunbhalachd adhbharach a chruthachadh stèidhichte air rannsachadh acadaimigeach stèidhichte air riatanasan toradh malairteach. Ionnsaichidh luchd-èisteachd mu dhòighean teòiridheach a th’ ann mu thràth airson gleocaichean loidsigeach, tracadh eisimeileachd, tèarainteachd siostaim, sioncronadh gleoc, agus carson a shocraich MongoDB air fuasglaidhean sònraichte.

Mikhail Tyulenev (air ainmeachadh an-seo mar MT): - Bruidhnidh mi mu cunbhalachd adhbharach - is e seo feart air an robh sinn ag obair ann am MongoDB. Tha mi ag obair ann am buidheann de shiostaman sgaoilte, rinn sinn e mu dhà bhliadhna air ais.

HighLoad ++, Mikhail Tyulenev (MongoDB): Seasmhachd adhbharach: bho theòiridh gu cleachdadh

Anns a 'phròiseas, bha agam ri eòlas fhaighinn air tòrr rannsachaidh acadaimigeach, oir chaidh am feart seo a sgrùdadh gu math. Thionndaidh e a-mach nach eil aon artaigil a’ freagairt air na tha a dhìth ann an stòr-dàta cinneasachaidh air sgàth riatanasan sònraichte a tha dualtach a bhith an làthair ann an tagradh cinneasachaidh sam bith.

Bruidhnidh mi air mar a bhios sinn, mar luchd-cleachdaidh Rannsachadh acadaimigeach, ag ullachadh rudeigin bhuaithe as urrainn dhuinn an uairsin a thaisbeanadh don luchd-cleachdaidh againn mar mhias deiseil a tha goireasach agus sàbhailte a chleachdadh.

Seasmhachd adhbharach. Leig dhuinn na bun-bheachdan a mhìneachadh

An toiseach, tha mi airson a ràdh gu coitcheann dè a th’ ann an cunbhalachd adhbharach. Tha dà charactar ann - Leonard agus Penny (sreath Tbh "The Big Bang Theory"):

HighLoad ++, Mikhail Tyulenev (MongoDB): Seasmhachd adhbharach: bho theòiridh gu cleachdadh

Canaidh sinn gu bheil Penny san Roinn Eòrpa agus tha Leonard airson pàrtaidh iongantach a thilgeil oirre. Agus chan urrainn dha smaoineachadh air dad nas fheàrr na bhith ga thilgeil far liosta a charaidean, a’ cur fiosrachadh às ùr air a charaidean gu lèir: “Nì sinn Penny toilichte!” (tha i anns an Roinn Eòrpa, fhad 'sa tha i a' cadal, chan eil i a 'faicinn seo uile agus chan urrainn dhi fhaicinn, oir chan eil i ann). Aig a ’cheann thall, bidh i a’ cuir às don phost seo, ga dhubhadh às bhon Feed agus ag ath-nuadhachadh ruigsinneachd gus nach mothaich i dad agus nach eil sgainneal ann.
Tha seo uile gu math agus math, ach gabhamaid ris gu bheil an siostam air a chuairteachadh agus chaidh cùisean beagan ceàrr. Dh’ fhaodadh e, mar eisimpleir, tachairt gun do thachair cuingealachadh ruigsinneachd Penny às deidh don phost seo nochdadh, mura h-eil na tachartasan co-cheangailte ri adhbhar agus buaidh. Gu fìrinneach, tha seo na eisimpleir de nuair a tha feum air cunbhalachd adhbharach gus gnìomh gnìomhachais a choileanadh (sa chùis seo).

Gu dearbh, tha iad sin nan togalaichean caran neo-bheag den stòr-dàta - is e glè bheag de dhaoine a tha a’ toirt taic dhaibh. Gluaisidh sinn air adhart gu na modailean.

Modalan cunbhalachd

Dè dìreach a th’ ann am modail cunbhalachd ann an stòran-dàta? Seo cuid de na barrantasan a bheir siostam sgaoilte seachad mu dè an dàta a gheibh an neach-dèiligidh agus dè an t-sreath.

Ann am prionnsabal, bidh a h-uile modal cunbhalachd a 'dol sìos air cho coltach' sa tha siostam sgaoilte ri siostam a tha a 'ruith, mar eisimpleir, air aon nód air laptop. Agus is ann mar seo a tha siostam a tha a’ ruith air mìltean de “Nòtaichean” geo-sgaoileadh ri laptop, anns a bheil na togalaichean sin uile air an coileanadh gu fèin-ghluasadach ann am prionnsapal.

Mar sin, chan eil modalan cunbhalachd air an cur an sàs ach ann an siostaman sgaoilte. Cha robh duilgheadasan mar sin aig a h-uile siostam a bha ann roimhe agus a bha ag obair aig an aon sgèile dhìreach. Bha aon Buffer Cache ann, agus bha a h-uile dad an-còmhnaidh air a leughadh bhuaithe.

Modail làidir

Gu fìrinneach, is e a ’chiad mhodail Strong (no an loidhne comas àrdachadh, mar a chanar ris gu tric). Is e modail cunbhalachd a tha seo a nì cinnteach gu bheil a h-uile atharrachadh, aon uair ‘s gu bheil e air a dhearbhadh gu bheil e air tachairt, ri fhaicinn don h-uile neach-cleachdaidh an t-siostam.

Bidh seo a’ cruthachadh òrdugh cruinneil de gach tachartas san stòr-dàta. Is e seilbh cunbhalachd fìor làidir a tha seo, agus sa chumantas tha e gu math daor. Ach, tha e a’ faighinn taic fìor mhath. Tha e dìreach gu math daor agus slaodach - is ann ainneamh a thèid a chleachdadh. Canar comas àrdachadh ris an seo.

Tha seilbh eile, nas làidire a tha a 'faighinn taic ann an Spanner - ris an canar Co-chòrdadh Taobh a-muigh. Bruidhnidh sinn mu dheidhinn beagan nas fhaide air adhart.

Adhbhar

Is e an ath fhear Causal, is e sin dìreach na bha mi a’ bruidhinn. Tha grunn fo-ìrean eile eadar Strong agus Causal air nach bruidhinn mi, ach bidh iad uile a’ goil sìos gu Causal. Is e modail cudromach a tha seo oir is e seo am fear as làidire de na modailean, an cunbhalachd as làidire an làthair lìonra no sgaradh.

Is e suidheachadh dha-rìribh a th’ ann an adhbharan far a bheil tachartasan ceangailte le dàimh adhbhar-is-buaidh. Glè thric thathas gam faicinn mar Leugh na còraichean agad bho shealladh an neach-dèiligidh. Ma tha an neach-dèiligidh air cuid de luachan fhaicinn, chan urrainn dha luachan a bha san àm a dh'fhalbh fhaicinn. Tha e mu thràth a’ tòiseachadh a’ faicinn leughaidhean ro-leasachan. Tha e uile an urra ris an aon rud.
Tha adhbharan mar mhodail cunbhalachd na òrdugh pàirt de thachartasan air an t-seirbheisiche, anns am bithear a’ cumail sùil air tachartasan bho gach neach-dèiligidh san aon sreath. Anns a 'chùis seo, Leonard agus Penny.

Mu dheireadh

Is e an treas modail Co-chòrdadh mu dheireadh. Is e seo a tha dha-rìribh a’ toirt taic do shiostaman sgaoilte, am modail as lugha a tha a’ dèanamh ciall idir. Tha e a’ ciallachadh na leanas: nuair a tha beagan atharrachaidhean againn san dàta, aig àm air choreigin bidh iad a’ fàs cunbhalach.

Aig an àm seo chan eil i ag ràdh dad, air neo thionndaidheadh ​​i gu cunbhalachd taobh a-muigh - bhiodh e na sgeulachd gu tur eadar-dhealaichte. A dh'aindeoin sin, is e modail mòr-chòrdte a tha seo, am fear as cumanta. Gu gnàthach, bidh a h-uile neach-cleachdaidh de shiostaman sgaoilte a’ cleachdadh Co-sheasmhachd mu dheireadh.

Tha mi airson eisimpleirean coimeasach a thoirt seachad:

HighLoad ++, Mikhail Tyulenev (MongoDB): Seasmhachd adhbharach: bho theòiridh gu cleachdadh

Dè tha na saighdean seo a’ ciallachadh?

  • Laideachd. Mar a tha an neart cunbhalachd a 'dol am meud, bidh e a' fàs nas motha airson adhbharan follaiseach: feumaidh tu barrachd chlàran a dhèanamh, dearbhadh fhaighinn bho gach neach-aoigheachd agus nodan a tha a 'gabhail pàirt anns a' bhuidheann gu bheil an dàta ann mu thràth. Mar sin, tha an fhreagairt as luaithe aig Co-chòrdadh mu dheireadh, oir an sin, mar riaghailt, faodaidh tu eadhon a chuir gu cuimhne agus bidh seo, ann am prionnsapal, gu leòr.
  • Ruigsinneachd. Ma thuigeas sinn seo mar chomas an t-siostaim freagairt a thoirt an làthair brisidhean lìonra, sgaradh, no seòrsa de dh’ fhàilligeadh, bidh fulangas sgàinidh ag àrdachadh mar a bhios am modal cunbhalachd a’ dol sìos, leis gu bheil e gu leòr dhuinne gum bi aon aoigh a’ fuireach agus aig an aon àm. bidh ùine a’ toirt a-mach beagan dàta. Chan eil Co-chòrdalachd mu dheireadh a’ gealltainn dad mun dàta idir - faodaidh e a bhith mar rud sam bith.
  • Anomalies. Aig an aon àm, gu dearbh, tha an àireamh de neo-riaghailteachdan a 'meudachadh. Ann an cunbhalachd làidir cha mhòr nach bu chòir dhaibh a bhith ann idir, ach mu dheireadh faodaidh iad a bhith mar rud sam bith. Tha a’ cheist ag èirigh: carson a tha daoine a’ taghadh Co-sheasmhachd mu dheireadh ma tha neo-riaghailteachdan ann? Is e am freagairt gu bheil modalan Co-sheasmhachd Mu dheireadh iomchaidh agus gu bheil neo-riaghailteachdan ann, mar eisimpleir, ann an ùine ghoirid; tha e comasach an draoidh a chleachdadh gus dàta cunbhalach a leughadh agus barrachd no nas lugha a leughadh; Gu tric tha e comasach modalan seasmhach làidir a chleachdadh. Ann an cleachdadh bidh seo ag obair, agus gu tric tha an àireamh de neo-riaghailteachdan cuingealaichte ann an ùine.

Teòirim CAP

Nuair a chì thu na faclan cunbhalachd, ruigsinneachd - dè a thig nad inntinn? Tha sin ceart - teòirim CAP! A-nis tha mi airson an uirsgeul a chuir às ... Chan e mise a th’ ann - is e Màrtainn Kleppmann a sgrìobh artaigil sgoinneil, leabhar air leth math.

HighLoad ++, Mikhail Tyulenev (MongoDB): Seasmhachd adhbharach: bho theòiridh gu cleachdadh

Tha teòirim CAP na phrionnsapal a chaidh a dhealbhadh anns na 2000n gum bi Cunbhalachd, Cothrom, Pàirtean: gabh dhà, agus chan urrainn dhut trì a thaghadh. Bha e na phrionnsapal sònraichte. Chaidh a dhearbhadh mar theòirim beagan bhliadhnaichean às deidh sin le Gilbert agus Lynch. An uairsin thòisich seo air a chleachdadh mar mantra - thòisich siostaman air an roinn ann an CA, CP, AP agus mar sin air adhart.

Chaidh an teòirim seo a dhearbhadh dha-rìribh airson na cùisean a leanas... An toiseach, bhathas den bheachd nach robh ri fhaotainn mar luach leantainneach bho neoni gu ceudan (0 - tha an siostam “marbh”, 100 - a’ freagairt gu sgiobalta; tha sinn cleachdte ri bhith a’ beachdachadh air san dòigh sin) , ach mar sheilbh den algairim , a tha a’ gealltainn gum bi e a’ tilleadh dàta airson a chur gu bàs.

Chan eil facal ann mu àm freagairt idir! Tha algairim ann a thilleas dàta às deidh 100 bliadhna - algairim air leth iongantach a tha ri fhaighinn, a tha na phàirt de theòirim CAP.
San dàrna àite: chaidh an teòirim a dhearbhadh airson atharrachaidhean ann an luachan an aon iuchair, a dh’ aindeoin gu bheil na h-atharrachaidhean sin air an ath-mheudachadh. Tha seo a 'ciallachadh gu bheil iad ann an da-rìribh nach eil iad air an cleachdadh, seach gu bheil na modailean eadar-dhealaichte mu dheireadh cunbhalachd, làidir cunbhalachd ('s dòcha).

Carson a tha seo uile? A bharrachd air an sin, cha mhòr nach eil teòirim CAP anns an dearbh chruth anns an deach a dhearbhadh iomchaidh agus is ann ainneamh a thathas ga chleachdadh. Ann an cruth teòiridheach, tha e dòigh air choireigin a 'cuingealachadh a h-uile càil. Tha e a 'tionndadh a-mach àraidh prionnsabal a tha intuitively ceart, ach san fharsaingeachd cha deach a dhearbhadh.

Is e cunbhalachd adhbharach am modail as làidire

Is e na tha a’ tachairt a-nis gum faigh thu na trì rudan: Co-chòrdalachd, ri fhaighinn a’ cleachdadh Pàirtean. Gu sònraichte, Causal cunbhalachd a 'mhodail as làidire cunbhalachd, a tha fhathast ag obair ann an làthair Partitions (briseadh anns an lìonra). Sin as coireach gu bheil e cho inntinneach, agus is ann air sgàth sin a ghabh sinn ris.

HighLoad ++, Mikhail Tyulenev (MongoDB): Seasmhachd adhbharach: bho theòiridh gu cleachdadh

An toiseach, bidh e a 'sìmpleachadh obair luchd-leasachaidh aplacaid. Gu sònraichte, làthaireachd taic mhòr bhon fhrithealaiche: nuair a tha a h-uile clàr a tha a ’tachairt taobh a-staigh aon neach-dèiligidh cinnteach gun ruig iad san aon sreath air teachdaiche eile. San dara h-àite, tha e a 'seasamh an aghaidh sgaradh.

Cidsin a-staigh MongoDB

A 'cuimhneachadh gur e lòn a th' ann, gluaisidh sinn chun a 'chidsin. Innsidh mi dhut mu mhodail an t-siostaim, is e sin, dè a th ’ann am MongoDB dhaibhsan a tha a’ cluinntinn mu stòr-dàta mar sin airson a ’chiad uair.

HighLoad ++, Mikhail Tyulenev (MongoDB): Seasmhachd adhbharach: bho theòiridh gu cleachdadh

HighLoad ++, Mikhail Tyulenev (MongoDB): Seasmhachd adhbharach: bho theòiridh gu cleachdadh

Tha MongoDB (ris an canar “MongoDB an-seo”) na shiostam sgaoilte a bheir taic do sgèileadh còmhnard, is e sin, sharding; agus taobh a-staigh gach shard tha e cuideachd a 'toirt taic do chall dàta, is e sin, ath-riochdachadh.

Bidh roinneadh ann am MongoDB (chan e stòr-dàta dàimheach) a’ coileanadh cothromachadh fèin-ghluasadach, is e sin, tha gach cruinneachadh de sgrìobhainnean (no “clàr” a thaobh dàta dàimheach) air a roinn ann am pìosan, agus bidh an frithealaiche gan gluasad gu fèin-ghluasadach eadar shards.

Is e an Query Router, a bhios a’ sgaoileadh iarrtasan, airson teachdaiche cuid de neach-dèiligidh tro bheil e ag obair. Tha fios aige mu thràth càite agus dè an dàta a tha air a shuidheachadh agus a’ stiùireadh a h-uile iarrtas chun shard cheart.

Puing cudromach eile: tha MongoDB na aon mhaighstir. Tha aon bhun-sgoil ann - faodaidh e clàran a ghabhail a bheir taic do na h-iuchraichean a th’ ann. Chan urrainn dhut sgrìobhadh ioma-mhaighstir a dhèanamh.

Rinn sinn brath 4.2 - nochd rudan inntinneach ùra an sin. Gu sònraichte, chuir iad a-steach Lucene - sgrùdadh - is e sin java so-ghnìomhaichte gu dìreach a-steach do Mongo, agus an sin bha e comasach rannsachaidhean a dhèanamh tro Lucene, an aon rud ri Elastica.

Agus rinn iad toradh ùr - Cairtean, tha e cuideachd ri fhaighinn air Atlas (Cloud Mongo fhèin). Tha Ìre an-asgaidh aca - faodaidh tu cluich timcheall leis. Chòrd Cairtean rium gu mòr - fradharc dàta, gu math intuitive.

Tàthchuid Causal cunbhalachd

Chunnt mi mu 230 artaigil a chaidh fhoillseachadh air a’ chuspair seo - bho Leslie Lampert. A-nis as mo chuimhne bheir mi dhut cuid de na stuthan sin.

HighLoad ++, Mikhail Tyulenev (MongoDB): Seasmhachd adhbharach: bho theòiridh gu cleachdadh

Thòisich seo uile le artaigil le Leslie Lampert, a chaidh a sgrìobhadh anns na 1970n. Mar a chì thu, tha beagan rannsachaidh air a’ chuspair seo fhathast a’ dol air adhart. A-nis tha cunbhalachd Causal a 'faighinn ùidh ann an co-cheangal ri leasachadh siostaman sgaoilte.

Srian

Dè na cuingeachaidhean a th’ ann? Is e seo gu dearbh aon de na prìomh phuingean, leis gu bheil na cuingeadan a tha siostam toraidh a’ cur an sàs gu math eadar-dhealaichte bho na cuingeadan a tha ann an artaigilean acadaimigeach. Gu tric tha iad gu math fuadain.

HighLoad ++, Mikhail Tyulenev (MongoDB): Seasmhachd adhbharach: bho theòiridh gu cleachdadh

  • An toiseach, tha “MongoDB” na aon mhaighstir, mar a thuirt mi mu thràth (tha seo gu mòr a ’sìmpleachadh).
  • Tha sinn den bheachd gum bu chòir don t-siostam taic a thoirt do mu 10 mìle shards. Chan urrainn dhuinn co-dhùnaidhean ailtireachd sam bith a dhèanamh a chuireas casg air an luach seo gu soilleir.
  • Tha sgòth againn, ach tha sinn a 'gabhail ris gum bu chòir cothrom a bhith aig neach fhathast nuair a bhios e a' luchdachadh sìos binary, ga ruith air an laptop aige, agus tha a h-uile dad ag obair gu math.
  • Tha sinn a’ gabhail ris gur ann ainneamh a bhios Rannsachadh a’ gabhail ris: faodaidh teachdaichean bhon taobh a-muigh rud sam bith a tha iad ag iarraidh a dhèanamh. Tha MongoDB na stòr fosgailte. A rèir sin, faodaidh luchd-dèiligidh a bhith cho sgiobalta agus feargach - faodaidh iad a bhith ag iarraidh a h-uile càil a bhriseadh. Tha sinn a’ dèanamh a-mach gur dòcha gun tàinig Feilors Byzantine bho thùs.
  • Airson teachdaichean bhon taobh a-muigh a tha taobh a-muigh na h-iomall, tha cuingealachadh cudromach ann: ma tha am feart seo ciorramach, cha bu chòir cumail ri truailleadh coileanaidh sam bith.
  • Tha puing eile sa chumantas an-aghaidh acadaimigeach: co-chòrdalachd dreachan roimhe agus feadhainn san àm ri teachd. Feumaidh seann dhraibhearan taic a thoirt do ùrachaidhean ùra, agus feumaidh an stòr-dàta taic a thoirt do sheann dhraibhearan.

San fharsaingeachd, tha seo uile a 'cur bacadh air.

Co-phàirtean cunbhalachd adhbharach

Bruidhnidh mi a-nis mu chuid de na co-phàirtean. Ma smaoinicheas sinn air cunbhalachd Causal san fharsaingeachd, is urrainn dhuinn blocaichean a thaghadh. Thagh sinn bho obraichean a bhuineas do bhloc sònraichte: Sgrùdadh eisimeileachd, taghadh chlocaichean, mar as urrainnear na clocaichean sin a shioncronachadh le chèile, agus mar a nì sinn cinnteach à tèarainteachd - is e seo dealbh garbh de na bhios mi a’ bruidhinn mu dheidhinn:

HighLoad ++, Mikhail Tyulenev (MongoDB): Seasmhachd adhbharach: bho theòiridh gu cleachdadh

Rianachd làn eisimeileachd

Carson a tha feum air? Gus am bi fiosrachadh anns gach atharrachadh dàta mu na h-atharrachaidhean air a bheil e an urra, nuair a thèid dàta ath-aithris. Is e a’ chiad atharrachadh agus naive nuair a tha fiosrachadh mu theachdaireachdan roimhe anns gach teachdaireachd anns a bheil clàr:

HighLoad ++, Mikhail Tyulenev (MongoDB): Seasmhachd adhbharach: bho theòiridh gu cleachdadh

San eisimpleir seo, is e an àireamh eadar camagan lùbach na h-àireamhan as àirde. Uaireannan bidh na clàran sin le luachan eadhon air an gluasad gu h-iomlan, uaireannan bidh cuid de dhreachan air an gluasad. Is e an loidhne gu h-ìosal gu bheil gach atharrachadh a 'toirt a-steach fiosrachadh mun fhear roimhe (gu follaiseach a' giùlan seo uile taobh a-staigh fhèin).

Carson a chuir sinn romhainn gun a bhith a’ cleachdadh an dòigh-obrach seo (tracadh slàn)? Gu dearbh, leis gu bheil an dòigh-obrach seo neo-phractaigeach: bidh atharrachadh sam bith air lìonra sòisealta an urra ris a h-uile atharrachadh roimhe air an lìonra sòisealta sin, a ’gluasad, ag ràdh, Facebook no VKontakte anns a h-uile ùrachadh. Ach a dh’ aindeoin sin, tha tòrr rannsachaidh ann air Làn-eisimeileachd Tracking - is iad sin lìonraidhean ro-shòisealta; airson cuid de shuidheachaidhean tha e ag obair dha-rìribh.

Lorg eisimeileachd follaiseach

Tha an ath fhear nas cuingealaichte. Thathas cuideachd a’ beachdachadh air gluasad fiosrachaidh an seo, ach dìreach an rud a tha gu soilleir an urra. Dè a tha an urra ri dè, mar riaghailt, a tha air a dhearbhadh leis an Iarrtas. Nuair a thèid dàta ath-aithris, cha till a’ cheist ach freagairtean nuair a tha eisimeileachd roimhe air a bhith riaraichte, is e sin, air a shealltainn. Is e seo brìgh mar a tha cunbhalachd Causal ag obair.

HighLoad ++, Mikhail Tyulenev (MongoDB): Seasmhachd adhbharach: bho theòiridh gu cleachdadh

Tha i a 'faicinn gu bheil clàr 5 an crochadh air clàran 1, 2, 3, 4 - a rèir sin, bidh i a' feitheamh mus faigh an neach-dèiligidh cothrom air na h-atharrachaidhean a rinn co-dhùnadh ruigsinneachd Penny, nuair a tha a h-uile atharrachadh roimhe air a dhol tron ​​​​stòr-dàta mu thràth.

Chan eil seo a’ freagairt oirnn nas motha, oir tha cus fiosrachaidh ann fhathast, agus cuiridh e maill air cùisean. Tha dòigh-obrach eile ann ...

Cloc Lamport

Tha iad gu math sean. Tha Cloc Lamport a’ ciallachadh gu bheil na h-eisimeileachd sin air am pasgadh a-steach do ghnìomh sgalar, ris an canar Lamport Clock.

Is e gnìomh sgalar cuid de dh’ àireamh eas-chruthach. Gu tric canar àm loidsigeach ris. Le gach tachartas, bidh an àireamh seo ag àrdachadh. Bidh Counter, a tha aithnichte don phròiseas an-dràsta, a 'cur gach teachdaireachd. Tha e soilleir gum faod pròiseasan a bhith a-mach à sioncranachadh, faodaidh amannan gu tur eadar-dhealaichte a bhith aca. Ach a dh’ aindeoin sin, tha an siostam dòigh air choireigin a’ cothromachadh a’ ghleoc le leithid de theachdaireachdan. Dè thachras sa chùis seo?

Roinn mi am pìos mòr sin na dhà airson a dhèanamh soilleir: faodaidh caraidean fuireach ann an aon nód, anns a bheil pìos den chruinneachadh, agus faodaidh Feed a bhith beò ann an nód eile, anns a bheil pìos den chruinneachadh seo. A bheil e soilleir ciamar a gheibh iad a-mach às an loidhne? Canaidh First Feed: “Replicated”, agus an uairsin Caraidean. Mura toir an siostam gealltanas de sheòrsa air choreigin nach tèid am Feed a shealltainn gus an tèid eisimeileachd nan Caraidean ann an cruinneachadh nan Caraidean a lìbhrigeadh cuideachd, bidh an dearbh shuidheachadh againn air an tug mi iomradh.

Chì thu mar a tha an ùine cunntais air Feed ag àrdachadh gu loidsigeach:

HighLoad ++, Mikhail Tyulenev (MongoDB): Seasmhachd adhbharach: bho theòiridh gu cleachdadh

Mar sin is e seo prìomh sheilbh a’ ghleoc Lamport seo agus cunbhalachd adhbharach (air a mhìneachadh tro Lamport Clock): ma tha Tachartasan A agus B againn, agus Tachartas B an urra ri Tachartas A *, tha e a’ leantainn gu bheil an ùine loidsigeach aig Tachartas A nas lugha na Ùine loidsigeach bho Tachartas B.

* Aig amannan bidh iad cuideachd ag ràdh gun do thachair A ro B, is e sin, A thachair ro B - is e dàimh sònraichte a tha seo a tha gu ìre ag òrdachadh an t-seata iomlan de thachartasan a thachair san fharsaingeachd.

Tha an taobh eile ceàrr. Is e seo dha-rìribh aon de na prìomh eas-bhuannachdan aig Lamport Clock - pàirt òrdugh. Tha bun-bheachd ann mu thachartasan aig an aon àm, is e sin, tachartasan nach do thachair (A ro B) no (A ro B). Is e eisimpleir eisimpleir mar a chuir Leonard ri cuideigin eile mar charaid (chan e eadhon Leonard, ach Sheldon, mar eisimpleir).
Is e seo an togalach a thathas gu tric air a chleachdadh nuair a bhios tu ag obair le clocaichean Lamport: bidh iad a’ coimhead gu sònraichte air a ’ghnìomh agus bho seo tha iad a’ co-dhùnadh gur dòcha gu bheil na tachartasan sin an urra. Leis gu bheil aon dòigh fìor: ma tha LogicalTime A nas lugha na LogicalTime B, chan urrainn dha B tachairt ro A; agus ma tha barrachd, is dòcha.

Cloc vector

Is e leasachadh loidsigeach cloc Lamport an Cloc Vector. Tha iad eadar-dhealaichte leis gu bheil a ghleoc fa leth fhèin aig gach nód a tha an seo, agus tha iad air an gluasad mar vectar.
Anns a 'chùis seo, chì thu gu bheil an clàr-amais neoni den vectar an urra ri Feed, agus tha a' chiad chlàr-amais den vectar airson Caraidean (gach aon de na nodan sin). Agus a-nis àrdaichidh iad: àrdaichidh an clàr-amais neoni de “Feed” nuair a sgrìobhas tu - 1, 2, 3:

HighLoad ++, Mikhail Tyulenev (MongoDB): Seasmhachd adhbharach: bho theòiridh gu cleachdadh

Carson a tha Vector Clock nas fheàrr? Leis gu bheil iad a ’toirt cothrom dhut faighinn a-mach dè na tachartasan a tha aig an aon àm agus cuin a bhios iad a’ tachairt air diofar nodan. Tha seo glè chudromach airson siostam sharding mar MongoDB. Ach, cha do thagh sinn seo, ged is e rud mìorbhaileach a th’ ann, agus tha e ag obair glè mhath, agus is dòcha gum biodh e freagarrach dhuinn...

Ma tha 10 mìle shards againn, chan urrainn dhuinn 10 mìle co-phàirtean a ghluasad, eadhon ged a dhlùthaicheas sinn e no ma thig sinn suas le rudeigin eile - bidh an t-uallach pàighidh fhathast grunn thursan nas lugha na meud an vectar iomlan seo. Mar sin, a 'bleith ar cridheachan agus ar fiaclan, thrèig sinn an dòigh-obrach seo agus ghluais sinn air adhart gu fear eile.

Spanner TrueTime. Cloc atamach

Thuirt mi gum biodh sgeulachd ann mu Spanner. Is e rud fionnar a tha seo, dìreach a-mach às an XNUMXmh linn: clocaichean atamach, sioncronadh GPS.

Dè am beachd a th’ ann? Is e siostam Google a th’ ann an “Spanner” a bha eadhon ri fhaighinn le daoine o chionn ghoirid (chuir iad SQL ris). Tha stampa ùine aig gach gnothach an sin. Leis gu bheil ùine air a shioncronachadh *, faodar ùine shònraichte a thoirt do gach tachartas - tha ùine feitheimh aig clocaichean atamach, agus às deidh sin tha ùine eadar-dhealaichte cinnteach “tachart”.

HighLoad ++, Mikhail Tyulenev (MongoDB): Seasmhachd adhbharach: bho theòiridh gu cleachdadh

Mar sin, le bhith dìreach a’ sgrìobhadh chun stòr-dàta agus a’ feitheamh airson beagan ùine, tha Serializability an tachartais air a ghealltainn gu fèin-ghluasadach. Tha am modail Co-chòrdalachd as làidire aca a dh’ fhaodar a shamhlachadh ann am prionnsapal - is e Cunbhalachd Taobh a-muigh a th’ ann.

* Is e seo am prìomh dhuilgheadas le clocaichean Lampart - chan eil iad a-riamh sioncronaich air siostaman sgaoilte. Faodaidh iad a dhol eadar-dhealaichte; eadhon le NTP, chan eil iad fhathast ag obair glè mhath. Tha cloc atamach aig "Spanner" agus tha sioncronadh, tha e coltach, microseconds.

Carson nach do thagh sinn? Chan eil sinn a’ gabhail ris gu bheil gleoc atamach air a thogail a-steach don luchd-cleachdaidh againn. Nuair a nochdas iad, gan togail a-steach do gach laptop, bidh seòrsa de shioncronachadh GPS fìor fhionnar - mar sin tha... .

Cloc tar-chinealach

Is e seo dha-rìribh a tha a’ strì ann am MongoDB nuair a nì thu cinnteach à cunbhalachd adhbharach. Ciamar a tha iad hybrid? Is e luach sgalar a th’ ann an hibrid, ach tha dà phàirt ann:

HighLoad ++, Mikhail Tyulenev (MongoDB): Seasmhachd adhbharach: bho theòiridh gu cleachdadh

  • Is e a’ chiad fhear an t-àm Unix (cia mheud diogan a tha air a dhol seachad bho “toiseach saoghal a’ choimpiutair”).
  • Is e an dàrna fear beagan àrdachadh, cuideachd int 32-bit gun ainm.

Tha sin uile, gu dearbh. Tha an dòigh-obrach seo ann: tha am pàirt a tha an urra ri ùine air a shioncronachadh leis a’ ghleoc fad na h-ùine; a h-uile uair a thig ùrachadh, tha am pàirt seo air a shioncronachadh leis a’ ghleoc agus tha e a’ tionndadh a-mach gu bheil an ùine an-còmhnaidh ceart gu leòr, agus leigidh àrdachadh leat eadar-dhealachadh a dhèanamh eadar tachartasan a thachair aig an aon àm.

Carson a tha seo cudromach dha MongoDB? Leis gu bheil e a’ toirt cothrom dhut cuid de thaighean-bìdh cùl-taic a dhèanamh aig àm sònraichte, is e sin, tha an tachartas air a chlàradh a rèir ùine. Tha seo cudromach nuair a tha feum air tachartasan sònraichte; Airson stòr-dàta, is e tachartasan atharrachaidhean san stòr-dàta a thachair aig amannan sònraichte.

Innsidh mi dhut an adhbhar as cudromaiche a-mhàin dhut (feuch, na innis do dhuine sam bith)! Rinn sinn seo oir is ann mar seo a tha coltas dàta eagraichte, clàr-amais ann am MongoDB OpLog. Is e structar dàta a th’ ann an OpLog anns a bheil dìreach a h-uile atharrachadh san stòr-dàta: thèid iad gu OpLog an toiseach, agus an uairsin thèid an cur an sàs ann an Stòradh fhèin ma tha e na cheann-latha no shard ath-aithris.

B 'e seo am prìomh adhbhar. Ach, tha riatanasan practaigeach ann airson stòr-dàta a leasachadh, a tha a 'ciallachadh gum bu chòir dha a bhith sìmplidh - còd beag, cho beag de rudan briste' sa ghabhas a dh'fheumar ath-sgrìobhadh agus deuchainn. Chuidich an fhìrinn gun deach na h-oplogs againn a chlàradh le clocaichean tar-chinealach gu mòr agus leig leinn an roghainn cheart a dhèanamh. Phàigh e gu mòr agus dh ’obraich e gu draoidheil air a’ chiad prototype. Bha e uabhasach snog!

Sioncronadh uaireadair

Tha grunn dhòighean sioncronaidh air am mìneachadh anns an litreachas saidheansail. Tha mi a 'bruidhinn mu dheidhinn sioncronadh nuair a tha dà shards eadar-dhealaichte againn. Ma tha aon sheata mac-samhail ann, chan eil feum air sioncronadh sam bith: is e “maighstir singilte” a tha seo; tha OpLog againn, anns am bi a h-uile atharrachadh a’ tuiteam - sa chùis seo, tha a h-uile dad air òrdachadh mar-thà anns an “Oplog” fhèin. Ach ma tha dà shard eadar-dhealaichte againn, tha sioncronadh ùine cudromach an seo. Seo far an do chuidich an gleoc vector barrachd! Ach chan eil iad againn.

HighLoad ++, Mikhail Tyulenev (MongoDB): Seasmhachd adhbharach: bho theòiridh gu cleachdadh

Tha an dàrna fear freagarrach - is e seo “Heartbeats”. Tha e comasach cuid de chomharran iomlaid a thachras gach aonad ùine. Ach tha Heartbeats ro shlaodach, chan urrainn dhuinn latency a thoirt don neach-dèiligidh againn.

Tha fìor ùine, gu dearbh, na rud iongantach. Ach, a-rithist, is dòcha gur e seo an àm ri teachd ... Ged a ghabhas a dhèanamh mar-thà ann an Atlas, tha sioncronairean ùine luath “Amazon” ann mu thràth. Ach cha bhi e ri fhaotainn don a h-uile duine.

Is e gossiping nuair a bhios ùine anns a h-uile teachdaireachd. Is e seo timcheall air na bhios sinn a’ cleachdadh. Tha a h-uile teachdaireachd eadar nodan, draibhear, router nód dàta, dìreach a h-uile dad airson MongoDB na sheòrsa de eileamaid, pàirt stòr-dàta anns a bheil gleoc a ruitheas. Tha brìgh ùine tar-chinealach aca anns a h-uile àite, tha e air a ghluasad. 64 pìosan? Tha seo a’ ceadachadh, tha seo comasach.

Ciamar a tha e uile ag obair còmhla?

An seo tha mi a’ coimhead air aon sheata mac-samhail gus a dhèanamh beagan nas fhasa. Tha Bun-sgoil agus Àrd-sgoil ann. Bidh àrd-sgoil a’ dèanamh ath-riochdachadh agus chan eil e an-còmhnaidh air a shioncronachadh gu tur le Bun-sgoil.

Bidh cuir a-steach a’ tachairt a-steach don “Primery” le luach ùine sònraichte. Bidh an cuir a-steach seo a’ meudachadh a’ chunntais a-staigh le 11, mas e seo an ìre as àirde. No bheir e sùil air luachan a’ ghleoc agus sioncranachadh ris a’ ghleoc ma tha luachan a’ ghleoc nas motha. Leigidh seo leat eagrachadh le ùine.

Às deidh dha an clàradh a dhèanamh, bidh àm cudromach ann. Tha an gleoc ann am “MongoDB” agus cha tèid a mheudachadh ach gun fhios nach sgrìobh thu gu “Oplog”. Is e seo an tachartas a dh’ atharraicheas staid an t-siostaim. Anns a h-uile artaigil clasaigeach, thathas den bheachd gur e tachartas nuair a bhuaileas teachdaireachd nód: tha an teachdaireachd air ruighinn, a tha a 'ciallachadh gu bheil an siostam air a staid atharrachadh.

Tha seo air sgàth gu bheil rè rannsachadh nach eil e buileach soilleir ciamar a thèid an teachdaireachd seo a mhìneachadh. Tha fios againn gu cinnteach mura h-eil e air a nochdadh anns an “Oplog”, cha tèid a mhìneachadh ann an dòigh sam bith, agus chan eil ann an atharrachadh ann an staid an t-siostam ach inntrigeadh anns an “Oplog”. Bidh seo a 'sìmpleachadh a h-uile càil dhuinn: tha am modail ga dhèanamh nas sìmplidhe, agus a' leigeil leinn a chuir air dòigh taobh a-staigh aon sheata mac-samhail, agus mòran de rudan feumail eile.

Tha an luach a tha mar-thà air a sgrìobhadh chun an "Oplog" air a thilleadh - tha fios againn gu bheil an luach seo mar-thà anns an "Oplog", agus tha an ùine aige 12. A-nis, can, tha leughadh a 'tòiseachadh bho nód eile (Àrd-sgoil), agus bidh e a' sgaoileadh às dèidh ClusterTime ann an an teachdaireachd. Tha e ag ràdh: “Tha feum agam air a h-uile càil a thachair co-dhiù às deidh 12 no rè dusan” (faic an dealbh gu h-àrd).

Is e seo an rud ris an canar Causal a constant (CAT). Tha leithid de bhun-bheachd ann an teòiridh gur e beagan ùine a tha seo, a tha cunbhalach ann fhèin. Anns a 'chùis seo, faodaidh sinn a ràdh gur e seo staid an t-siostam a chaidh a choimhead aig àm 12.

A-nis chan eil dad an seo fhathast, oir tha an seòrsa seo de dh’ atharrais air an t-suidheachadh nuair a dh’ fheumas tu an Àrd-sgoil gus dàta bhon Bhun-sgoil ath-riochdachadh. Tha e a 'feitheamh ... Agus a-nis tha an dàta air ruighinn - bidh e a' tilleadh nan luachan sin air ais.

HighLoad ++, Mikhail Tyulenev (MongoDB): Seasmhachd adhbharach: bho theòiridh gu cleachdadh

Sin gu ìre mhòr mar a tha e uile ag obair. Cha mhòr.

Dè tha “cha mhòr” a’ ciallachadh? Gabhamaid ris gu bheil neach ann a leugh agus a thuig mar a tha seo uile ag obair. Thuig mi, a h-uile uair a thachras ClusterTime, gum bi e ag ùrachadh a’ ghleoc loidsigeach a-staigh, agus an uairsin bidh an ath inntrigeadh ag àrdachadh aon. Gabhaidh an gnìomh seo 20 loidhne. Canaidh sinn gu bheil an neach seo a’ tar-chuir an àireamh 64-bit as motha, às aonais aon.

Carson "minus one"? Leis gun tèid an gleoc a-staigh a chuir a-steach don luach seo (gu follaiseach, is e seo an ìre as motha a tha comasach agus nas motha na an ùine a th ’ann an-dràsta), bidh inntrigeadh ann an“ Oplog ”, agus thèid an gleoc àrdachadh le aonad eile - agus bidh sin mar-thà. a bhith mar an luach as àirde (tha dìreach a h-uile aonad ann, chan eil àite eile ri dhol), ints mì-chinnteach).

Tha e soilleir gu bheil an dèidh seo an t-siostam a 'fàs gu tur do-ruigsinneach airson rud sam bith. Chan urrainnear a luchdachadh agus a ghlanadh ach - tòrr obair làimhe. Cothrom slàn:

HighLoad ++, Mikhail Tyulenev (MongoDB): Seasmhachd adhbharach: bho theòiridh gu cleachdadh

A bharrachd air an sin, ma thèid seo ath-aithris an àiteigin eile, bidh an cruinneachadh gu lèir dìreach a’ tuiteam sìos. Suidheachadh gu tur neo-iomchaidh as urrainn do dhuine sam bith a chuir air dòigh gu math luath agus gu furasta! Mar sin, bheachdaich sinn air an àm seo mar aon den fheadhainn as cudromaiche. Ciamar gus casg a chur air?

Is e an dòigh againn a bhith a’ soidhnigeadh clusterTime

Seo mar a tha e air a ghluasad anns an teachdaireachd (ron teacsa gorm). Ach thòisich sinn cuideachd air ainm-sgrìobhte a ghineadh (teacsa gorm):

HighLoad ++, Mikhail Tyulenev (MongoDB): Seasmhachd adhbharach: bho theòiridh gu cleachdadh

Tha an ainm-sgrìobhte air a chruthachadh le iuchair a tha air a stòradh taobh a-staigh an stòr-dàta, taobh a-staigh iomall tèarainte; tha e fhèin air a chruthachadh agus air ùrachadh (chan eil luchd-cleachdaidh a’ faicinn dad mu dheidhinn). Thèid hash a chruthachadh, agus thèid gach teachdaireachd a shoidhnigeadh nuair a thèid a chruthachadh agus a dhearbhadh nuair a gheibhear e.
Is dòcha gu bheil a’ cheist ag èirigh ann an inntinnean dhaoine: “Dè an ìre gu bheil seo a’ slaodadh rudan sìos? ” Thuirt mi riut gum bu chòir dha obrachadh gu sgiobalta, gu sònraichte às aonais am feart seo.

Dè tha e a 'ciallachadh a bhith a' cleachdadh cunbhalachd Causal sa chùis seo? Tha seo airson am paramadair afterClusterTime a shealltainn. Às aonais seo, bidh e dìreach a 'dol seachad air luachan co-dhiù. Bidh gossiping, a’ tòiseachadh bho dhreach 3.6, an-còmhnaidh ag obair.

Ma dh'fhàgas sinn ginealach cunbhalach de ainmean-sgrìobhte, cuiridh e maill air an t-siostam eadhon às aonais feart, nach eil a 'coinneachadh ris na dòighean-obrach agus na riatanasan againn. Mar sin dè rinn sinn?

Dèan e gu sgiobalta!

Is e rud gu math sìmplidh a th’ ann, ach tha an cleas inntinneach - roinnidh mi e, is dòcha gum bi ùidh aig cuideigin.
Tha hash againn a bhios a’ stòradh an dàta soidhnichte. Bidh a h-uile dàta a 'dol tron ​​​​tasgadh. Chan eil an tasgadan a’ soidhnigeadh an ùine shònraichte, ach an Raon. Nuair a ruigeas cuid de luach, bidh sinn a’ gineadh Raon, cuir a-mach na 16 pìosan mu dheireadh, agus bidh sinn a’ soidhnigeadh an luach seo:

HighLoad ++, Mikhail Tyulenev (MongoDB): Seasmhachd adhbharach: bho theòiridh gu cleachdadh

Le bhith a 'faighinn a leithid de ainm-sgrìobhte, bidh sinn a' luathachadh an t-siostam (gu ìre mhath) 65 mìle uair. Tha e ag obair glè mhath: nuair a rinn sinn deuchainnean, chaidh an ùine sìos 10 mìle uair nuair a bha ùrachadh sreath againn. Tha e soilleir, nuair a tha iad ann an cunnart, nach obraich seo. Ach anns a 'mhòr-chuid de chùisean practaigeach bidh e ag obair. Dh’ fhuasgail an cothlamadh den ainm-sgrìobhte Raon còmhla ris an ainm-sgrìobhte an duilgheadas tèarainteachd.

Dè tha sinn air ionnsachadh?

Leasanan a dh’ ionnsaich sinn bho seo:

  • Feumaidh sinn stuthan, sgeulachdan, artaigilean a leughadh, oir tha tòrr rudan inntinneach againn. Nuair a bhios sinn ag obair air cuid de fheart (gu sònraichte a-nis, nuair a rinn sinn gnothaichean, msaa), feumaidh sinn leughadh agus tuigsinn. Bheir e ùine, ach tha e gu math feumail oir tha e ga dhèanamh soilleir far a bheil sinn. Cha robh coltas gu robh sinn a’ tighinn suas le dad ùr - ghabh sinn na grìtheidean.

    San fharsaingeachd, tha eadar-dhealachadh sònraichte ann an smaoineachadh nuair a tha co-labhairt acadaimigeach ann (Sigmon, mar eisimpleir) - bidh a h-uile duine ag amas air beachdan ùra. Dè a tha ùr mun algairim againn? Chan eil dad gu sònraichte ùr an seo. Tha an rud ùr na laighe anns an dòigh anns an do mheasg sinn dòighean-obrach a th’ ann mar-thà. Mar sin, is e a’ chiad rud na clasaichean clasaigeach a leughadh, a’ tòiseachadh le Lampart.

  • Ann an riochdachadh, tha na riatanasan gu tur eadar-dhealaichte. Tha mi cinnteach nach eil mòran agaibh a’ cur aghaidh ri stòran-dàta “spherical” ann am falamh eas-chruthach, ach le rudan àbhaisteach, fìor aig a bheil duilgheadasan le ruigsinneachd, latency agus fulangas sgàinidhean.
  • Is e an rud mu dheireadh gum feumadh sinn coimhead air diofar bheachdan agus grunn artaigilean gu tur eadar-dhealaichte a chur còmhla ann an aon dòigh-obrach, còmhla. Mar as trice thàinig am beachd mu bhith a’ soidhnigeadh, mar eisimpleir, bho artaigil a bheachdaich air protocol Paxos, a tha airson Fàillidhean neo-Byzantine taobh a-staigh a’ phròtacal ùghdarrais, airson feadhainn Byzantine - taobh a-muigh a’ phròtacal ùghdarrais... San fharsaingeachd, is e seo dìreach a tha sinn chrìochnaich e a 'dèanamh.

    Chan eil dad ùr an seo! Ach cho luath ‘s a mheasgaich sinn a h-uile càil còmhla ... Tha e an aon rud ri bhith ag ràdh gu bheil reasabaidh salad Olivier gòrach, leis gu bheil uighean, mayonnaise agus cucumbers air an innleachadh mu thràth ... Tha e mun aon sgeulachd.

HighLoad ++, Mikhail Tyulenev (MongoDB): Seasmhachd adhbharach: bho theòiridh gu cleachdadh

Crìochnaichidh mi le seo. Tapadh leat!

Do cheistean

Ceist bhon luchd-èisteachd (air ainmeachadh an-seo mar B): - Tapadh leibh, a Mhicheil, airson na h-aithisg! Tha cuspair ùine inntinneach. Tha thu a’ cleachdadh Gossiping. Thuirt iad gu bheil an ùine aca fhèin aig a h-uile duine, gu bheil fios aig a h-uile duine air an ùine ionadail aca. Mar a tha mi ga thuigsinn, tha dràibhear againn - faodaidh mòran luchd-dèiligidh a bhith ann le draibhearan, luchd-dealbhaidh cheistean cuideachd, slatan cuideachd ... mionaid air thoiseach, cuideigin mionaid air dheireadh? Càite an tig sinn gu crìch?

MT: - Ceist sgoinneil gu dearbh! Bha mi dìreach airson bruidhinn mu shards. Ma tha mi a 'tuigsinn a' cheist gu ceart, tha an suidheachadh a leanas againn: tha shard 1 agus shard 2 ann, tha leughadh a 'tachairt bhon dà shard seo - tha eadar-dhealachadh aca, chan eil iad ag eadar-obrachadh le chèile, oir tha an ùine a tha fios aca eadar-dhealaichte, gu sònraichte an ùine a tha iad ann an oplogs.
Canaidh sinn gun do rinn shard 1 millean clàr, cha do rinn shard 2 dad idir, agus thàinig an t-iarrtas gu dà shards. Agus tha afterClusterTime de chòrr air millean aig a’ chiad fhear. Ann an suidheachadh mar seo, mar a mhìnich mi, cha toir shard 2 freagairt idir idir.

AT: - Bha mi airson faighinn a-mach mar a bhios iad a’ sioncronadh agus a’ taghadh aon àm loidsigeach?

MT: - Gu math furasta a shioncronachadh. Shard, nuair a thig AfterClusterTime thuige agus nach lorg e ùine anns an “Oplog”, a’ tòiseachadh gun aonta. Is e sin, tha e a 'togail a chuid ùine le a làmhan chun an luach seo. Tha seo a’ ciallachadh nach eil tachartasan sam bith ann a fhreagras air an iarrtas seo. Bidh e a’ cruthachadh an tachartais seo gu saor-thoileach agus mar sin a’ tighinn gu bhith Co-chòrdail Adhbharach.

AT: - Dè ma thig tachartasan eile thuige a chaidh air chall an àiteigin san lìonra às deidh seo?

MT: - Tha Shard air a dhealbhadh ann an dòigh nach tig iad a-rithist, leis gur e aon mhaighstir a th’ ann. Ma tha e air soidhnigeadh mu thràth, cha tig iad, ach thig iad nas fhaide air adhart. Chan urrainn dha tachairt gu bheil rudeigin a’ dol an sàs an àiteigin, agus mar sin cha bhith e a’ sgrìobhadh, agus an uairsin thig na tachartasan sin - agus tha cunbhalachd an Aiseirigh briste. Nuair nach sgrìobh e, bu chòir dhaibh uile tighinn an ath rud (feitheamh e riutha).

HighLoad ++, Mikhail Tyulenev (MongoDB): Seasmhachd adhbharach: bho theòiridh gu cleachdadh

AT: - Tha grunn cheistean agam a thaobh nan ciudhaichean. Tha cunbhalachd adhbharach a’ gabhail ris gu bheil ciudha sònraichte de ghnìomhan a dh’ fheumar a choileanadh. Dè thachras ma thèid aon de na pacaidean againn à sealladh? Seo a’ tighinn an 10mh, 11mh... tha an 12mh air a dhol à bith, agus tha a h-uile duine eile a’ feitheamh gus an tig e gu buil. Agus gu h-obann bhàsaich an càr againn, chan urrainn dhuinn dad a dhèanamh. A bheil an fhad as motha den ciudha a chruinnicheas mus tèid a chur gu bàs? Dè an fhàiligeadh marbhtach a thachras nuair a thèid aon stàit a chall? A bharrachd air an sin, ma sgrìobhas sinn sìos gu bheil staid air choireigin ann roimhe, an uairsin bu chòir dhuinn dòigh air choireigin tòiseachadh bhuaithe? Ach cha do chuir iad air falbh e!

MT: - Ceist sgoinneil cuideachd! Dè tha sinn a' dèanamh? Tha bun-bheachd aig MongoDB air sgrìobhadh cuòram, leughas cuòram. Dè na cùisean anns am faodar teachdaireachd a chall? Nuair nach eil cuòram ann an sgrìobhadh no nuair nach e cuòram a th’ ann an leughadh (faodaidh seòrsa de sgudal cumail ris cuideachd).
A thaobh cunbhalachd adhbharach, chaidh deuchainn dearbhaidh mòr a dhèanamh, agus b’ e an toradh a bh’ ann nuair a tha sgrìobhadh agus leughadh neo-chuòram, gu bheil brisidhean air cunbhalachd adhbharach a’ tachairt. Dìreach na tha thu ag ràdh!

Ar comhairle: cleachd co-dhiù leughadh cuòram nuair a bhios tu a’ cleachdadh cunbhalachd Causal. Anns a 'chùis seo, cha tèid dad a chall, eadhon ged a thèid an clàr cuòram a chall... 'S e suidheachadh orthogonal a tha seo: mura h-eil an neach-cleachdaidh ag iarraidh gun tèid dàta a chall, feumaidh e clàr cuòram a chleachdadh. Chan eil cunbhalachd adhbharach a’ gealltainn seasmhachd. Tha seasmhachd air a ghealltainn le ath-riochdachadh agus an inneal co-cheangailte ri ath-riochdachadh.

AT: - Nuair a chruthaicheas sinn eisimpleir a bhios a ’dèanamh sharding dhuinn (chan e maighstir, ach tràill, fa leth), bidh e an urra ri àm Unix den inneal aige fhèin no air àm a’ “mhaighstir”; A bheil e a’ sioncronadh airson a’ chiad uair no bho àm gu àm?

MT: — Soilleirichidh mi nis. Shard (ie sgaradh còmhnard) - tha bun-sgoil ann an-còmhnaidh. Agus faodaidh “maighstir” a bhith aig shard agus faodaidh mac-samhail a bhith ann. Ach bidh an shard an-còmhnaidh a’ toirt taic do chlàradh, oir feumaidh e taic a thoirt do chuid de dh’ àrainn (tha Bun-sgoil aig a’ shard).

AT: - Mar sin tha a h-uile dad an urra ris a’ “mhaighstir” a-mhàin? A bheil prìomh ùine an-còmhnaidh air a chleachdadh?

MT: - Tha. Faodaidh tu a ràdh gu fìrinneach: tha an gleoc a’ tic nuair a thig a-steach don “mhaighstir”, a-steach don “Oplog”.

AT: - Tha teachdaiche againn a tha a’ ceangal agus nach fheum fios a bhith againn mun ùine?

MT: - Chan fheum thu fios a bhith agad idir! Ma tha sinn a 'bruidhinn mu dheidhinn mar a tha e ag obair air an neach-dèiligidh: nuair a tha an neach-dèiligidh ag iarraidh a chleachdadh Causal cunbhalachd, feumaidh e Fosgail seisean. A-nis tha a h-uile dad ann: gnothaichean san t-seisean, agus faighinn air ais còraichean... Is e seisean òrdachadh tachartasan loidsigeach a tha a’ tachairt leis an neach-dèiligidh.

Ma dh'fhosglas e an seisean seo agus ag ràdh an sin gu bheil e ag iarraidh cunbhalachd adhbharach (ma tha an seisean a 'toirt taic dha cunbhalachd Causal gu bunaiteach), bidh a h-uile dad ag obair gu fèin-obrachail. Bidh an dràibhear a 'cuimhneachadh air an àm seo agus ga àrdachadh nuair a gheibh e teachdaireachd ùr. Tha e a’ cuimhneachadh dè an fhreagairt a thill am fear roimhe bhon fhrithealaiche a thill an dàta. Anns an ath iarrtas bidh afterCluster (“ùine nas motha na seo”).

Chan fheum fios a bhith aig an neach-dèiligidh dad sam bith! Tha seo gu tur neo-shoilleir dha. Ma chleachdas daoine na feartan sin, dè as urrainn dhaibh a dhèanamh? An toiseach, faodaidh tu àrd-sgoiltean a leughadh gu sàbhailte: faodaidh tu sgrìobhadh gu Bun-sgoil agus leughadh bho àrd-sgoiltean a tha air an riochdachadh gu cruinn-eòlasach agus dèan cinnteach gu bheil e ag obair. Aig an aon àm, faodar seiseanan a chaidh a chlàradh air Bun-sgoil a ghluasad gu Àrd-sgoil, ie chan urrainn dhut aon seisean a chleachdadh, ach grunn.

AT: - Sreath ùr de shaidheans coimpiutaireachd - seòrsaichean dàta CRDT (Seòrsaichean Dàta Ath-leasaichte gun strì) - ceangailte gu làidir ri cuspair cunbhalachd mu dheireadh. A bheil thu air beachdachadh air na seòrsaichean dàta seo a thoirt a-steach don stòr-dàta agus dè as urrainn dhut a ràdh mu dheidhinn?

MT: - Deagh cheist! Tha CRDT a’ dèanamh ciall airson còmhstri sgrìobhaidh: ann am MongoDB, maighstir singilte.

AT: - Tha ceist agam bho na devops. Anns an fhìor shaoghal, tha leithid de shuidheachaidhean Jesuitigeach ann nuair a tha an Fàiligeadh Byzantine a ’tachairt, agus daoine olc taobh a-staigh an iomall dìon a’ tòiseachadh a ’dol a-steach don phròtacal, a’ cur pacaidean ciùird ann an dòigh shònraichte?

HighLoad ++, Mikhail Tyulenev (MongoDB): Seasmhachd adhbharach: bho theòiridh gu cleachdadh

MT: - Tha daoine olc taobh a-staigh an iomall coltach ri each Trojan! Faodaidh daoine olc taobh a-staigh an iomall tòrr rudan dona a dhèanamh.

AT: - Tha e soilleir gum fàg thu, cha mhòr a’ bruidhinn, toll anns an t-seirbheisiche tron ​​​​urrainn dhut sù de ailbhein a chuir agus an cruinneachadh gu lèir a leagail gu bràth... Bheir e ùine airson faighinn seachad air le làimh... Tha seo, airson a chuir gu socair, ceàrr. Air an làimh eile, tha seo inntinneach: ann am fìor bheatha, ann an cleachdadh, tha suidheachaidhean ann nuair a tha ionnsaighean taobh a-staigh coltach ri nàdarra a 'tachairt?

MT: - Leis gur ann ainneamh a choinnicheas mi ri brisidhean tèarainteachd ann am fìor bheatha, chan urrainn dhomh a ràdh an tachair iad. Ach ma bhios sinn a 'bruidhinn mu dheidhinn feallsanachd leasachaidh, tha sinn a' smaoineachadh mar seo: tha iomall againn a bheir seachad na daoine a tha a 'dèanamh tèarainteachd - is e caisteal, balla a tha seo; agus taobh a-staigh an iomall faodaidh tu rud sam bith a tha thu ag iarraidh a dhèanamh. Tha e soilleir gu bheil luchd-cleachdaidh ann le comas dìreach coimhead, agus tha comas ann an eòlaire a dhubhadh às.

A rèir nan còraichean, faodaidh am milleadh a nì luchd-cleachdaidh a bhith na luchag, no faodaidh e a bhith na ailbhean. Tha e soilleir gum faod neach-cleachdaidh le làn chòraichean rud sam bith a dhèanamh. Faodaidh neach-cleachdaidh le còraichean cuibhrichte mòran nas lugha de chron adhbhrachadh. Gu sònraichte, chan urrainn dha an siostam a bhriseadh.

AT: - Anns an iomall dìonta, dh’ fheuch cuideigin ri protocolaidhean ris nach robh dùil a chruthachadh airson an t-seirbheisiche gus an frithealaiche a sgrios gu tur, agus ma tha thu fortanach, an cruinneachadh gu lèir ... Am faigh e sin “math” a-riamh?

MT: “Cha chuala mi a leithid a-riamh.” Chan eil e dìomhair gun urrainn dhut frithealaiche a thubaist san dòigh seo. Fàiligeadh a-staigh, le bhith bhon phròtacal, a bhith nad neach-cleachdaidh ùghdarraichte as urrainn rudeigin mar seo a sgrìobhadh anns an teachdaireachd ... Gu dearbh, tha e do-dhèanta, oir bidh e fhathast air a dhearbhadh. Tha e comasach an dearbhadh seo a chuir dheth airson luchd-cleachdaidh nach eil ga iarraidh - is e sin an duilgheadas aca; sgrios iad, an ìre mhath, na ballachan iad fhèin agus faodaidh tu ailbhean a phutadh a-steach an sin, a nì stampadh... Ach san fharsaingeachd, faodaidh tu aodach mar neach-càraidh, thig agus tarraing a-mach e!

AT: - Tapadh leibh airson an aithris. Sergey (Yandex). Tha seasmhach ann am Mong a tha a’ cuingealachadh na h-àireimh de bhuill bhòtaidh san t-Seata Mac-samhail, agus is e an seasmhach seo 7 (seachdnar). Carson a tha seo seasmhach? Carson nach e seòrsa paramadair a tha seo?

MT: - Tha seataichean mac-samhail againn le 40 nodan. Tha mòr-chuid ann an-còmhnaidh. Chan eil fios agam dè an dreach ...

AT: - Ann an Replica Set faodaidh tu buill gun bhòt a ruith, ach tha 7 buill bhòtaidh aig a’ char as àirde. Faodaidh aon ionad dàta tionndadh gu furasta, agus faodaidh inneal eile tuiteam a-mach.

MT: - Tha seo mar-thà beagan nas fhaide na raon na h-aithisg. Is e ceist choitcheann a tha seo. Is dòcha gun urrainn dhomh innse dhut mu dheidhinn nas fhaide air adhart.

HighLoad ++, Mikhail Tyulenev (MongoDB): Seasmhachd adhbharach: bho theòiridh gu cleachdadh

Cuid de shanasan 🙂

Tapadh leibh airson fuireach còmhla rinn. An toil leat na h-artaigilean againn? A bheil thu airson susbaint nas inntinniche fhaicinn? Thoir taic dhuinn le bhith a’ cur òrdugh no a’ moladh do charaidean, sgòth VPS airson luchd-leasachaidh bho $4.99, analog sònraichte de luchd-frithealaidh ìre inntrigidh, a chaidh a chruthachadh leinn dhut: An fhìrinn gu lèir mu VPS (KVM) E5-2697 v3 (6 Cores) 10GB DDR4 480GB SSD 1Gbps bho $ 19 no ciamar a roinn thu frithealaiche? (ri fhaighinn le RAID1 agus RAID10, suas ri 24 cores agus suas ri 40GB DDR4).

Dell R730xd 2x nas saoire ann an ionad dàta Equinix Tier IV ann an Amsterdam? A-mhàin an seo 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TV bho $199 anns an Òlaind! Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - bho $99! Leugh mu dheidhinn Ciamar a thogail bun-structair Corp. clas le bhith a’ cleachdadh frithealaichean Dell R730xd E5-2650 v4 luach 9000 iùro airson sgillinn?

Source: www.habr.com

Cuir beachd ann