Bioyino - comhbhailitheoir méadrach dáilte, inscálaithe

Mar sin bailíonn tú méadracht. Mar atá muid. Bailímid méadracht freisin. Ar ndóigh, is gá le haghaidh gnó. Sa lá atá inniu beimid ag caint faoin gcéad nasc dár gcóras monatóireachta - freastalaí comhiomlánaithe atá comhoiriúnach le statsd bithín, cén fáth ar scríobh muid é agus cén fáth ar thréig muid brubeck.

Bioyino - comhbhailitheoir méadrach dáilte, inscálaithe

Ó na hailt roimhe seo (1, 2) is féidir leat a fháil amach go dtí am éigin bhailigh muid marcanna ag baint úsáide as Brubeck. Tá sé scríofa i C. Ó thaobh an chóid de, tá sé chomh simplí le breiseán (tá sé seo tábhachtach nuair is mian leat rannchuidiú) agus, níos tábhachtaí fós, láimhseálann sé ár n-imleabhar de 2 mhilliún méadrach in aghaidh an tsoicind (MPS) ag buaic. gan fadhbanna ar bith. Sonraíonn an doiciméadú tacaíocht do 4 mhilliún MPS le réiltín. Ciallaíonn sé seo go bhfaighidh tú an figiúr luaite má chumraíonn tú an líonra i gceart ar Linux. (Níl a fhios againn cé mhéad MPS is féidir leat a fháil má fhágann tú an líonra mar atá). In ainneoin na mbuntáistí seo, bhí roinnt gearán tromchúiseach againn faoi bhrabús.

Éileamh 1 . Stop Github, forbróir an tionscadail, ag tacú leis: ag foilsiú paistí agus ceartúcháin, ag glacadh lenár gceann agus (ní hamháin linne) PR. Sna míonna beaga anuas (áit éigin ó Feabhra-Márta 2018), tá gníomhaíocht arís, ach roimhe sin bhí beagnach 2 bhliain de shocair iomlán. Ina theannta sin, tá an tionscadal á fhorbairt do riachtanais inmheánacha Gihub, a d'fhéadfadh a bheith ina bhac tromchúiseach ar thabhairt isteach gnéithe nua.

Éileamh 2 . Cruinneas na n-áireamh. Bailíonn Brubeck 65536 luach san iomlán le haghaidh comhiomlánaithe. Is é ár gcás, i gcás roinnt méadrachta, le linn na tréimhse comhiomlánaithe (30 soicind), féadfaidh luachanna i bhfad níos mó teacht (1 ag an mbuaic). Mar thoradh ar an sampláil seo, is cosúil go bhfuil na huasluachanna agus na híosluachanna gan úsáid. Mar shampla, mar seo:

Bioyino - comhbhailitheoir méadrach dáilte, inscálaithe
Mar a bhí

Bioyino - comhbhailitheoir méadrach dáilte, inscálaithe
Conas ba chóir a bheith

Ar an gcúis chéanna, déantar méideanna a ríomh go mícheart de ghnáth. Cuir anseo fabht le ró-shreabhadh snámhphointe 32-giotán, a chuireann an freastalaí chuig segfault de ghnáth nuair a fhaigheann sé méadrach atá cosúil go neamhchiontach, agus éiríonn gach rud go hiontach. An fabht, dála an scéil, nach bhfuil socraithe.

Agus, ar deireadh, Éileamh X. Agus é seo á scríobh, táimid réidh é a chur i láthair do na 14 fheidhmiú statsd oibre níos mó nó níos lú a raibh muid in ann iad a aimsiú. Samhlóimis go bhfuil fás chomh mór tagtha ar roinnt bonneagar aonair nach leor glacadh le 4 mhilliún MPS a thuilleadh. Nó fiú mura bhfuil sé tar éis fás go fóill, ach tá an mhéadracht chomh tábhachtach duit cheana féin go bhféadfadh fiú laghduithe gearra 2-3 nóiméad sna cairteacha a bheith ríthábhachtach cheana féin agus go gcruthóidh siad babhtaí dúlagar dosháraithe i measc bainisteoirí. Ós rud é gur tasc gan bhuíochas é an dúlagar a chóireáil, tá gá le réitigh theicniúla.

Ar an gcéad dul síos, lamháltas lochtanna, ionas nach mbeidh fadhb tobann ar an bhfreastalaí ina chúis le apocalypse zombie síciatrach san oifig. Ar an dara dul síos, scálú le bheith in ann glacadh le níos mó ná 4 mhilliún MPS, gan tochailt go domhain isteach i gcruach líonra Linux agus ag fás go socair "ar leithead" chuig an méid riachtanach.

