Bioyino - tufatufaina, fa'aputu fua fa'atatau

O lea e te aoina metrics. E pei ona tatou i ai. Matou te aoina foʻi metrics. Ioe, e manaʻomia mo pisinisi. O le asō o le a tatou talanoa e uiga i le fesoʻotaʻiga muamua lava o la tatou mataʻituina faiga - o se statsd-compatible aggregation server bioyino, aisea na matou tusia ai ma pe aisea na matou lafoai ai le brubeck.

Bioyino - tufatufaina, fa'aputu fua fa'atatau

Mai a matou tala muamua (1, 2) e mafai ona e mauaina seʻia oʻo i sina taimi matou te aoina faʻailoga e faʻaaoga ai Brubeck. O loʻo tusia i le C. Mai se faʻamatalaga faʻailoga, e faigofie e pei o se polo (e taua tele pe a e manaʻo e saofagā) ma, sili ona taua, e faʻatautaia a tatou voluma o le 2 miliona metrics i le sekone (MPS) i le tumutumu. e aunoa ma ni faafitauli. O faʻamaumauga o loʻo taʻu mai ai le lagolago mo le 4 miliona MPS faʻatasi ai ma se faʻailoga. O lona uiga o le ae mauaina le faʻamatalaga faʻaalia pe afai e te faʻapipiʻi saʻo le fesoʻotaʻiga i Linux. (Matou te le iloa pe fia MPS e mafai ona e maua pe afai e te tuua le fesoʻotaʻiga e pei ona iai). E ui lava i nei tulaga lelei, sa tele a matou faitioga ogaoga e uiga i le brubeck.

Talosaga 1. Github, le faʻatupuina o le poloketi, na taofia le lagolagoina: lolomiina o patches ma faʻaleleia, talia a matou ma (e le gata o matou) PR. I nai masina talu ai (i se mea mai ia Fepuari-Mati 2018), ua toe faʻaauau le gaioiga, ae i luma atu na toetoe lava 2 tausaga o le toʻa atoatoa. E le gata i lea, o loʻo faʻatulagaina le poloketi mo manaoga i totonu Gihub, lea e mafai ona avea ma faʻalavelave matuia i le faʻaofiina o foliga fou.

Talosaga 2. Sa'o o fa'atatauga. E aoina e Brubeck le aofaʻi o 65536 tau mo le faʻapipiʻiina. I la matou tulaga, mo nisi metrics, i le taimi o le tuufaatasiga (30 sekone), e sili atu le tele o tau e mafai ona taunuu (1 i le tumutumu). O se taunuuga o lenei faʻataʻitaʻiga, o le maualuga ma le maualalo o tau e foliga mai e leai se aoga. Mo se faʻataʻitaʻiga, pei o lenei:

Bioyino - tufatufaina, fa'aputu fua fa'atatau
E pei ona sa i ai

Bioyino - tufatufaina, fa'aputu fua fa'atatau
Sa tatau ona i ai

Mo le mafuaaga lava e tasi, o aofaiga e masani ona sese le fuafuaina. Fa'aopoopo i i'i se pusa ma se 32-bit float overflow, lea e masani ona auina atu le server i segfault pe a maua se metric foliga mama, ma o mea uma e lelei. O le bug, i le ala, e leʻi faʻaleleia.

Ma mulimuli ane Talosaga X. I le taimi o le tusitusi, ua matou sauni e tuʻuina atu i le 14 sili atu pe itiiti foʻi faʻataʻitaʻiga faʻatinoga na mafai ona matou mauaina. Sei o tatou mafaufau o nisi o atinaʻe e tasi ua tupu tele ma o le taliaina o le 4 miliona MPS ua le toe lava. Pe tusa lava pe e leʻi tupu aʻe, ae o fua faʻatatau ua matua taua ia te oe e tusa lava pe puupuu, 2-3 minute paʻu i totonu o siata e mafai ona avea ma faʻalavelave ma mafua ai le faʻalavelave faʻalavelave i le va o pule. Talu ai o le togafitia o le atuatuvale o se galuega e le faafetai, e manaʻomia ni fofo faʻapitoa.

