Bioyino - cruinniche meatrach sgaoilte, sgaoilte

Mar sin cruinnichidh tu slatan-tomhais. Mar a tha sinn. Bidh sinn cuideachd a 'tional slatan-tomhais. Gu dearbh, riatanach airson gnìomhachas. An-diugh bruidhnidh sinn mun chiad cheangal den t-siostam sgrùdaidh againn - frithealaiche cruinneachaidh a tha co-chosmhail ri statsd bitheag, carson a sgrìobh sinn e agus carson a thrèig sinn brubeck.

Bioyino - cruinniche meatrach sgaoilte, sgaoilte

Bho na h-artaigilean againn roimhe (1, 2) gheibh thu a-mach gun do chruinnich sinn comharran a’ cleachdadh gu beagan ùine Brubeck. Tha e sgrìobhte ann an C. Bho shealladh còd, tha e cho sìmplidh ri plug (tha seo cudromach nuair a tha thu airson cur ris) agus, nas cudromaiche, bidh e a’ làimhseachadh ar tomhasan de 2 millean meatrach gach diog (MPS) aig àirde gun duilgheadas sam bith. Tha na sgrìobhainnean ag innse taic do 4 millean MPS le rionnag. Tha seo a’ ciallachadh gum faigh thu am figear ainmichte ma shuidhicheas tu an lìonra gu ceart air Linux. (Chan eil fios againn cia mheud MPS a gheibh thu ma dh’ fhàgas tu an lìonra mar a tha). A dh'aindeoin na buannachdan sin, bha grunn ghearanan mòra againn mu dheidhinn brubeck.

Tagradh 1. Sguir Github, leasaiche a’ phròiseict, a bhith a’ toirt taic dha: a’ foillseachadh pìosan is rèiteachaidhean, a’ gabhail ris an fheadhainn againne agus (chan e a-mhàin sinne) PR. Anns na beagan mhìosan a dh ’fhalbh (an àiteigin bhon Ghearran-Màrt 2018), tha gnìomhachd air tòiseachadh a-rithist, ach roimhe sin bha faisg air 2 bhliadhna de shàmhchair iomlan. A bharrachd air an sin, tha am pròiseact ga leasachadh airson feumalachdan Gihub a-staigh, a dh'fhaodas a bhith na dhroch chnap-starra do thoirt a-steach feartan ùra.

Tagradh 2. Cruinneas àireamhachadh. Bidh Brubeck a’ cruinneachadh 65536 luachan gu h-iomlan airson cruinneachadh. Anns a 'chùis againn, airson cuid de mheatairean, rè na h-ùine cruinneachaidh (30 diogan), is dòcha gun ruig mòran a bharrachd luachan (1 aig an ìre as àirde). Mar thoradh air an samplachadh seo, tha coltas gu bheil na luachan as àirde agus as ìsle gun fheum. Mar eisimpleir, mar seo:

Bioyino - cruinniche meatrach sgaoilte, sgaoilte
Mar a bha

Bioyino - cruinniche meatrach sgaoilte, sgaoilte
Mar a bu chòir dha a bhith

Airson an aon adhbhar, mar as trice bidh suimean air an tomhas gu ceàrr. Cuir ris an seo bug le tar-shruth fleòdraidh 32-bit, a bhios mar as trice a’ cur an fhrithealaiche gu segfault nuair a gheibh thu meatrach a tha coltach ri neo-chiontach, agus bidh a h-uile càil a’ fàs glè mhath. Co-dhiù, chan eil am biast air a rèiteachadh.

Agus, mu dheireadh, Tagradh X. Aig àm sgrìobhaidh, tha sinn deiseil airson a thaisbeanadh dha na 14 buileachadh statsd obrach nas lugha no nas lugha a b’ urrainn dhuinn a lorg. Smaoinichidh sinn gu bheil cuid de bhun-structar singilte air fàs cho mòr is nach eil gabhail ri 4 millean MPS tuilleadh gu leòr. No eadhon mura h-eil e air fàs fhathast, ach tha na meatrach cho cudromach dhut mar-thà gum faod eadhon crìonadh goirid, 2-3 mionaid anns na clàran a bhith èiginneach mu thràth agus ag adhbhrachadh trom-inntinn do-sheachanta am measg mhanaidsearan. Leis gur e obair gun taing a th’ ann a bhith a’ làimhseachadh trom-inntinn, tha feum air fuasglaidhean teignigeach.

