Bioyino - ekesa, mkpokọta metrik

Yabụ ị na-anakọta metrik. Dị ka anyị bụ. Anyị na-anakọtakwa metrik. N'ezie, ọ dị mkpa maka azụmahịa. Taa, anyị ga-ekwu maka njikọ mbụ nke sistemụ nleba anya anyị - ihe nkesa mkpokọta statsd dakọtara. bioyi, ihe mere anyị ji dee ya na ihe mere anyị ji gbahapụ brubeck.

Bioyino - ekesa, mkpokọta metrik

Site na edemede anyị gara aga (1, 2) ị nwere ike ịchọpụta na ruo oge ụfọdụ anyị na-anakọta akara na-eji brubeck. Edere ya na C. Site na echiche koodu, ọ dị mfe dị ka nkwụnye (nke a dị mkpa mgbe ịchọrọ inye aka) na, nke kachasị mkpa, ọ na-ejikwa mpịakọta anyị nke 2 nde metrics kwa nkeji (MPS) na elu. enweghị nsogbu ọ bụla. Akwụkwọ ahụ kwuru nkwado maka nde mmadụ anọ MPS nwere akara mmuke. Nke a pụtara na ị ga-enweta ọnụ ọgụgụ ekwuru ma ọ bụrụ na ị hazie netwọkụ ahụ nke ọma na Linux. (Anyị amaghị ole MPS ị ga-enweta ma ọ bụrụ na ị hapụ netwọk ka ọ dị). N'agbanyeghị uru ndị a, anyị nwere ọtụtụ mkpesa siri ike gbasara brubeck.

Mkpesa 1. Github, onye nrụpụta ọrụ ahụ, kwụsịrị ịkwado ya: ibipụta patches na ndozi, ịnakwere nke anyị yana (ọ bụghị naanị nke anyị) PR. N'ime ọnwa ole na ole gara aga (ebe site na February-March 2018), ọrụ amaliteghachila, ma tupu nke ahụ, ọ fọrọ nke nta ka ọ bụrụ afọ 2 nke udo zuru oke. Tụkwasị na nke ahụ, a na-emepụta ọrụ ahụ maka ime Gihub mkpa, nke nwere ike ịghọ ihe mgbochi siri ike maka iwebata atụmatụ ọhụrụ.

Mkpesa 2. izi ezi nke ngụkọta oge. Brubeck na-anakọta ngụkọta nke ụkpụrụ 65536 maka mkpokọta. N'ọnọdụ anyị, maka ụfọdụ metrics, n'oge oge nchịkọta (30 sekọnd), ọtụtụ ụkpụrụ nwere ike ịbịarute (1 na elu). N'ihi nke a sample, kacha na kacha nta ụkpụrụ na-apụta na-abaghị uru. Dịka ọmụmaatụ, dịka nke a:

Bioyino - ekesa, mkpokọta metrik
Dị ka ọ dị

Bioyino - ekesa, mkpokọta metrik
Ka ọ kwesịrị ịdị

Maka otu ihe kpatara ya, a na-agbakọ ego n'ụzọ na-ezighi ezi. Tinye ebe a ahụhụ nwere oke mmiri na-ese n'elu 32-bit, nke na-ezigakarị ihe nkesa na segfault mgbe ị na-enweta metric yiri ka ọ dị ọcha, na ihe niile na-adị mma. Edobebeghị ahụhụ ahụ, n'agbanyeghị.

Ndien, ke akpatre, Mkpesa X. N'oge ederede, anyị dị njikere iweta ya na 14 niile ma ọ bụ obere arụ ọrụ statsd nke anyị nwere ike ịchọta. Ka anyị were ya na ụfọdụ akụrụngwa na-eto eto nke ukwuu nke na ịnakwere nde MPS 4 ezuola. Ma ọ bụ ọbụlagodi ma ọ bụrụ na ọ tobeghị, ma metrics adịlarị gị mkpa na ọbụna mkpụmkpụ, 2-3 nkeji ntinye na chaatị ahụ nwere ike ịghọrịrị ihe dị egwu ma mee ka ịda mbà n'obi na-enweghị ike ime n'etiti ndị njikwa. Ebe ọ bụ na ịgwọ ịda mbà n'obi bụ ọrụ na-enweghị ekele, a chọrọ ngwọta nkà na ụzụ.

