Thug Facebook a-steach siostam riaghlaidh còd stòr ùr Sapling

Tha Facebook (toirmisgte san Ruis) air siostam riaghlaidh còd stòr Sapling fhoillseachadh a chaidh a chleachdadh ann an leasachadh phròiseactan taobh a-staigh na companaidh. Tha an siostam ag amas air eadar-aghaidh tionndaidh eòlach a thoirt seachad a dh’ fhaodas sgèile gu stòran fìor mhòr a ’spangachadh deichean de mhilleanan de fhaidhlichean, gheallaidhean agus gheugan. Tha an còd teachdaiche sgrìobhte ann am Python agus Rust, agus tha e fosgailte fo chead GPLv2.

Air leth, chaidh pàirt frithealaiche a leasachadh airson obair iomallach èifeachdach le stòran-stòraidh agus siostam faidhle brìgheil airson a bhith ag obair le sliseag ionadail de phàirt den stòr mar le làn stòr (tha an leasaiche a’ faicinn an stòr gu lèir, ach chan eil ach an dàta a chaidh iarraidh air a chopaigeadh don t-siostam ionadail, a gheibhear thuige). Chan eil an còd airson na co-phàirtean sin a chaidh a chleachdadh ann am bun-structar Facebook fosgailte fhathast, ach gheall a’ chompanaidh fhoillseachadh san àm ri teachd. Ach, gheibhear prototypes den t-seirbheisiche Mononoke (ann an Rust) agus VFS EdenFS (ann an C ++) mu thràth ann an stòr Sapling. Tha na co-phàirtean sin roghainneil agus tha an neach-dèiligidh Sapling gu leòr airson obrachadh, a bheir taic do bhith a’ clonadh stòran Git, ag eadar-obrachadh le frithealaichean stèidhichte air Git LFS, agus ag obair le luchd-aoigheachd git leithid GitHub.

Is e prìomh bheachd an t-siostaim, nuair a bhios tu ag eadar-obrachadh le pàirt frithealaiche sònraichte a bheir seachad stòradh an stòrais, gu bheil a h-uile gnìomhachd air a sgèile a rèir an àireamh de fhaidhlichean a chaidh a chleachdadh sa chòd a tha an leasaiche ag obair air, agus nach eil an urra ris. meud iomlan an stòrais gu lèir. Mar eisimpleir, chan fhaod leasaiche ach cuibhreann bheag de chòd a chleachdadh bho stòr glè mhòr, agus cha tèid ach a’ chuibhreann bheag seo, seach an stòr gu lèir, a ghluasad chun t-siostam aige. Tha an eòlaire obrach air a lìonadh gu dinamach, leis gu bheilear a’ faighinn cothrom air faidhlichean bhon stòr, a leigeas leat, air an aon làimh, obair a dhèanamh nas luaithe leis a’ phàirt agad den chòd, ach air an làimh eile, a’ leantainn gu slaodachadh nuair a ruigeas tu an toiseach. faidhlichean ùra agus feumach air ruigsinneachd cunbhalach air an lìonra (air a sholarachadh air leth agus modh ullachaidh gealltanasan far-loidhne).

A bharrachd air luchdachadh dàta atharrachail, bidh Sapling cuideachd a’ cur an gnìomh optimizations a tha ag amas air luchdachadh fiosrachaidh a lughdachadh le eachdraidh atharrachaidhean (mar eisimpleir, tha eachdraidh atharrachaidhean ann an 3/4 den dàta ann an stòr leis an kernel Linux). Gus obrachadh gu h-èifeachdach leis an eachdraidh atharrachaidh, tha an dàta co-cheangailte ris air a stòradh ann an sealladh sgaraichte, a leigeas leat pàirtean fa leth den ghraf gealltanas a luchdachadh sìos bhon fhrithealaiche. Faodaidh an neach-dèiligidh fiosrachadh iarraidh air an t-seirbheisiche mun dàimh eadar grunn gheallaidhean agus dìreach am pàirt riatanach den ghraf a luchdachadh sìos.

Chaidh am pròiseact a leasachadh thar nan 10 bliadhna a dh’ fhalbh agus chaidh a chruthachadh gus fuasgladh fhaighinn air duilgheadasan nuair a chuirear air dòigh ruigsinneachd gu stòran monolithic glè mhòr le aon phrìomh mheur, anns an deach cleachdadh gnìomhachd “rebase” a chleachdadh an àite “aonadh”. Aig an àm sin, cha robh fuasglaidhean fosgailte ann airson a bhith ag obair le leithid de stòran, agus cho-dhùin innleadairean Facebook siostam smachd dreach ùr a chruthachadh a choinnicheas ri feumalachdan na companaidh, an àite pròiseactan a roinn ann an stòran beaga, a bheireadh gu riaghladh eisimeileachd nas iom-fhillte. (aig aon àm, gus fuasgladh fhaighinn air duilgheadas coltach ris, chruthaich Microsoft còmhdach GVFS). An toiseach, chleachd Facebook an siostam Mercurial agus chaidh am pròiseact Sapling a leasachadh an toiseach mar chur-ris ri Mercurial. Thar ùine, dh’ atharraich an siostam gu bhith na phròiseact neo-eisimeileach leis a’ phròtacal aige fhèin, an cruth stòraidh agus na h-algorithms, a chaidh a leudachadh cuideachd leis a’ chomas eadar-obrachadh le tasgaidhean Git.