An toiseach, fulangas sgàinidhean, gus nach bi duilgheadas obann air an t-seirbheisiche ag adhbhrachadh apocalypse zombie inntinn-inntinn san oifis. San dàrna h-àite, a bhith comasach air gabhail ri còrr air 4 millean MPS, gun a bhith a’ cladhach gu domhainn a-steach do chruach lìonra Linux agus gu socair a’ fàs “ann am farsaingeachd” chun mheud a tha a dhìth.

Leis gu robh àite againn airson sgèileadh, chuir sinn romhainn tòiseachadh le fulangas sgàinidhean. “A-MHÀIN! Fulangas lochdan! Tha e sìmplidh, is urrainn dhuinn a dhèanamh," smaoinich sinn agus chuir sinn air bhog frithealaichean 2, a ’togail leth-bhreac de brubeck air gach fear. Gus seo a dhèanamh, bha againn ri trafaic le meatrach a chopaigeadh chun an dà fhrithealaiche agus eadhon sgrìobhadh airson seo goireas beag. Dh'fhuasgail sinn an duilgheadas fulangas sgàinidhean le seo, ach... chan eil e glè mhath. An toiseach bha coltas math air a h-uile dad: bidh gach brubeck a ’tional an dreach aige fhèin de chruinneachadh, a’ sgrìobhadh dàta gu Graphite aon uair gach 30 diog, a ’sgrìobhadh thairis air an t-seann eadar-ama (tha seo air a dhèanamh air taobh Graphite). Ma dh’ fhailicheas aon fhrithealaiche gu h-obann, bidh an-còmhnaidh dàrna fear againn le leth-bhreac fhèin den dàta cruinnichte. Ach seo an duilgheadas: ma dh’ fhailicheas am frithealaiche, nochdaidh “sàbh” air na grafaichean. Tha seo mar thoradh air nach eil na h-amannan 30-diog brubeck air an sioncronadh, agus aig àm tubaist chan eil aon dhiubh air a sgrìobhadh thairis. Nuair a thòisicheas an dàrna frithealaiche, bidh an aon rud a’ tachairt. Gu math fulangach, ach tha mi ag iarraidh nas fheàrr! Chan eil duilgheadas scalability air falbh cuideachd. Bidh a h-uile meatrach fhathast “ag itealaich” gu aon fhrithealaiche, agus mar sin tha sinn cuingealaichte ris an aon 2-4 millean MPS, a rèir ìre an lìonraidh.

Ma smaoinicheas tu beagan mun duilgheadas agus aig an aon àm a 'cladhach sneachda le sluasaid, is dòcha gun tig am beachd follaiseach a leanas gu inntinn: feumaidh tu statsd a dh' obraicheas ann am modh sgaoilte. Is e sin, fear a chuireas an gnìomh sioncronadh eadar nodan ann an ùine agus meatrach. “Gu dearbh, is dòcha gu bheil fuasgladh mar seo ann mu thràth," thuirt sinn agus chaidh sinn gu Google…. Agus cha do lorg iad dad. Às deidh dhut a dhol tro na sgrìobhainnean airson diofar statsd (https://github.com/etsy/statsd/wiki#server-implementations mar 11.12.2017 Dùbhlachd, XNUMX), cha do lorg sinn dad idir. A rèir choltais, chan eil luchd-leasachaidh no luchd-cleachdaidh nam fuasglaidhean sin air coinneachadh ri uimhir de mheatairean fhathast, air neo bhiodh iad gu cinnteach a’ tighinn suas le rudeigin.