Nke mbụ, nnabata mmejọ, nke mere na nsogbu mberede na ihe nkesa adịghị eme ka psychiatric zombie apocalypse na ụlọ ọrụ. Nke abuo, scaling na-enwe ike ịnakwere ihe karịrị 4 nde MPS, na-enweghị igwu miri emi n'ime Linux netwọk tojupụtara na nwayọọ na-eto eto "na mbara" ka achọrọ size.

Ebe ọ bụ na anyị nwere ohere maka ịkpụcha ihe, anyị kpebiri ibido site na nnabata mmejọ. "BỤRỤ! Nkwenye mmejọ! Ọ dị mfe, anyị nwere ike ime ya, "anyị chere ma malite sava 2, na-ebuli otu brubeck na nke ọ bụla. Iji mee nke a, anyị ga-eji metrics depụta okporo ụzọ na sava abụọ na ọbụna dee maka nke a obere ọrụ. Anyị doziri nsogbu nnabata mmejọ na nke a, mana… ọ bụghị nke ọma. Na mbụ ihe niile dị ka nnukwu: brubeck ọ bụla na-anakọta ụdị nchịkọta nke ya, na-ede data na Graphite otu ugboro kwa 30 sekọnd, na-edegharị oge ochie (nke a na-eme n'akụkụ Graphite). Ọ bụrụ na otu ihe nkesa daa na mberede, anyị na-enwe nke abụọ mgbe niile nwere nnomi nke chịkọtara data. Mana nke a bụ nsogbu ahụ: ọ bụrụ na ihe nkesa ahụ ada ada, “hụ” na-egosi na eserese. Nke a bụ n'ihi n'eziokwu na brubeck's 30-sekọnd nkeji anaghị emekọrịta ihe, na n'oge ihe mberede nke otu n'ime ha adịghị edegharị ya. Mgbe ihe nkesa nke abụọ malitere, otu ihe ahụ na-eme. Ọ dị mfe nnabata, mana achọrọ m nke ọma! Nsogbu nke scalability agakwaghị. Metiriks niile ka “na-efega” na otu nkesa, yabụ anyị nwere oke na otu nde MPS 2-4, dabere na ọkwa netwọkụ.

Ọ bụrụ na ị na-eche ntakịrị banyere nsogbu ahụ ma n'otu oge ahụ gwuo snow na shọvelụ, mgbe ahụ echiche doro anya na-esonụ nwere ike ịbata n'uche: ị chọrọ statsd nke nwere ike ịrụ ọrụ na ọnọdụ nkesa. Ya bụ, nke na-emekọrịta mmekọrịta n'etiti ọnụ ọnụ na oge na metrik. "N'ezie, ngwọta dị otú ahụ nwere ike ịdị adị," ka anyị kwuru wee gaa Google .... Ma ha ahụghị ihe ọ bụla. Mgbe ịgafe akwụkwọ maka statsd dị iche iche (https://github.com/etsy/statsd/wiki#server-implementations dị ka nke Disemba 11.12.2017, XNUMX), anyị ahụghị ihe ọ bụla. N'ụzọ doro anya, ọ bụghị ndị mmepe ma ọ bụ ndị ọrụ nke ngwọta ndị a ahụbeghị ọtụtụ metrics, ma ọ bụghị ya, ha ga-ewepụta ihe.

Ma mgbe ahụ, anyị chetara banyere statsd "ihe egwuregwu ụmụaka" - bioyino, nke edere na Just for Fun hackathon (aha nke ọrụ ahụ sitere na edemede ahụ tupu mmalite nke hackathon) wee chọpụta na anyị chọrọ statsd nke anyị ngwa ngwa. Maka gịnị?

  • n'ihi na enwere statsd clones pere mpe n'ụwa,
  • n'ihi na ọ ga-ekwe omume ịnye ihe achọrọ ma ọ bụ nso nsoro ntachi obi na scalability (gụnyere ịmekọrịta metrics gbakọtara n'etiti sava na idozi nsogbu nke izipu esemokwu),
  • n'ihi na ọ ga-ekwe omume ịgbakọ metrik nke ọma karịa brubeck,
  • n'ihi na ị nwere ike ịnakọta ọnụ ọgụgụ zuru ezu n'onwe gị, nke brubeck anaghị enye anyị,
  • n'ihi na m nwere ohere mmemme nke m hyperperformance ekesa scale lab ngwa, nke na-agaghị kpamkpam ikwugharị architecture nke ọzọ yiri hyperfor ... ọma, nke ahụ bụ ya.

