Bioyino - pinpin, alaropo awọn metiriki ti iwọn

Nitorinaa o gba awọn metiriki. Bi awa. A tun gba awọn metiriki. Dajudaju, pataki fun iṣowo. Loni a yoo sọrọ nipa ọna asopọ akọkọ ti eto ibojuwo wa - olupin ikojọpọ ibaramu statsd bioyino, idi ti a kọ o ati idi ti a abandoned brubeck.

Bioyino - pinpin, alaropo awọn metiriki ti iwọn

Lati awọn nkan wa ti tẹlẹ (1, 2) o le rii pe titi di igba diẹ ti a gba awọn afi ni lilo Brubeck. A ti kọ ọ ni C. Lati oju wiwo koodu, o rọrun bi plug (eyi ṣe pataki nigbati o ba fẹ lati ṣe alabapin) ati, julọ ṣe pataki, o mu awọn iwọn didun wa ti 2 million metrics fun keji (MPS) ni tente oke. laisi eyikeyi awọn iṣoro. Iwe naa sọ atilẹyin fun miliọnu 4 MPS pẹlu aami akiyesi kan. Eyi tumọ si pe iwọ yoo gba eeya ti a sọ ti o ba tunto nẹtiwọọki ni deede lori Linux. (A ko mọ iye MPS ti o le gba ti o ba lọ kuro ni nẹtiwọki bi o ṣe jẹ). Pelu awọn anfani wọnyi, a ni ọpọlọpọ awọn ẹdun ọkan pataki nipa brubeck.

Ipeere 1. Github, olupilẹṣẹ ti iṣẹ akanṣe naa, dẹkun atilẹyin rẹ: titẹjade awọn abulẹ ati awọn atunṣe, gbigba tiwa ati (kii ṣe tiwa nikan) PR. Ni awọn oṣu diẹ sẹhin (nibikan lati Kínní-Oṣu Kẹta 2018), iṣẹ-ṣiṣe ti tun bẹrẹ, ṣugbọn ṣaaju pe o fẹrẹ to ọdun 2 ti idakẹjẹ pipe. Ni afikun, ise agbese na ti wa ni idagbasoke fun ti abẹnu Gihubu aini, eyi ti o le di idiwọ pataki si ifihan awọn ẹya tuntun.

Ipeere 2. Yiye ti isiro. Brubeck gba apapọ awọn iye 65536 fun apapọ. Ninu ọran wa, fun diẹ ninu awọn metiriki, lakoko akoko ikojọpọ (awọn aaya 30), awọn iye diẹ sii le de (1 ni tente oke). Bi abajade ti iṣapẹẹrẹ yii, o pọju ati awọn iye to kere julọ han asan. Fun apẹẹrẹ, bii eyi:

Bioyino - pinpin, alaropo awọn metiriki ti iwọn
Bi o ti ri

Bioyino - pinpin, alaropo awọn metiriki ti iwọn
Bawo ni o yẹ ki o jẹ

Fun idi kanna, iye owo ti wa ni iṣiro ni gbogbo igba ti ko tọ. Ṣafikun kokoro kan nibi pẹlu aponsedanu leefofo loju omi 32-bit, eyiti o firanṣẹ olupin ni gbogbogbo si segfault nigbati o ba ngba metric ti o dabi ẹnipe alaiṣẹ, ati pe ohun gbogbo di nla. Kokoro naa, nipasẹ ọna, ko ti ṣe atunṣe.

Ati nikẹhin Nipe X. Ni akoko kikọ, a ti ṣetan lati ṣafihan si gbogbo 14 diẹ sii tabi kere si awọn imuse statsd iṣẹ ti a ni anfani lati wa. Jẹ ki a fojuinu pe diẹ ninu awọn amayederun ẹyọkan ti dagba pupọ pe gbigba 4 million MPS ko to. Tabi paapaa ti ko ba ti dagba sibẹsibẹ, ṣugbọn awọn metiriki ti ṣe pataki pupọ fun ọ pe paapaa kukuru, awọn iṣẹju iṣẹju 2-3 ni awọn shatti le ti di pataki tẹlẹ ati fa awọn irẹwẹsi ti ibanujẹ ti ko le bori laarin awọn alakoso. Niwọn bi atọju şuga jẹ iṣẹ-ṣiṣe ti ko dupẹ, awọn solusan imọ-ẹrọ nilo.