Agus an uairsin chuimhnich sinn mun “dèideag” statsd - bioyino, a chaidh a sgrìobhadh aig an hackathon Just for Fun (chaidh ainm a ’phròiseict a chruthachadh leis an sgriobt ro thoiseach an hackathon) agus thuig sinn gu robh feum èiginneach againn air na statsd againn fhèin. Airson dè?

  • oir tha ro bheag de chlonan statsd air an t-saoghal,
  • leis gu bheil e comasach an fhulangas agus an scalability locht a tha thu ag iarraidh no faisg air a thoirt seachad (a’ toirt a-steach sioncronadh meatrach iomlan eadar frithealaichean agus fuasgladh fhaighinn air an duilgheadas a thaobh còmhstri a chuir),
  • leis gu bheil e comasach tomhasan a thomhas nas cinntiche na tha brubeck a’ dèanamh,
  • oir is urrainn dhut staitistig nas mionaidiche a chruinneachadh thu fhèin, rud nach tug brubeck dhuinn gu practaigeach,
  • oir bha cothrom agam an tagradh deuchainn-lann sgèile sgaoilte agam fhèin a phrògramadh, nach dèan gu tur ath-aithris air ailtireachd hyperfor eile den aon seòrsa ... uill, sin agad e.

Dè a sgrìobhadh air? Gu dearbh, ann an Rust. Carson?

  • oir bha fuasgladh prototype ann mu thràth,
  • oir bha ùghdar an artaigil mar-thà eòlach air Rust aig an àm sin agus bha e deònach rudeigin a sgrìobhadh ann airson riochdachadh le cothrom a chuir ann an stòr fosgailte,
  • leis nach eil cànanan le GC freagarrach dhuinn air sgàth nàdar na trafaic a gheibhear (cha mhòr ann an àm fìor) agus tha stadan GC gu ìre mhòr neo-iomchaidh,
  • oir feumaidh tu an coileanadh as àirde a tha coltach ri C
  • leis gu bheil Rust a’ toirt dhuinn concurrency gun eagal, agus nan tòisicheadh ​​​​sinn ga sgrìobhadh ann an C / C ++, bhiodh sinn air barrachd so-leòntachd a thoirt a-steach, tar-chuir bufair, suidheachadh cinnidh agus faclan eagallach eile na brubeck.

Bha argamaid ann cuideachd an aghaidh Rust. Cha robh eòlas sam bith aig a 'chompanaidh air pròiseactan a chruthachadh ann an Rust, agus a-nis chan eil sinn an dùil a chleachdadh anns a' phrìomh phròiseact. Mar sin, bha eagal mòr ann nach obraich dad a-mach, ach chuir sinn romhainn cothrom a ghabhail agus feuchainn.

Chaidh ùine seachad...

Mu dheireadh, às deidh grunn oidhirpean air fàiligeadh, bha a’ chiad dreach obrach deiseil. Dè a thachair? Seo mar a thachair.

Bioyino - cruinniche meatrach sgaoilte, sgaoilte

Bidh gach nód a’ faighinn a sheata de mheatairean fhèin agus gan cruinneachadh, agus chan eil e a’ cruinneachadh mheatairean airson an t-seòrsa sin far a bheil an làn sheata aca a dhìth airson a’ cho-chruinneachaidh dheireannaich. Tha na nodan ceangailte ri chèile le seòrsa de phròtacal glas sgaoilte, a leigeas leat an aon fhear a thaghadh (an seo dh’ èigh sinn) a tha airidh air meatrach a chuir chun Fhìor Mhòir. Tha an duilgheadas seo ga fhuasgladh an-dràsta le Consal, ach san àm ri teachd tha rùintean an ùghdair a’ leudachadh gu sealbhaich buileachadh Raft, far am bi am fear as airidh, gu dearbh, na nòta stiùiriche co-aontachd. A bharrachd air co-aontachd, bidh nodan gu math tric (aon uair san diog gu bunaiteach) a’ cur gu na nàbaidhean aca na pàirtean sin de mheatairean ro-chruinnichte a fhuair iad air cruinneachadh san diog sin. Tha e a ’tionndadh a-mach gu bheil sgèileadh agus fulangas sgàinidhean air an gleidheadh ​​​​- tha seata iomlan de mheatairean fhathast aig gach nód, ach tha na meatrach air an cur mar-thà cruinnichte, tro TCP agus air an còdachadh gu protocol dà-chànanach, agus mar sin tha cosgaisean dùblachaidh air an lughdachadh gu mòr an coimeas ri UDP. A dh 'aindeoin an àireamh meadhanach mòr de mheatairean a tha a' tighinn a-steach, feumaidh cruinneachadh glè bheag de chuimhne agus eadhon nas lugha de CPU. Airson ar mertics fìor dhlùthadh, chan eil an seo ach beagan deichean de mhegabytes de dhàta. Mar bhuannachd a bharrachd, chan fhaigh sinn ath-sgrìobhadh dàta neo-riatanach ann an Graphite, mar a bha fìor le burbeck.

