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
Lati awọn nkan wa ti tẹlẹ (
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
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:
Bi o ti ri
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
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 (
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í.
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ẹ
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.
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
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.
Pa ọkan ninu awọn apa ati tun pinpin awọn metiriki ti nwọle.
Awọn iṣiro lori awọn metiriki ti njade: ipade kan ṣoṣo nigbagbogbo n firanṣẹ - ọga igbogun ti.
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.
Awọn alaye ti awọn metiriki ti nwọle (awọn orukọ metiriki ti wa ni pamọ).
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