Ni akọkọ, ifarada ẹbi, ki iṣoro lojiji lori olupin naa ko fa apocalypse Zombie psychiatric ni ọfiisi. Ni ẹẹkeji, wiwọn lati ni anfani lati gba diẹ sii ju 4 million MPS, laisi walẹ jinlẹ sinu akopọ nẹtiwọọki Linux ati ni idakẹjẹ dagba “ni ibú” si iwọn ti o nilo.

Niwọn bi a ti ni aye fun iwọn, a pinnu lati bẹrẹ pẹlu ifarada aṣiṣe. "NIPA! Ifarada aṣiṣe! O rọrun, a le ṣe, ”a ronu ati ṣe ifilọlẹ awọn olupin 2, igbega ẹda kan ti brubeck lori ọkọọkan. Lati ṣe eyi, a ni lati daakọ ijabọ pẹlu awọn metiriki si awọn olupin mejeeji ati paapaa kọ fun eyi kekere IwUlO. A yanju iṣoro ifarada aṣiṣe pẹlu eyi, ṣugbọn ... ko dara julọ. Ni akọkọ ohun gbogbo dabi ẹnipe nla: kọọkan brubeck gba awọn oniwe-ara version of alaropo, Levin data to Graphite lẹẹkan gbogbo 30 aaya, ìkọlélórí awọn atijọ aarin (eyi ni a ṣe lori awọn Graphite ẹgbẹ). Ti olupin kan ba kuna lojiji, a nigbagbogbo ni ọkan keji pẹlu ẹda tirẹ ti data akojọpọ. Ṣugbọn eyi ni iṣoro naa: ti olupin ba kuna, “ri” kan han lori awọn aworan. Eyi jẹ nitori otitọ pe awọn aaye arin iṣẹju-aaya 30 ti brubeck ko ṣiṣẹpọ, ati ni akoko jamba ọkan ninu wọn ko ni atunkọ. Nigbati olupin keji ba bẹrẹ, ohun kanna yoo ṣẹlẹ. Oyimbo farada, sugbon mo fẹ dara! Iṣoro ti scalability ko tun lọ. Gbogbo awọn metiriki ṣi “fò” si olupin kan, ati nitori naa a ni opin si MPS 2-4 milionu kanna, da lori ipele nẹtiwọki.