Tha pacaidean UDP le meatrach mì-chothromach eadar nodan air uidheamachd lìonra tro Round Robin sìmplidh. Gu dearbh, chan eil bathar-cruaidh an lìonraidh a’ parsadh susbaint nam pacaidean agus mar sin faodaidh iad tòrr a bharrachd air pacaidean 4M gach diog a tharraing, gun luaidh air meatrach air nach eil fios aige idir. Ma bheir sinn aire nach tig na meatrach aon aig aon àm anns gach pacaid, chan eil sinn a’ faicinn duilgheadasan coileanaidh san àite seo. Ma thuiteas frithealaiche, lorgaidh an inneal lìonra gu sgiobalta (taobh a-staigh 1-2 diogan) an fhìrinn seo agus bheir e air falbh am frithealaiche a chaidh a bhualadh bho chuairteachadh. Mar thoradh air an seo, faodar nodan fulangach (ie, neo-stiùiriche) a thionndadh air agus dheth gu practaigeach gun a bhith mothachail air tarraing sìos air na clàran. Tha an ìre as àirde a chailleas sinn mar phàirt de na meatrach a thàinig a-steach aig an diog mu dheireadh. Cruthaichidh call / dùnadh / atharrachadh obann stiùiriche fhathast neo-riaghailteachd bheag (tha an eadar-ama 30 diog fhathast a-mach à sioncranachadh), ach ma tha conaltradh eadar nodan, faodar na duilgheadasan sin a lughdachadh, mar eisimpleir, le bhith a’ cur a-mach pacaidean sioncronaidh .

Beagan mu structar a-staigh. Tha an tagradh, gu dearbh, ioma-snàithleach, ach tha an ailtireachd snàithlean eadar-dhealaichte bhon fheadhainn a chleachdar ann am brubeck. Tha na snàithleanan ann am brubeck mar an ceudna - tha uallach air gach fear dhiubh airson cruinneachadh fiosrachaidh agus cruinneachadh. Ann am bioyino, tha luchd-obrach air an roinn ann an dà bhuidheann: an fheadhainn le uallach airson an lìonra agus an fheadhainn le uallach airson cruinneachadh. Leigidh an roinn seo leat an tagradh a riaghladh ann an dòigh nas sùbailte a rèir an seòrsa meatrach: far a bheil feum air cruinneachadh dian, faodaidh tu luchd-cruinneachaidh a chuir ris, far a bheil tòrr trafaic lìonraidh, faodaidh tu an àireamh de shruthan lìonra a chuir ris. Aig an àm seo, air na frithealaichean againn bidh sinn ag obair ann an lìonra 8 agus sruthan cruinneachaidh 4.

Tha am pàirt cunntaidh (an urra ri cruinneachadh) gu math dòrainneach. Tha bufairean air an lìonadh le sruthan lìonra air an cuairteachadh am measg sruthan cunntaidh, far am bi iad air am parsadh agus air an cruinneachadh às deidh sin. Ma thèid iarraidh, thèid metrics a thoirt seachad airson a chuir gu nodan eile. Tha seo uile, a’ gabhail a-steach a bhith a’ cur dàta eadar nodan agus ag obair leis a’ Chonsal, air a dhèanamh gu neo-chinnteach, a’ ruith air an fhrèam tokio.