Muamua, faʻapalepale sese, ina ia o se faʻalavelave faʻafuaseʻi i luga o le 'auʻaunaga e le mafua ai se apocalypse zombie psychiatric i le ofisa. Lona lua, scaling ina ia mafai ona talia le sili atu i le 4 miliona MPS, e aunoa ma le eli loloto i totonu o le upega o fesoʻotaʻiga Linux ma faʻatupulaʻia filemu "i le lautele" i le tele manaʻomia.

Talu ai sa i ai so matou avanoa e fa'afua ai mea, na matou filifili ai e amata i le fa'apalepale masei. "E uiga! Fa'apalepale sese! E faigofie, e mafai ona matou faia, "na matou mafaufau ai ma faʻalauiloa 2 servers, faʻapipiʻi se kopi o le brubeck i luga o taʻitasi. Ina ia faia lenei mea, e tatau ona matou kopiina fefaʻatauaʻiga ma metrics i 'auʻaunaga uma e lua ma tusi foi mo lenei mea aoga laiti. Na matou foia le faafitauli o le faapalepale o sese i lenei mea, ae ... e le lelei tele. I le taimi muamua na foliga lelei mea uma: e aoina e brubeck lana lava faʻasalalauga, tusi faʻamaumauga i le Graphite i le 30 sekone, faʻasolo le vaʻa tuai (e faia i le itu Graphite). A fa'afuase'i ona le manuia se tasi server, e masani lava ona i ai le matou lona lua ma lana lava kopi o fa'amaumauga tu'ufa'atasia. Ae o le faʻafitauli lenei: afai e le manuia le 'auʻaunaga, o le "vaʻai" e faʻaalia i luga o kalafi. E mafua ona o le mea moni e le o fa'amaopoopoina le 30-lua vaeluaga a le brubeck, ma i le taimi o se fa'alavelave e le o toe fa'auluina se tasi oi latou. A amata le server lona lua, o le mea lava lea e tasi e tupu. Faigofie, ae ou te manaʻo ia sili atu! O le faafitauli o le scalability e leʻi alu ese foi. O fua uma o loʻo "lele" i se 'auʻaunaga e tasi, ma o le mea lea e faʻatapulaʻaina i matou i le 2-4 miliona MPS, faʻalagolago i le tulaga o fesoʻotaiga.