Kedu ihe a ga-ede na ya? N'ezie, na Rust. Gịnị kpatara?

  • n'ihi na enweelarị ihe ngwọta prototype,
  • n'ihi na onye dere akụkọ ahụ amaworị nchara n'oge ahụ ma nwee mmasị ide ihe n'ime ya maka mmepụta ya na ohere itinye ya na oghere mepere emepe,
  • n'ihi na asụsụ ndị nwere GC adabaghị anyị n'ihi ọdịdị nke okporo ụzọ anatara (ihe fọrọ nke nta ka ọ bụrụ ezigbo oge) yana nkwụsịtụ GC bụ ihe anaghị anabata,
  • n'ihi na ịchọrọ ịrụ ọrụ kachasị dị ka C
  • n'ihi na nchara na-enye anyị concurrency enweghị atụ egwu, ma ọ bụrụ na anyị malitere ide ya na C / C ++, anyị gaara raked na ọbụna karịa vulnerabilities, buffer overflows, agbụrụ ọnọdụ na ndị ọzọ egwu okwu karịa brubeck.

E nwekwara arụmụka megide nchara. Ụlọ ọrụ ahụ enweghị ahụmahụ ịmepụta ọrụ na Rust, ma ugbu a anyị adịghị eme atụmatụ iji ya na isi ọrụ. Ya mere, enwere egwu dị egwu na ọ dịghị ihe ga-eme, ma anyị kpebiri iji ohere ma gbalịa.

Oge gafere...

N'ikpeazụ, mgbe ọtụtụ mgbalị ndị dara ada, ụdị ọrụ mbụ dị njikere. Kedu ihe mere? Nke a bụ ihe mere.

Bioyino - ekesa, mkpokọta metrik

Ọnụ ọnụ nke ọ bụla na-enweta usoro nke metric nke ya ma na-akwakọba ha, na ọ dịghị achịkọta metrics maka ụdị ndị ahụ ebe a chọrọ n'uju ha maka nchịkọta ikpeazụ. A na-ejikọta ọnụ na ibe ya site na ụfọdụ ụdị nkwekọrịta mkpọchi kesara, nke na-enye gị ohere ịhọrọ n'etiti ha naanị otu (ebe a anyị tiri mkpu) nke ruru eru iziga metrics na Onye Ukwu. A na-edozi nsogbu a ugbu a site na Nkwuputa, ma n'ọdịnihu ọchịchọ onye edemede na-agbatị ruo nke onwe mmejuputa iwu Raft, ebe onye kacha kwesị ekwesị ga-abụ, n'ezie, bụrụ onye ndu nkwekọrịta. Na mgbakwunye na nkwenye, ọnụ ọtụtụ mgbe (otu ugboro kwa sekọnd na ndabara) na-ezigara ndị agbata obi ha akụkụ ndị ahụ nke metrik agbakọtara nke ha jisiri ike ịnakọta na sekọnd ahụ. Ọ tụgharịrị na echekwara scaling na mmejọ nnabata - ọnụ nke ọ bụla ka na-ejide usoro metrik zuru ezu, mana a na-ezigara metrics achịkọtalarị, site na TCP wee tinye ya na usoro ọnụọgụ abụọ, yabụ na-ebelata ọnụ ahịa mpịaji nke ukwuu ma e jiri ya tụnyere UDP. N'agbanyeghị nnukwu ọnụọgụ metrik na-abata, mkpokọta chọrọ obere ebe nchekwa yana ọbụlagodi CPU. Maka mertics anyị nwere ike ịgbakọ nke ukwuu, nke a bụ naanị iri megabytes ole na ole nke data. Dị ka ego mgbakwunye, anyị anaghị enweta data na-enweghị isi na Graphite, dị ka ọ dị na burbeck.