Ós rud é go raibh spás againn le haghaidh scálaithe, shocraigh muid tosú le lamháltas lochtanna. "FAOI! Caoinfhulaingt locht! Tá sé simplí, is féidir linn é a dhéanamh,” cheapamar agus sheolamar 2 fhreastalaí, ag ardú cóip de brubeck ar gach ceann acu. Chun seo a dhéanamh, bhí orainn trácht le méadracht a chóipeáil chuig an dá fhreastalaí agus fiú scríobh chuige seo fóntais beag. Réitíomar an fhadhb lamháltais locht leis seo, ach... ní raibh sé go maith. Ar dtús bhí an chuma ar gach rud go hiontach: bailíonn gach brubeck a leagan féin den chomhiomlánú, scríobhann sé sonraí chuig Graphite uair amháin gach 30 soicind, ag scríobh an t-eatramh d'aois (déantar é seo ar an taobh Graphite). Má theipeann ar fhreastalaí amháin go tobann, beidh an dara ceann againn i gcónaí agus a chóip féin de na sonraí comhiomlánaithe. Ach seo an fhadhb: má theipeann ar an bhfreastalaí, feictear “chonaic” ar na graif. Tá sé seo mar gheall ar an bhfíric nach ndéantar eatraimh 30 soicind brubeck a shioncrónú, agus i láthair na huaire timpiste níl ceann acu ró-scríofa. Nuair a thosaíonn an dara freastalaí, tarlaíonn an rud céanna. Infhulaingthe go leor, ach ba mhaith liom níos fearr! Níor imigh fadhb na hinscálaithe freisin. Tá gach méadracht fós ag “eitilt” chuig freastalaí amháin, agus mar sin táimid teoranta don 2-4 milliún MPS céanna, ag brath ar leibhéal an líonra.

