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
Mai a matou tala muamua (
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
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:
E pei ona sa i ai
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
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 (
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.
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
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.
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 lē 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
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.
Fa'agata se tasi o nodes ma toe tufatufa atu 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.
Fuainumera o le faʻagaioiga o node taʻitasi, faʻatatau i mea sese i faʻalapotopotoga eseese.
Auiliiliga o metric o lo'o o'o mai (o igoa metric o lo'o natia).
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