Ihe ngwugwu UDP nwere metrik enweghị nha nha n'etiti ọnụ na akụrụngwa netwọkụ site na Round Robin dị mfe. N'ezie, ngwaike netwọk anaghị atụgharị ọdịnaya nke ngwugwu ya mere ọ nwere ike ịdọrọ ihe karịrị 4M ngwugwu kwa nkeji, ọ bụghị ịkọ metrik nke ọ maghị ihe ọ bụla. Ọ bụrụ na anyị eburu n'uche na metrics anaghị abịa n'otu n'otu na ngwugwu ọ bụla, mgbe ahụ anyị anaghị ahụ nsogbu arụmọrụ ọ bụla na ebe a. Ọ bụrụ na ihe nkesa na-akụda, ngwaọrụ netwọk ngwa ngwa (n'ime 1-2 sekọnd) na-achọpụta eziokwu a ma wepụ ihe nkesa mebiri emebi na ntụgharị. N'ihi nke a, enwere ike ịgbanwuo ma gbanyụọ oghere ndị na-agafe agafe (ya bụ, ndị na-abụghị ndị ndu) n'enweghị ihe ọ bụla na-ese onyinyo na chaatị ndị ahụ. Nke kachasị anyị tụfuru bụ akụkụ nke metrik batara na nkeji ikpeazụ. Ọnwụ mberede / nkwụsị / mgba ọkụ nke onye ndu ka ga-emepụta obere anomaly (nkeji 30 nke abụọ ka na-agakọghị), ma ọ bụrụ na enwere nkwurịta okwu n'etiti ọnụ, nsogbu ndị a nwere ike ibelata, dịka ọmụmaatụ, site na izipu ngwugwu mmekọrịta. .

Obere banyere nhazi ime. Ngwa ahụ bụ, n'ezie, multithreaded, ma usoro ihe ntanetị dị iche na nke eji brubeck. Eriri na brubeck bụ otu - nke ọ bụla n'ime ha na-ahụ maka ma nchịkọta ozi na nchịkọta. Na bioyino, a na-ekewa ndị ọrụ ụzọ abụọ: ndị na-ahụ maka netwọk na ndị na-ahụ maka nchịkọta. Nkewa a na-enye gị ohere ijikwa ngwa ahụ n'ụzọ dị nro dabere n'ụdị metrics: ebe a na-achọ nchịkọta kpụ ọkụ n'ọnụ, ị nwere ike ịgbakwunye ndị nchịkọta, ebe enwere ọtụtụ okporo ụzọ netwọk, ị nwere ike ịgbakwunye ọnụ ọgụgụ nke netwọk. N'oge a, na sava anyị, anyị na-arụ ọrụ na netwọk 8 na nchịkọta 4.

Ngụkọta (nke na-ahụ maka nchịkọta) bụ ihe na-agwụ ike. A na-ekesa ihe nkpuchi jupụtara na ntanetị n'etiti usoro ọnụ ọgụgụ, ebe a na-atụgharị ma chịkọta ha. Mgbe a rịọrọ ya, a na-enye metrics maka iziga na ọnụ ụzọ ndị ọzọ. Ihe a niile, gụnyere izipu data n'etiti ọnụ na ịrụ ọrụ na Consul, na-arụ ọrụ n'otu n'otu, na-agba ọsọ na usoro. tokyo.