Má smaoiníonn tú beagán ar an bhfadhb agus ag an am céanna sneachta a thochailt le sluasaid, b'fhéidir go dtiocfaidh an smaoineamh soiléir seo a leanas chun cuimhne: tá statsd uait a d'fhéadfadh oibriú i mód dáilte. Is é sin, ceann a chuireann sioncrónú idir nóid in am agus méadracht i bhfeidhm. “Ar ndóigh, is dócha go bhfuil a leithéid de réiteach ann cheana féin,” a dúirt muid agus chuaigh muid chuig Google…. Agus fuair siad rud ar bith. Tar éis dul tríd an doiciméadú le haghaidh stats éagsúla (https://github.com/etsy/statsd/wiki#server-implementations amhail an 11.12.2017 Nollaig, XNUMX), ní bhfuaireamar aon rud. De réir dealraimh, níor tháinig forbróirí ná úsáideoirí na réitigh seo ar an oiread sin méadrachta go fóill, nó is cinnte go dtiocfadh siad suas le rud éigin.

Agus ansin chuimhníomar ar an “bréagán” statsd - bioyino, a scríobhadh ag an hackathon Just for Fun (ghin an script ainm an tionscadail roimh thús an haicathóin) agus thuig muid go raibh ár statsd féin ag teastáil go práinneach. I gcomhair Cad?

  • mar níl an iomarca clón statsd ar domhan,
  • toisc go bhfuil sé in ann an lamháltas agus an scalability locht atá ag teastáil a sholáthar nó gar dó (lena n-áirítear méadracht chomhiomlánaithe idir freastalaithe a shioncronú agus an fhadhb a bhaineann le coinbhleachtaí seolta a réiteach),
  • toisc gur féidir méadracht a ríomh níos cruinne ná mar a dhéanann brubeck,
  • toisc gur féidir leat staitisticí níos mionsonraithe a bhailiú tú féin, rud nár chuir brubeck ar fáil dúinn go praiticiúil,
  • mar bhí deis agam m’iarratas saotharlainne scála dáilte hyperperformance féin a ríomhchlárú, rud nach ndéanfaidh ailtireacht hyperfor eile dá leithéid arís go hiomlán... bhuel, sin é.

Cad atá le scríobh air? Ar ndóigh, i Rust. Cén fáth?

  • toisc go raibh réiteach fréamhshamhail ann cheana féin,
  • toisc go raibh aithne ag údar an ailt ar Rust ag an am sin cheana féin agus go raibh fonn air rud éigin a scríobh ann le haghaidh táirgeadh agus an deis é a chur i bhfoinse oscailte,
  • toisc nach bhfuil teangacha le GC oiriúnach dúinn mar gheall ar nádúr na tráchta a fhaightear (beagnach fíor-ama) agus tá sosanna GC beagnach do-ghlactha,
  • toisc go dteastaíonn uasfheidhmíocht uait atá inchomparáide le C
  • toisc go dtugann Rust comhairgeadra gan eagla dúinn, agus dá dtosóimid á scríobh i C/C++, bheadh ​​níos mó leochaileachtaí fós againn, róshreabhadh maolánach, coinníollacha cine agus focail scanrúla eile ná brubeck.

Bhí argóint i gcoinne Rust freisin. Ní raibh aon taithí ag an gcuideachta tionscadail a chruthú i Rust, agus anois níl sé beartaithe againn é a úsáid sa phríomhthionscadal. Dá bhrí sin, bhí eagla tromchúiseach ann nach n-oibreodh aon rud amach, ach shocraigh muid seans a ghlacadh agus iarracht a dhéanamh.

Chuaigh an t-am thart...

Ar deireadh, tar éis roinnt iarrachtaí teipthe, bhí an chéad leagan oibre réidh. Cad a tharla? Seo mar a tharla.

Bioyino - comhbhailitheoir méadrach dáilte, inscálaithe

Faigheann gach nód a shraith méadrachta féin agus carnann siad iad, agus ní chomhiomlánaíonn sé méadracht do na cineálacha sin ina bhfuil a sraith iomlán ag teastáil don chomhiomlánú deiridh. Tá na nóid ceangailte lena chéile trí phrótacal glasála dáilte de shaghas éigin, rud a ligeann duit an t-aon cheann amháin a roghnú (anseo adeir muid) ar fiú méadracht a sheoladh chuig an gCeann Mór. Tá an fhadhb seo á réiteach faoi láthair ag Consal, ach sa todhchaí síneann uaillmhianta an údair chuig féin chur i bhfeidhm Rafta, áit a mbeidh an ceann is fiúntach, ar ndóigh, ina nód ceannaire comhthoil. Chomh maith le comhdhearcadh, is minic a chuireann nóid (uair sa soicind de réir réamhshocraithe) na codanna sin de mhéadracht réamh-chomhiomlánaithe ar éirigh leo a bhailiú sa soicind sin chuig a gcomharsana. Tharlaíonn sé go gcaomhnaítear scálú agus lamháltas locht - tá sraith iomlán méadrachta fós ag gach nód, ach seoltar an mhéadracht comhiomlánaithe cheana féin, trí TCP agus ionchódaithe isteach i bprótacal dénártha, agus mar sin laghdaítear costais dúblála go suntasach i gcomparáid le UDP. In ainneoin an líon measartha mór méadracht ag teacht isteach, teastaíonn beagán cuimhne chun carnadh agus fiú níos lú LAP. Maidir lenár dtréithe an-comhbhrúite, níl anseo ach cúpla deich meigibheart de shonraí. Mar bhónas breise, ní fhaighimid aon athscríobh sonraí gan ghá i Graphite, mar a bhí i gcás burbeck.

Tá paicéid UDP le méadracht neamhchothromaithe idir nóid ar threalamh líonra trí Bhabhta simplí Robin. Ar ndóigh, ní dhéanann na crua-earraí líonra inneachar na bpacáistí a pharsáil agus mar sin is féidir leo i bhfad níos mó ná paicéid 4M a tharraingt in aghaidh an tsoicind, gan trácht ar mhéadracht nach bhfuil aon rud ar eolas aige faoi. Má chuirimid san áireamh nach dtagann an mhéadracht ceann ag an am i ngach paicéad, ansin ní fheicimid aon fhadhbanna feidhmíochta san áit seo. Má thuairteanna freastalaí, aimsíonn an gléas líonra go tapa (laistigh de 1-2 soicind) an fhíric seo agus baintear an freastalaí tuairteála as rothlú. Mar thoradh air seo, is féidir nóid éighníomhacha (ie, neamh-cheannaire) a chasadh air agus as go praiticiúil gan tarraingt anuas ar na cairteacha a thabhairt faoi deara. Is cuid den mhéadracht a tháinig isteach ag an soicind deireanach é an t-uasmhéid a chaillimid. Cruthóidh caillteanas tobann/múchadh/lasc ceannaire mion-aimhrialú fós (tá an t-eatramh 30 soicind fós as sioncronú), ach má tá cumarsáid idir nóid, is féidir na fadhbanna seo a laghdú, mar shampla, trí phacáistí sioncrónaithe a sheoladh amach .

Beagán faoin struchtúr inmheánach. Tá an t-iarratas, ar ndóigh, ilshnáithe, ach tá an ailtireacht snáithithe difriúil ón gceann a úsáidtear i brubeck. Tá na snáitheanna i brubeck mar an gcéanna - tá gach ceann acu freagrach as bailiú faisnéise agus comhiomlánú araon. I bioyino, roinntear oibrithe ina dhá ghrúpa: iad siúd atá freagrach as an líonra agus iad siúd atá freagrach as comhiomlánú. Ligeann an rannán seo duit an t-iarratas a bhainistiú ar bhealach níos solúbtha ag brath ar an gcineál méadrachta: i gcás ina bhfuil gá le comhiomlánú dian, is féidir leat comhbhailitheoirí a chur leis, i gcás ina bhfuil go leor tráchta líonra, is féidir leat líon na sreafaí líonra a chur leis. I láthair na huaire, ar ár bhfreastalaithe oibrímid in 8 sreabhadh líonra agus 4 shreabhadh comhiomlánaithe.

Tá an chuid chomhairimh (atá freagrach as comhiomlánú) leadránach go leor. Déantar maoláin arna líonadh ag sreafaí líonra a dháileadh i measc sreafaí comhairimh, áit a ndéantar iad a pharsáil agus a chomhiomlánú ina dhiaidh sin. Arna iarraidh sin, tugtar méadracht le cur chuig nóid eile. Déantar é seo go léir, lena n-áirítear sonraí a sheoladh idir nóid agus oibriú le Consal, go neamhshioncronach, ag rith ar an gcreat tokio.

Bhí i bhfad níos mó fadhbanna le linn na forbartha ba chúis leis an gcuid líonra atá freagrach as méadracht a fháil. Ba é an príomhsprioc a bhain le sreafaí líonra a scaradh isteach in eintitis ar leith ná an fonn chun an t-am a chaitheann sreabhadh a laghdú aon chun sonraí ón soicéad a léamh. D'imigh roghanna ag baint úsáide as UDP asincrónach agus recvmsg rialta go tapa: ídíonn an chéad cheann an iomarca LAP spáis úsáideora le haghaidh próiseála imeachtaí, éilíonn an dara ceann an iomarca lasca comhthéacs. Dá bhrí sin úsáidtear anois é recvmmsg le maoláin mhóra (agus maoláin, oifigigh uaisle, is rud ar bith duit!). Tá tacaíocht le haghaidh CDU rialta forchoimeádta do chásanna éadroma nuair nach bhfuil gá le recvmmsg. I mód multimessage, is féidir an rud is mó a bhaint amach: an chuid is mó den am, racaíonn an snáithe líonra an scuaine OS - léann sonraí ón soicéad agus aistríonn sé chuig an maolán spás úsáideora, gan athrú ach ó am go ham chun an maolán líonta a thabhairt do comhbhailitheoirí. Ní charnadh an scuaine sa soicéad go praiticiúil, go praiticiúil ní fhásann líon na bpacáistí tite.

Tabhair faoi deara

Sna socruithe réamhshocraithe, tá an méid maoláin socraithe a bheith sách mór. Má shocraíonn tú go tobann triail a bhaint as an bhfreastalaí tú féin, b'fhéidir go dtiocfaidh tú ar an bhfíric, tar éis líon beag méadrachta a sheoladh, nach sroichfidh siad Graphite, atá fágtha sa mhaolán sruth líonra. Chun oibriú le líon beag méadrachta, ní mór duit bufsize agus tasc-scuaine-mhéid a shocrú go luachanna níos lú sa chumraíocht.

Ar deireadh, roinnt cairteacha do lovers cairte.

Staitisticí ar líon na méadrachta ag teacht isteach do gach freastalaí: níos mó ná 2 mhilliún MPS.

Bioyino - comhbhailitheoir méadrach dáilte, inscálaithe

Ceann de na nóid a dhíchumasú agus méadracht ag teacht isteach a athdháileadh.

Bioyino - comhbhailitheoir méadrach dáilte, inscálaithe

Staitisticí ar mhéadracht atá ag dul as oifig: ní sheolann ach nód amháin i gcónaí - an boss ruathar.

Bioyino - comhbhailitheoir méadrach dáilte, inscálaithe

Staitisticí ar oibriú gach nód, ag cur san áireamh earráidí i modúil chórais éagsúla.

Bioyino - comhbhailitheoir méadrach dáilte, inscálaithe

Mionsonrú ar mhéadracht atá ag teacht isteach (tá ainmneacha méadracha i bhfolach).

Bioyino - comhbhailitheoir méadrach dáilte, inscálaithe

Cad atá beartaithe againn a dhéanamh leis seo ar fad? Ar ndóigh, scríobh cód, diabhal...! Beartaíodh ar dtús go mbeadh an tionscadal foinse oscailte agus fanfaidh sé mar sin ar feadh a shaoil. I measc na bpleananna atá againn láithreach tá athrú chuig ár leagan féin de Raft, an prótacal piaraí a athrú go ceann níos iniompartha, staitisticí inmheánacha breise a thabhairt isteach, cineálacha nua méadrachta, réitigh fabhtanna agus feabhsuithe eile.

Ar ndóigh, tá fáilte roimh chách cabhrú le forbairt an tionscadail: PR a chruthú, Ceisteanna, más féidir tabharfaimid freagra, feabhsóimid, etc.

Agus é sin ráite, sin iad na daoine go léir, ceannaigh ár n-eilifintí!



Foinse: will.com

Add a comment