Ti o ba ronu diẹ nipa iṣoro naa ati ni akoko kanna ma ṣan egbon pẹlu shovel, imọran ti o han gbangba atẹle le wa si ọkan: o nilo statsd kan ti o le ṣiṣẹ ni ipo pinpin. Iyẹn ni, ọkan ti o ṣe imuṣiṣẹpọ laarin awọn apa ni akoko ati awọn metiriki. “Dajudaju, iru ojutu kan ṣee ṣe tẹlẹ,” a sọ ati lọ si Google…. Wọn kò sì rí nǹkankan. Lẹhin lilọ nipasẹ awọn iwe-ipamọ fun awọn iṣiro oriṣiriṣi (https://github.com/etsy/statsd/wiki#server-implementations bi ti Kejìlá 11.12.2017, XNUMX), a ko ri nkankan rara. Nkqwe, bẹni awọn olupilẹṣẹ tabi awọn olumulo ti awọn solusan wọnyi ko tii pade SO ọpọlọpọ awọn metiriki, bibẹẹkọ wọn yoo dajudaju wa pẹlu nkan kan.

Ati lẹhinna a ranti nipa statsd “isere” - bioyino, eyiti a kọ ni Just for Fun hackathon (orukọ ti iṣẹ akanṣe naa ni ipilẹṣẹ nipasẹ iwe afọwọkọ ṣaaju ibẹrẹ hackathon) ati rii pe a nilo awọn iṣiro tiwa ni iyara. Fun kini?

  • nitori pe awọn ere ibeji statsd diẹ ni o wa ni agbaye,
  • nitori o ṣee ṣe lati pese ohun ti o fẹ tabi isunmọ si ifarada ẹbi ti o fẹ ati iwọn (pẹlu mimuuṣiṣẹpọ awọn metiriki akojọpọ laarin awọn olupin ati yanju iṣoro ti fifiranṣẹ awọn ija),
  • nitori pe o ṣee ṣe lati ṣe iṣiro awọn metiriki diẹ sii ju brubeck lọ,
  • nitori o le gba awọn iṣiro alaye diẹ sii funrararẹ, eyiti brubeck ko pese fun wa,
  • nitori Mo ni aye lati ṣe eto awọn ohun elo laabu pinpin iwọn hyperperformance ti ara mi, eyiti kii yoo tun ṣe ilana faaji ti hyperfor miiran ti o jọra patapata… daradara, iyẹn ni.

Kini lati kọ lori? Dajudaju, ni ipata. Kí nìdí?

  • nitori pe ojutu apẹrẹ kan ti wa tẹlẹ,
  • nitori onkọwe nkan naa ti mọ Rust ni akoko yẹn ati pe o ni itara lati kọ nkan ninu rẹ fun iṣelọpọ pẹlu aye lati fi sii ni orisun-ìmọ,
  • nitori awọn ede pẹlu GC ko dara fun wa nitori iru ijabọ ti a gba (o fẹrẹ to akoko gidi) ati awọn idaduro GC ko ṣe itẹwọgba,
  • nitori pe o nilo iṣẹ ṣiṣe ti o pọju ni afiwe si C
  • nitori ipata pese wa pẹlu àìbẹru concurrency, ati ti o ba a bẹrẹ kikọ o ni C / C ++, a yoo ti raked ni ani diẹ vulnerabilities, saarin àkúnwọsílẹ, ije ipo ati awọn miiran idẹruba ọrọ ju brubeck.

Nibẹ wà tun ẹya ariyanjiyan lodi si ipata. Ile-iṣẹ ko ni iriri ṣiṣẹda awọn iṣẹ akanṣe ni Rust, ati ni bayi a tun ko gbero lati lo ninu iṣẹ akanṣe akọkọ. Nitorinaa, awọn ibẹru nla wa pe ko si ohun ti yoo ṣiṣẹ, ṣugbọn a pinnu lati ni aye ati gbiyanju.

Akoko ti kọja...

Nikẹhin, lẹhin ọpọlọpọ awọn igbiyanju ti o kuna, ẹya iṣẹ akọkọ ti ṣetan. Kini o ti ṣẹlẹ? Ohun tó ṣẹlẹ̀ nìyí.

Bioyino - pinpin, alaropo awọn metiriki ti iwọn

Ipin kọọkan n gba eto awọn metiriki tirẹ ati pe wọn kojọpọ, ati pe ko ṣe akopọ awọn metiriki fun awọn iru wọnyẹn nibiti a ti nilo eto kikun wọn fun ikojọpọ ikẹhin. Awọn apa ti wa ni asopọ si ara wọn nipasẹ iru iru ilana titiipa ti a pin, eyiti o fun ọ laaye lati yan laarin wọn ọkan nikan (nibi a kigbe) ti o yẹ lati firanṣẹ awọn metiriki si Nla. Iṣoro yii ti wa ni ipinnu lọwọlọwọ nipasẹ Konsi, sugbon ni ojo iwaju awọn ambitions onkowe tesiwaju lati ti ara imuse Raft, nibiti ẹni ti o yẹ julọ yoo, nitorinaa, jẹ ipade oludari ipohunpo. Ni afikun si ipohunpo, awọn apa ni igbagbogbo (lẹẹkan fun iṣẹju keji nipasẹ aiyipada) firanṣẹ si awọn aladugbo wọn awọn apakan ti awọn metiriki iṣaju iṣaju ti wọn ṣakoso lati gba ni iṣẹju-aaya yẹn. O wa ni pe wiwọn ati ifarada ẹbi ni a tọju - ipade kọọkan tun ni eto awọn metiriki ni kikun, ṣugbọn awọn metiriki naa ni a ti firanṣẹ tẹlẹ ti kojọpọ, nipasẹ TCP ati ti koodu sinu ilana ilana alakomeji, nitorinaa awọn idiyele atunkọ dinku ni pataki ni akawe si UDP. Pelu nọmba ti o tobi pupọ ti awọn metiriki ti nwọle, ikojọpọ nilo iranti kekere pupọ ati paapaa Sipiyu kere si. Fun awọn alamọdaju compressible giga, eyi jẹ mewa megabytes diẹ ti data. Bi afikun ajeseku, a ko gba kobojumu data rewrites ni Graphite, bi o ti wà pẹlu burbeck.

Awọn apo-iwe UDP pẹlu awọn metiriki ko ni iwọntunwọnsi laarin awọn apa lori ohun elo nẹtiwọọki nipasẹ Round Robin ti o rọrun. Nitoribẹẹ, ohun elo nẹtiwọọki ko ṣe itupalẹ awọn akoonu ti awọn apo-iwe ati nitorinaa o le fa pupọ diẹ sii ju awọn apo-iwe 4M fun iṣẹju kan, kii ṣe darukọ awọn metiriki nipa eyiti ko mọ nkankan rara. Ti a ba ṣe akiyesi pe awọn metiriki ko wa ọkan ni akoko kan ninu apo kọọkan, lẹhinna a ko rii awọn iṣoro iṣẹ eyikeyi tẹlẹ ni aaye yii. Ti olupin kan ba kọlu, ẹrọ nẹtiwọọki naa yarayara (laarin awọn aaya 1-2) ṣe awari otitọ yii ati yọ olupin ti o kọlu kuro lati yiyi. Bi abajade eyi, awọn apa palolo (ie, ti kii ṣe adari) le wa ni titan ati pipa ni adaṣe laisi akiyesi awọn iyasilẹ lori awọn shatti naa. O pọju ti a padanu jẹ apakan ti awọn metiriki ti o wa ni iṣẹju-aaya to kẹhin. Ipadanu lojiji / tiipa / iyipada ti oludari yoo tun ṣẹda anomaly kekere kan (aarin 30 keji ko si ni amuṣiṣẹpọ), ṣugbọn ti ibaraẹnisọrọ ba wa laarin awọn apa, awọn iṣoro wọnyi le dinku, fun apẹẹrẹ, nipa fifiranṣẹ awọn apo-iwe amuṣiṣẹpọ. .

Diẹ diẹ nipa eto inu. Ohun elo naa jẹ, nitorinaa, multithreaded, ṣugbọn ọna kika okun yatọ si eyiti a lo ninu brubeck. Awọn okun ti o wa ni brubeck jẹ kanna - ọkọọkan wọn jẹ iduro fun gbigba alaye mejeeji ati akojọpọ. Ni bioyino, awọn oṣiṣẹ ti pin si awọn ẹgbẹ meji: awọn ti o ni iduro fun nẹtiwọọki ati awọn ti o ni iduro fun akojọpọ. Pipin yii ngbanilaaye lati ni irọrun diẹ sii ṣakoso ohun elo ti o da lori iru awọn metiriki: nibiti a ti nilo ikojọpọ aladanla, o le ṣafikun awọn aggregators, nibiti ọpọlọpọ ijabọ nẹtiwọọki wa, o le ṣafikun nọmba awọn ṣiṣan nẹtiwọọki. Ni akoko yii, lori awọn olupin wa a ṣiṣẹ ni nẹtiwọọki 8 ati awọn ṣiṣan akopọ 4.

Awọn kika (lodidi fun alaropo) apakan jẹ ohun alaidun. Awọn buffers ti o kun nipasẹ awọn ṣiṣan nẹtiwọọki ti pin laarin awọn ṣiṣan kika, nibiti wọn ti ṣe itọka lẹyin ati akojọpọ. Lori ibeere, awọn metiriki ni a fun fun fifiranṣẹ si awọn apa miiran. Gbogbo eyi, pẹlu fifiranṣẹ data laarin awọn apa ati ṣiṣẹ pẹlu Consul, ni a ṣe asynchronously, nṣiṣẹ lori ilana. tokyo.

Pupọ awọn iṣoro diẹ sii lakoko idagbasoke ni o ṣẹlẹ nipasẹ apakan nẹtiwọọki ti o ni iduro fun gbigba awọn metiriki. Ibi-afẹde akọkọ ti ipinya awọn ṣiṣan nẹtiwọọki sinu awọn nkan lọtọ ni ifẹ lati dinku akoko ti ṣiṣan n lo kii ṣe lati ka data lati iho. Awọn aṣayan nipa lilo UDP asynchronous ati recvmsg deede ni kiakia parẹ: akọkọ n gba Sipiyu aaye olumulo pupọ pupọ fun sisẹ iṣẹlẹ, ekeji nilo awọn iyipada ipo pupọ ju. Nitorina o ti wa ni lilo bayi recvmmsg pẹlu tobi buffers (ati buffers, jeje olori, ni o wa nkankan si o!). Atilẹyin fun UDP deede wa ni ipamọ fun awọn ọran ina nibiti ko nilo recvmmsg. Ni ipo multimessage, o ṣee ṣe lati ṣaṣeyọri ohun akọkọ: pupọ julọ ti akoko naa, okun nẹtiwọọki n fa isinyi OS - ka data lati iho ki o gbe lọ si ifipamọ aaye olumulo, nikan ni iyipada lẹẹkọọkan si fifun ifipamọ ti o kun si aggregators. Ti isinyi ninu iho ni adaṣe ko ni ikojọpọ, nọmba awọn apo-iwe ti o lọ silẹ ni iṣe ko dagba.

Daakọ

Ninu awọn eto aiyipada, iwọn ifipamọ ti ṣeto lati jẹ nla pupọ. Ti o ba pinnu lojiji lati gbiyanju olupin funrararẹ, o le ba pade otitọ pe lẹhin fifiranṣẹ nọmba kekere ti awọn metiriki, wọn kii yoo de Graphite, ti o ku ninu ifipamọ ṣiṣan nẹtiwọọki. Lati ṣiṣẹ pẹlu nọmba kekere ti awọn metiriki, o nilo lati ṣeto bufsize ati iwọn isinyi-ṣiṣe si awọn iye kekere ninu atunto.

Nikẹhin, diẹ ninu awọn shatti fun awọn ololufẹ chart.

Awọn iṣiro lori nọmba awọn metiriki ti nwọle fun olupin kọọkan: diẹ sii ju 2 million MPS.

Bioyino - pinpin, alaropo awọn metiriki ti iwọn

Pa ọkan ninu awọn apa ati tun pinpin awọn metiriki ti nwọle.

Bioyino - pinpin, alaropo awọn metiriki ti iwọn

Awọn iṣiro lori awọn metiriki ti njade: ipade kan ṣoṣo nigbagbogbo n firanṣẹ - ọga igbogun ti.

Bioyino - pinpin, alaropo awọn metiriki ti iwọn

Awọn iṣiro ti isẹ ti ipade kọọkan, ni akiyesi awọn aṣiṣe ni ọpọlọpọ awọn modulu eto.

Bioyino - pinpin, alaropo awọn metiriki ti iwọn

Awọn alaye ti awọn metiriki ti nwọle (awọn orukọ metiriki ti wa ni pamọ).

Bioyino - pinpin, alaropo awọn metiriki ti iwọn

Kini a ngbero lati ṣe pẹlu gbogbo eyi atẹle? Nitoribẹẹ, kọ koodu, eegun…! Ise agbese na ni akọkọ gbero lati jẹ ṣiṣi-orisun ati pe yoo wa bẹ jakejado igbesi aye rẹ. Awọn ero lẹsẹkẹsẹ wa pẹlu yi pada si ẹya tiwa ti Raft, yiyipada ilana ẹlẹgbẹ si ọkan to ṣee gbe diẹ sii, ṣafihan awọn iṣiro inu inu afikun, awọn iru awọn metiriki tuntun, awọn atunṣe kokoro ati awọn ilọsiwaju miiran.

Nitoribẹẹ, gbogbo eniyan ni itẹwọgba lati ṣe iranlọwọ ninu idagbasoke iṣẹ akanṣe: ṣẹda PR, Awọn ọran, ti o ba ṣeeṣe a yoo dahun, mu dara, ati bẹbẹ lọ.

Pẹlu iyẹn, iyẹn ni gbogbo eniyan, ra awọn erin wa!



orisun: www.habr.com

Fi ọrọìwòye kun