Afai e te mafaufau laʻititi i le faʻafitauli ma i le taimi lava e tasi e eli ai le kiona ma se suo, ona oʻo mai lea i lou mafaufau le manatu manino lenei: e te manaʻomia se statsd e mafai ona galue i le tufatufaina atu. O lona uiga, o se tasi e faʻatinoina le faʻamaopoopoina i le va o nodes i le taimi ma metrics. "Ioe, o sea fofo masalo ua uma ona i ai," na matou fai atu ai ma o atu i Google…. Ma sa latou le maua se mea. A maeʻa ona suʻeina faʻamaumauga mo fuainumera eseese (https://github.com/etsy/statsd/wiki#server-implementations e oʻo mai ia Tesema 11.12.2017, XNUMX), e leai se mea na matou maua. E foliga mai, e leʻi faʻafeiloaʻi e le au atiaʻe poʻo tagata faʻaoga nei fofo le tele o metotia, a leai o le a latou maua se mea.

Ona matou manatua ai lea e uiga i le "meataalo" statsd - bioyino, lea na tusia i le Just for Fun hackathon (o le igoa o le poloketi na fatuina e le tusitusiga aʻo leʻi amataina le hackathon) ma iloa ai matou te manaʻomia vave a matou lava statsd. Mo le a?

  • ona e toalaiti tele ni clones i le lalolagi,
  • aua e mafai ona tuʻuina atu le manaʻomia pe latalata i le faʻapalepale faʻaletonu manaʻomia ma le faʻalauteleina (e aofia ai le tuʻufaʻatasia o fua faʻatatau i le va o sapalai ma foia le faʻafitauli o le lafoina o feteʻenaʻiga),
  • aua e mafai ona sa'o le fa'atatauina o metric nai lo le mea e faia e le brubeck,
  • aua e mafai ona e aoina mai faʻamatalaga auʻiliʻili oe lava, lea e leʻi tuʻuina mai e brubeck ia i matou,
  • aua sa ou maua se avanoa e fa'apolokalame ai la'u lava hyperperformance distributed scale lab application, lea o le a le toe faia atoa ai le fausaga o se isi hyperfor... lelei, o le mea lena.

O le a le mea e tusi ai? Ioe, i Rust. Aisea?

  • ona ua uma ona i ai se faʻataʻitaʻiga fofo,
  • ona o le tusitala o le tusiga ua uma ona iloa Rust i lena taimi ma sa naunau e tusi se mea i totonu mo le gaosiga ma le avanoa e tuʻu ai i le punaoa tatala,
  • aua o gagana e iai le GC e le talafeagai mo i tatou ona o le natura o felauaiga na maua (toetoe lava taimi) ma GC taofi e toetoe lava a le taliaina,
  • aua e te manaʻomia le faʻatinoga maualuga e faʻatusatusa i le C
  • aua o le Rust e maua ai e i tatou le fa'atasi ma le le fefe, ma afai tatou te amata tusia i le C/C++, semanu tatou te fa'atupuina le tele o fa'afitauli, fa'amama fa'afefe, tu'uga tu'uga ma isi upu mata'utia nai lo le brubeck.

Sa iai foi se finauga faasaga ia Rust. E leai se poto masani a le kamupani i le fausiaina o galuega i Rust, ma o lenei matou te le o fuafua e faʻaaogaina i le galuega autu. O le mea lea, sa i ai ni popolega ogaoga o le a leai se mea e manuia, ae na matou filifili e ave se avanoa ma taumafai.

Ua mavae le taimi...

Mulimuli ane, ina ua mavae le tele o taumafaiga le manuia, ua saunia le lomiga galue muamua. O le a le mea ua tupu? O le mea lea na tupu.

Bioyino - tufatufaina, fa'aputu fua fa'atatau

E maua e node ta'itasi lana lava seti o metric ma fa'aputuina, ma e le tu'ufa'atasia metrics mo na ituaiga e mana'omia ai le latou seti atoa mo le fa'aputuga mulimuli. O nodes e fesoʻotaʻi le tasi i le isi e se ituaiga faʻasalalauga loka faʻasalalau, lea e mafai ai e oe ona filifili i totonu oi latou na o le tasi (o iinei na matou tagi ai) e agavaa e tuʻuina atu metrics i le Silisiliese. O lea fa'afitauli o lo'o fo'ia nei e Faʻamatalaga, ae i le lumanaʻi le faʻamoemoe o le tusitala e faʻalautele atu i lava faatinoga Raft, lea o le a sili ona agavaa, ioe, o le node taitai autasi. I le faaopoopo atu i le maliega, o nodes e masani lava (tasi i le sekone ona o le faaletonu) e lafo atu i o latou tuaoi vaega na o metric mua'i tu'ufa'atasia na mafai ona latou aoina i lena lona lua. E aliali mai o loʻo faʻasaoina le faʻaogaina ma le faʻapalepale - o node taʻitasi o loʻo i ai pea se seti atoa o metric, ae o fua faʻatatau ua uma ona tuʻufaʻatasia, e ala i le TCP ma faʻapipiʻiina i totonu o le binary protocol, o lea e matua faʻaitiitia ai tau faʻatusatusa i le UDP. E ui lava i le tele o numera o loʻo oʻo mai, o le faʻaputuina e manaʻomia ai le itiiti o le manatua ma le itiiti ifo o le PPU. Mo a matou mertics sili ona faʻapipiʻiina, e naʻo ni nai sefulu megabytes o faʻamaumauga. I le avea o se ponesi faaopoopo, matou te le maua ni faʻamatalaga le manaʻomia i le Graphite, pei o le mea na tupu i le burbeck.

UDP pepa ma metrics e le paleni i le va o nodes i meafaigaluega fesoʻotaʻiga e ala i se Round Robin faigofie. O le mea moni, e le faʻavasegaina e meafaigaluega fesoʻotaʻiga mea o loʻo i totonu o afifi ma o lea e mafai ai ona tosoina le sili atu nai lo le 4M packets i le sekone, ae le o le taʻua o metotia e leai se mea na te iloa. Afai tatou te manatu e le oʻo mai fua faʻatatau i totonu o afifi taʻitasi, ona tatou le vaʻaia lea o ni faʻafitauli faʻatinoga i lenei nofoaga. Afai e paʻu se 'auʻaunaga, e vave ona iloa e le masini fesoʻotaʻiga (i totonu o le 1-2 sekone) lenei mea moni ma aveese le server na paʻu mai le suiga. O le i'uga o lea mea, e mafai lava ona ki ma tape nodes passive (e le o se ta'ita'i) e aunoa ma le matauina o toso i lalo i luga o siata. O le maualuga tatou te leiloa o se vaega o metrics na sau i totonu i le lona lua mulimuli. O le leiloa fa'afuase'i/tapuni/sui o se ta'ita'i o le a fa'atupuina ai lava se fa'aletonu la'ititi (o le vaeluaga o le 30 lona lua o lo'o le fetaui lava), ae afai e i ai se feso'ota'iga i le va o nodes, e mafai ona fa'aitiitia nei fa'afitauli, mo se fa'ata'ita'iga, e ala i le tu'uina atu o pusa fa'atasi. .