Chaidh mòran a bharrachd dhuilgheadasan adhbhrachadh leis a’ phàirt lìonra le uallach airson meatrach fhaighinn. B’ e am prìomh amas airson sruthan lìonra a sgaradh gu buidhnean fa-leth am miann an ùine a bhios sruth a’ caitheamh a lughdachadh chan eil gus dàta bhon t-socaid a leughadh. Dh’ fhalbh roghainnean a’ cleachdadh UDP asyncronach agus recvmsg cunbhalach gu sgiobalta: bidh a’ chiad fhear ag ithe cus CPU àite-cleachdaidh airson giullachd tachartais, feumaidh an dàrna fear cus suidsichean co-theacsa. Mar sin tha e a-nis air a chleachdadh recvmmsg le bufairean mòra (agus chan eil bufairean, oifigearan uasal, dad dhut!). Tha taic airson UDP cunbhalach glèidhte airson cùisean aotrom far nach eil feum air recvmmsg. Ann am modh ioma-theachdaireachd, tha e comasach am prìomh rud a choileanadh: a 'mhòr-chuid den ùine, bidh an t-snàthainn lìonra a' crathadh ciudha an OS - a 'leughadh dàta bhon t-socaid agus ga ghluasad gu bufair an luchd-cleachdaidh, dìreach uaireannan ag atharrachadh gu bhith a' toirt am bufair lìonta gu luchd-cruinneachaidh. Cha mhòr nach eil an ciudha anns an t-socaid a’ cruinneachadh, cha mhòr nach eil an àireamh de phasganan air tuiteam a’ fàs.

thuirt

Anns na roghainnean bunaiteach, tha meud bufair air a shuidheachadh gu bhith gu math mòr. Ma cho-dhùnas tu gu h-obann feuchainn air an fhrithealaiche thu fhèin, is dòcha gun tig thu tarsainn air an fhìrinn às deidh dhut àireamh bheag de mheatairean a chuir a-steach, nach ruig iad Graphite, a ’fuireach ann am bufair sruth an lìonraidh. Gus obrachadh le àireamh bheag de mheatrics, feumaidh tu bufsize agus meud ciudha gnìomh a shuidheachadh gu luachan nas lugha anns an rèiteachadh.

Mu dheireadh, cuid de chlàran airson leannanan cairt.

Staitistig air an àireamh de mheatairean a tha a’ tighinn a-steach airson gach frithealaiche: còrr air 2 mhillean MPS.

Bioyino - cruinniche meatrach sgaoilte, sgaoilte

A’ cur às do aon de na nodan agus ag ath-riarachadh mheatairean a tha a’ tighinn a-steach.

Bioyino - cruinniche meatrach sgaoilte, sgaoilte

Staitistig air meatrach a-mach: chan eil ach aon nód an-còmhnaidh a ’cur - ceannard an ionnsaigh.

Bioyino - cruinniche meatrach sgaoilte, sgaoilte

Staitistigean mu obrachadh gach nód, a 'gabhail a-steach mearachdan ann an diofar mhodalan siostam.

Bioyino - cruinniche meatrach sgaoilte, sgaoilte

Mion-fhiosrachadh air meatrach a tha a’ tighinn a-steach (tha ainmean meatrach falaichte).

Bioyino - cruinniche meatrach sgaoilte, sgaoilte

Dè tha sinn an dùil a dhèanamh le seo uile an ath rud? Gu dearbh, sgrìobh còd, damn ...! Bhathar an dùil an toiseach gum biodh am pròiseact fosgailte agus mairidh e mar sin fad a bheatha. Tha na planaichean sa bhad againn a’ toirt a-steach atharrachadh chun dreach againn fhèin de Raft, ag atharrachadh a’ phròtacal co-aoisean gu fear nas so-ghiùlain, a’ toirt a-steach staitistig a-staigh a bharrachd, seòrsachan ùra de mheatrics, rèiteachadh bug agus leasachaidhean eile.

Gu dearbh, tha fàilte air a h-uile duine cuideachadh le leasachadh a 'phròiseict: cruthaich PR, Cùisean, ma ghabhas e dèanamh, freagraidh sinn, leasaichidh sinn, msaa.

Le sin air a ràdh, is e sin a h-uile duine, ceannaich na h-ailbhean againn!



Source: www.habr.com

Cuir beachd ann