Ọtụtụ nsogbu ndị ọzọ n'oge mmepe bụ akụkụ netwọk na-ahụ maka ịnata metrik. Ebumnuche bụ isi nke ikewapụta netwọkụ na-asọba n'ime ụlọ ọrụ dị iche iche bụ ọchịchọ ibelata oge nke mmiri na-emefu bụghị ịgụ data sitere na oghere. Nhọrọ ndị na-eji UDP asynchronous na recvmsg mgbe niile kwụsịrị ngwa ngwa: nke mbụ na-eri oke ohere CPU maka nhazi mmemme, nke abụọ na-achọ ọtụtụ ntụgharị gburugburu. Ya mere eji ya ugbu a recvmmsg nwere nnukwu ihe nchekwa (na ndị na-echekwa, ndị isi obodo, abụghị ihe ọ bụla nye gị!). Edebere nkwado maka UDP oge niile maka ikpe ọkụ ebe recvmmsg adịghị mkpa. Na ọnọdụ multimessage, ọ ga-ekwe omume iji nweta isi ihe: ọtụtụ oge, eriri netwọk na-eme ka eriri OS - na-agụ data site na oghere wee nyefee ya na ebe nchekwa ihe ọrụ, naanị mgbe ụfọdụ na-agbanwe na inye ihe nchekwa jupụtara na ya. nchịkọta. Ahịrị kwụ n'ahịrị na oghere anaghị agbakọba, ọnụ ọgụgụ nke ngwugwu ndị a tụfuru anaghị eto.

Примечание

Na ntọala ndabara, atọrọ nha nchekwa ka ọ buru oke ibu. Ọ bụrụ na ị kpebie ịnwale ihe nkesa ahụ n'onwe gị, ị nwere ike izute eziokwu ahụ bụ na mgbe izipu ọnụ ọgụgụ dị nta nke metrics, ha agaghị abata na Graphite, na-anọgide na nchekwa iyi netwọk. Iji na-arụ ọrụ na ọnụ ọgụgụ dị nta nke metrics, ị kwesịrị ịtọ bufsize na ọrụ- kwụ n'ahịrị-nha ka obere ụkpụrụ na config.

N'ikpeazụ, ụfọdụ eserese maka ndị hụrụ chaatị n'anya.

Ndekọ ọnụ ọgụgụ nke metrik na-abata maka sava ọ bụla: ihe karịrị nde MPS 2.

Bioyino - ekesa, mkpokọta metrik

Ịkwụsị otu ọnụ ọnụ na ikesa metrik na-abata.

Bioyino - ekesa, mkpokọta metrik

Ndekọ ọnụ ọgụgụ na metrik na-apụ apụ: naanị otu ọnụ na-eziga mgbe niile - onye isi wakporo.

Bioyino - ekesa, mkpokọta metrik

Ọnụ ọgụgụ nke ọrụ nke ọnụ ọnụ ọ bụla, na-eburu n'uche njehie na modul usoro dị iche iche.

Bioyino - ekesa, mkpokọta metrik

Nkọwa nke metrik na-abata (ezoro ezo metric aha).

Bioyino - ekesa, mkpokọta metrik

Kedu ihe anyị na-eme atụmatụ ime ihe a niile na-esote? N'ezie, dee koodu, dam...! Emebere atụmatụ a ka ọ bụrụ ebe mepere emepe ma ọ ga-adịkwa otú ahụ n'oge ndụ ya niile. Atụmatụ anyị ozugbo gụnyere ịtụgharị gaa na ụdị Raft nke anyị, ịgbanwe ụkpụrụ ndị ọgbọ ka ọ bụrụ nke enwere ike ibugharị, iwebata ọnụ ọgụgụ dị n'ime ọzọ, ụdị metrik ọhụrụ, ndozi ahụhụ na ndozi ndị ọzọ.

N'ezie, a na-anabata onye ọ bụla iji nyere aka na mmepe nke ọrụ ahụ: ịmepụta PR, Okwu, ọ bụrụ na ọ ga-ekwe omume anyị ga-azaghachi, melite, wdg.

A na-ekwu nke ahụ, nke ahụ bụ ihe niile, zụta enyí anyị!



isi: www.habr.com

Tinye a comment