O sina mea itiiti e uiga i le fausaga totonu. O le talosaga, ioe, multithreaded, ae o le fausaga filo e ese mai le faʻaaogaina i le brubeck. O filo i totonu o le brubeck e tutusa lava - o latou taʻitasi e nafa ma le aoina o faʻamatalaga ma le tuʻufaʻatasia. I bioyino, ua vaevaeina tagata faigaluega i ni vaega se lua: oi latou e nafa ma le fesoʻotaʻiga ma i latou e nafa ma le faʻapipiʻiina. O lenei vaevaega e mafai ai e oe ona sili atu ona faʻaogaina le faʻaogaina o le talosaga e faʻatatau i le ituaiga metrics: pe a manaʻomia le faʻapipiʻiina malosi, e mafai ona e faʻaopoopoina aggregators, o loʻo i ai le tele o fefaʻatauaiga o fesoʻotaʻiga, e mafai ona e faʻaopoopo le numera o fesoʻotaʻiga. I le taimi nei, i luga oa matou 'auʻaunaga matou te galulue i le 8 fesoʻotaʻiga ma le 4 faʻaputuga tafe.

Ole vaega ole faitau (e nafa ma le fa'aputuga) e fai si le manaia. Fa'atumuina pa'u e ala i feso'ota'iga o lo'o tufatufa atu i le faitauina o tafega, lea e fa'asolosolo ai ma fa'apotopotoina. I luga o le talosaga, e tuʻuina atu fua faʻatatau mo le lafoina i isi nodes. O nei mea uma, e aofia ai le tuʻuina atu o faʻamatalaga i le va o nodes ma le galulue faʻatasi ma le Konesula, o loʻo faia faʻatasi, faʻatautaia i luga o le faʻavae. tokio.

Ole tele o fa'afitauli ile atina'e na mafua mai ile vaega ole feso'ota'iga e nafa ma le mauaina o fua. O le sini autu o le vavaeeseina o fesoʻotaʻiga e tafe atu i vaega eseese o le manaʻoga e faʻaitiitia le taimi e faʻaalu ai se tafe e faitau faʻamatalaga mai le socket. O filifiliga e fa'aaoga ai le UDP asynchronous ma le recvmsg masani na vave ona mou atu: o le mea muamua e fa'aaogaina le tele o tagata fa'aoga-avanoa CPU mo le fa'agaioiina o mea e tutupu, o le lona lua e mana'omia ai le tele o suiga o fa'amatalaga. O lea ua faʻaaogaina nei recvmmsg fa'atasi ai ma pa puipui tetele (ma fa'amalo, ali'i ofisa, e leai se mea ia te oe!). Lagolago mo UDP masani e faʻaagaga mo mea mama e le manaʻomia ai le recvmmsg. I le multimessage mode, e mafai ona ausia le mea autu: o le tele o le taimi, o le filo fesoʻotaʻiga e faʻapipiʻi le OS queue - faitau faʻamatalaga mai le socket ma faʻafeiloaʻi atu i le userspace buffer, naʻo nisi taimi e fesuiaʻi i le tuʻuina atu o le pa faʻatumu i. fa'apotopoto. O le laina i totonu o le socket e toetoe lava a le faʻaputuina, o le numera o paʻu pa'ū e toetoe lava a le tupu.

mataʻi

I tulaga fa'aletonu, ua fa'atulaga le lapo'a e fai si tele. Afai e te faʻafuaseʻi ona filifili e faʻataʻitaʻi le 'auʻaunaga oe lava, e mafai ona e feagai ma le mea moni pe a uma ona tuʻuina atu se numera laʻititi o metrics, latou te le oʻo mai i le Graphite, o loʻo totoe i totonu o le fesoʻotaʻiga stream buffer. Ina ia galue i se numera laʻititi o metrics, e tatau ona e setiina le faʻailoga ma le galuega-queue-size i ni tau laiti i le config.

Mulimuli ane, o nisi siata mo e fiafia i siata.

Fuainumera i luga ole numera o fua fa'atatau mo sau ta'itasi: sili atu ile 2 miliona MPS.

Bioyino - tufatufaina, fa'aputu fua fa'atatau

Fa'agata se tasi o nodes ma toe tufatufa atu fua fa'atatau.

Bioyino - tufatufaina, fa'aputu fua fa'atatau

Fuainumera i luga o metrics alu ese: na o le tasi le node e auina atu i taimi uma - o le pule o osofaiga.

Bioyino - tufatufaina, fa'aputu fua fa'atatau

Fuainumera o le faʻagaioiga o node taʻitasi, faʻatatau i mea sese i faʻalapotopotoga eseese.

Bioyino - tufatufaina, fa'aputu fua fa'atatau

Auiliiliga o metric o lo'o o'o mai (o igoa metric o lo'o natia).

Bioyino - tufatufaina, fa'aputu fua fa'atatau

O le a le mea o loʻo tatou fuafua e fai i nei mea uma e sosoo ai? Ioe, tusi le code, malaia...! O le poloketi na muai fuafuaina e avea ma punaoa tatala ma o le a tumau pea i lona olaga atoa. O a matou fuafuaga fa'anatinati e aofia ai le fesuia'i i la matou lava fa'aliliuga o Raft, suia le feagaiga a tupulaga i se mea e sili atu ona feavea'i, fa'alauiloa fa'aopoopo fa'amaumauga i totonu, ituaiga fou o metric, fa'aleleia o pusa ma isi fa'aleleia.

Ioe, e talia tagata uma e fesoasoani i le atinaʻeina o le poloketi: fatuina PR, Faʻamatalaga, pe a mafai o le a matou tali atu, faʻaleleia, ma isi.

O le tala lena, na pau lava lena o tagata, faatau a tatou elefane!



puna: www.habr.com

Faaopoopo i ai se faamatalaga