Airson obair, thathas a’ moladh goireas loidhne-àithne “sl”, a chuireas an gnìomh bun-bheachdan àbhaisteach, sruthan-obrach, agus eadar-aghaidh air a bheil luchd-leasachaidh eòlach air Git agus Mercurial. Tha am briathrachas agus na h-òrdughan ann an Sapling beagan eadar-dhealaichte bho Git agus nas fhaisge air Mercurial. Mar eisimpleir, thathas a’ cleachdadh “comharran leabhraichean” an àite gheugan (chan eil taic ri meuran ainmichte), gu bunaiteach, nuair a bhios tu a’ coileanadh clone / slaodadh, chan eil an stòr gu lèir air a luchdachadh, ach dìreach am prìomh mheur, chan eil ro-tagadh ann de gheallaidhean ( àite stèidse), an àite “git fetch” tha an àithne “sl” air a chleachdadh pull”, an àite “git pull” - “sl pull --rebase”, an àite “git checkout COMMIT” - “sl goto COMMIT”, an àite sin à "git reflog" - "sl journal", gus an t-atharrachadh a thilleadh an àite "git checkout - FILE" tha "sl revert FILE" air a shònrachadh, agus "." air a chleachdadh gus am meur "HEAD" aithneachadh. Ach san fharsaingeachd, tha na bun-bheachdan coitcheann mu mheuran agus obair clone / tarraing / putadh / gealltanas / ath-shuidheachadh air an gleidheadh.

Am measg nam feartan a bharrachd den inneal Sapling, tha taic airson “log smart” (smartlog) a’ seasamh a-mach, a leigeas leat measadh lèirsinneach a dhèanamh air staid an stòrais agad, cuideam a chuir air an fhiosrachadh as cudromaiche agus mion-fhiosrachadh a shìoladh a-mach. Mar eisimpleir, nuair a ruitheas tu an sl utility gun argamaidean, chan eil ach na h-atharrachaidhean ionadail agad fhèin air an taisbeanadh (tha feadhainn cèin air an tuiteam), tha inbhe meuran taobh a-muigh, faidhlichean atharraichte, agus dreachan ùra de ghealltanas air an sealltainn. A bharrachd air an sin, tha eadar-aghaidh lìn eadar-ghnìomhach air a thabhann, a leigeas leat seòladh gu sgiobalta tron ​​​​log smart, craobh atharrachadh agus geallaidhean.

Thug Facebook a-steach siostam riaghlaidh còd stòr ùr Sapling

Is e leasachadh sònraichte eile ann an Sapling a bhith a’ sìmpleachadh a’ phròiseas airson a bhith a’ ceartachadh agus a’ parsadh mhearachdan, agus a’ tilleadh gu staid roimhe. Mar eisimpleir, thathas a’ tabhann na h-òrdughan “sl undo”, “sl redo”, “sl uncommit” agus “sl unamend” gus mòran obrachaidhean a thoirt air ais, òrdughan “sl hide” agus “sl unhide” gus geallaidhean fhalach airson ùine, agus seòladh eadar-ghnìomhach tro seann stàitean agus till air ais chun phuing ainmichte an àithne “sl undo -i command”. Bidh sapling cuideachd a’ toirt taic don bhun-bheachd de chruach gealltanas, a leigeas leat lèirmheas ceum air cheum a chuir air dòigh le bhith a’ briseadh sìos gnìomhachd iom-fhillte gu seata de dh’ atharrachaidhean mean air mhean nas lugha agus nas so-thuigsinn (bho fhrèam bunaiteach gu feart crìochnaichte).

Chaidh grunn thuilleadan ullachadh airson Sapling, a’ gabhail a-steach an eadar-aghaidh ReviewStack airson ath-sgrùdadh a dhèanamh air atharrachaidhean (còd fo GPLv2), a leigeas leat iarrtasan tarraing air GitHub a phròiseasadh agus sealladh stac de dh’ atharrachaidhean a chleachdadh. A bharrachd air an sin, chaidh cur-ris fhoillseachadh airson amalachadh le luchd-deasachaidh VSCode agus TextMate, a bharrachd air buileachadh eadar-aghaidh agus frithealaiche ISL (Interactive SmartLog).

Source: fosgailtenet.ru

Cuir beachd ann