Enda optimizations muVictoriaMetrics. Alexander Valyalkin

Ini ndinokurudzira kuti uverenge zvinyorwa zvekupedzisira 2019 chirevo naAlexander Valyalkin "Enda optimizations muVictoriaMetrics"

VictoriaMetrics -inokurumidza uye ino scalable DBMS yekuchengetedza uye kugadzirisa data muchimiro chenguva yakatevedzana (rekodhi mafomu enguva uye seti yehunhu inoenderana nenguva ino, semuenzaniso, inowanikwa kuburikidza nekuvhota nguva nenguva kwechimiro che sensors kana kuunganidzwa kwe metrics).

Enda optimizations muVictoriaMetrics. Alexander Valyalkin

Heino link yevhidhiyo yeiyi report - https://youtu.be/MZ5P21j_HLE

Masiraidhi

Enda optimizations muVictoriaMetrics. Alexander Valyalkin

Tiudze nezvako. Ini ndiri Alexander Valyalkin. Here yangu GitHub account. Ini ndinofarira nezve Go uye kuita optimization. Ndakanyora akawanda anobatsira uye asina kunyanya anobatsira maraibhurari. Vanotanga kana fast, kana ne quick prefix.

Parizvino ndiri kushanda paVictoriaMetrics. Chii uye ndiri kuitei ikoko? Ndichataura pamusoro peizvi mumharidzo ino.

Enda optimizations muVictoriaMetrics. Alexander Valyalkin

Mutsara wemushumo ndewekuti:

  • Kutanga, ini ndichakuudza kuti VictoriaMetrics chii.
  • Ipapo ini ndichakuudza kuti nguva dzakateerana ndedzipi.
  • Ipapo ini ndinokuudza kuti dhatabheti yenguva inoshanda sei.
  • Tevere, ini ndichakuudza nezve dhatabhesi yedhizaini: iyo inosanganisira.
  • Uye ipapo ngatienderere mberi kune optimizations iyo VictoriaMetrics inayo. Uku ndiko kukwidziridzwa kweiyo inverted index uye optimization yekushandisa bitset muGo.

Enda optimizations muVictoriaMetrics. Alexander Valyalkin

Pane chero munhu muvateereri anoziva kuti VictoriaMetrics chii? Wow, vanhu vazhinji vanotoziva. Mashoko akanaka. Kune avo vasingazive, iyi inguva yakatevedzana dhatabhesi. Iyo yakavakirwa paClickHouse architecture, pane mamwe mashoko eClickHouse kuitiswa. Semuyenzaniso, pane akadai se: MergeTree, parallel calculation pane ese aripo processor cores uye performance optimization nekushanda pamabhuraki edata akaiswa mu processor cache.

VictoriaMetrics inopa zvirinani kudzvanya data pane imwe nguva yakatevedzana dhatabhesi.

Iyo inoyera yakatwasuka - ndiko kuti, iwe unogona kuwedzera mamwe ma processor, yakawanda RAM pane imwe komputa. VictoriaMetrics ichashandisa zvinobudirira zviwanikwa izvi uye inovandudza mutsara kugadzirwa.

VictoriaMetrics zvakare inoyera yakatwasuka - ndiko kuti, iwe unogona kuwedzera mamwe ma node kuVictoriaMetrics cluster, uye kuita kwayo kuchawedzera zvakada kuita mutsara.

Sezvawakafungidzira, VictoriaMetrics idhatabhesi rinokurumidza, nekuti ini handikwanise kunyora vamwe. Uye zvakanyorwa muGo, saka ndiri kutaura nezvazvo pamusangano uyu.

Enda optimizations muVictoriaMetrics. Alexander Valyalkin

Ndiani anoziva chinonzi time series? Anozivawo vanhu vakawanda. Nguva dzakatevedzana nhevedzano yezviviri (timestamp, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅), uko mapoka maviri aya anorongwa nenguva. Kukosha inhamba inoyangarara yenhamba - float64.

Imwe neimwe nguva inoteedzana inotsanangurwa zvakasiyana nekiyi. Kiyi iyi inosanganisirei? Inosanganisira isina-isina seti yekiyi-value pairs.

Heino muenzaniso wenguva yakatevedzana. Kiyi yeiyi nhevedzano rondedzero yemaviri: __name__="cpu_usage" ndiro zita remetric, instance="my-server" - iyi ndiyo komputa inounganidzwa iyi metric, datacenter="us-east" - iyi ndiyo data data iyo komputa iyi iripo.

Takapedzisira tave nezita renguva yakatevedzana rine matatu makiyi-value pairi. Kiyi iyi inoenderana nerondedzero yevaviri (timestamp, value). t1, t3, t3, ..., tN - Aya ndiwo maratidziro enguva, 10, 20, 12, ..., 15 - maitiro anoenderana. Uku ndiko kushandisa-cpu pane imwe nguva yemutsara wakapihwa.

Enda optimizations muVictoriaMetrics. Alexander Valyalkin

Nguva dzakatevedzana dzinogona kushandiswa kupi? Pane ane zano here?

  • MuDevOps, unogona kuyera CPU, RAM, network, rps, nhamba yezvikanganiso, nezvimwe.
  • IoT - tinogona kuyera tembiricha, kudzvanywa, geo coordinates uye chimwe chinhu.
  • Zvakare mari - tinokwanisa kutarisa mitengo yemhando dzese dzemasheya nemari.
  • Mukuwedzera, nguva dzakatevedzana dzinogona kushandiswa mukutarisa maitiro ekugadzira mumafekitori. Tine vashandisi vanoshandisa VictoriaMetrics kutarisa maturbine emhepo, emarobhoti.
  • Nguva yakatevedzana inobatsirawo kuunganidza ruzivo kubva kune ma sensors emidziyo yakasiyana. Somuenzaniso, nokuda injini; pakuyera kumanikidzwa kwetai; pakuyeresa kumhanya, kureba; yekuyera kushandiswa kwepeturu, nezvimwe.
  • Nguva yakatevedzana inogona zvakare kushandiswa kutarisa ndege. Imwe neimwe ndege ine bhokisi dema rinounganidza nguva dzakateedzana kune akasiyana ma paramita ehutano hwendege. Nguva dzakatevedzana dzinoshandiswawo muindasitiri yezvemuchadenga.
  • Kuchengetedza hutano ndeye blood pressure, pulse, etc.

Panogona kunge paine mamwe maapplication andakanganwa nezvayo, asi ndinovimba unonzwisisa kuti nhevedzano yenguva iri kushandiswa zvakanyanya munyika yanhasi. Uye huwandu hwekushandisa kwavo huri kukura gore negore.

Enda optimizations muVictoriaMetrics. Alexander Valyalkin

Sei uchida dhatabhesi yenguva? Sei usingakwanise kushandisa yakajairwa hukama dhatabhesi kuchengetedza nguva dzakatevedzana?

Nekuti nguva dzakatevedzana dzinowanzove neruzivo rwakakura, izvo zvakaoma kuchengeta nekugadzirisa mune zvakajairwa dhatabhesi. Naizvozvo, madatabase ehunyanzvi enguva akateedzana akaonekwa. Mabhesi aya anochengeta mapoinzi zvinobudirira (timestamp, value) nekiyi yakapihwa. Ivo vanopa API yekuverenga yakachengetwa data nekiyi, nekamwe kiyi-kukosha peya, kana neakawanda kiyi-kukosha mapeya, kana ne regexp. Semuenzaniso, iwe unoda kuwana iyo CPU mutoro weese masevhisi ako munzvimbo yedata muAmerica, saka unofanirwa kushandisa iyi pseudo-mubvunzo.

Kazhinji nguva dzakatevedzana dhatabhesi inopa yakasarudzika mitauro yemibvunzo nekuti nguva yakatevedzana SQL haina kunyatso kufanira. Kunyangwe paine dhatabhesi inotsigira SQL, haina kunyatsokodzera. Kubvunza mitauro yakadai PromQL, InfluxQL, yerera, Q. Ndinovimba kuti mumwe munhu akambonzwa mumwe wemitauro iyi. Vanhu vazhinji vangangonzwa nezve PromQL. Uyu ndiwo mutauro wemubvunzo wePrometheus.

Enda optimizations muVictoriaMetrics. Alexander Valyalkin

Izvi ndizvo zvinotaridzika zvemazuva ano dhatabhesi yedhizaini inotaridzika sekushandisa VictoriaMetrics semuenzaniso.

Inoumbwa nezvikamu zviviri. Iyi ichengetedzo yeinverted index uye kuchengetedza yenguva dzakatevedzana kukosha. Aya matura akapatsanurwa.

Kana rekodhi nyowani yasvika mudhatabhesi, isu tinotanga tawana iyo inverted index kuti tiwane identifier yenguva yeseti yakapihwa. label=value kune metric yakapihwa. Isu tinowana chiziviso ichi uye tinochengetedza kukosha muchitoro chedata.

Kana chikumbiro chauya kuzotora data kubva kuTSDB, isu tinotanga taenda kune inverted index. Ngatitore zvese timeseries_ids zvinyorwa zvinoenderana neseti iyi label=value. Uye tobva tawana ese anodiwa data kubva kudura re data, indexed by timeseries_ids.

Enda optimizations muVictoriaMetrics. Alexander Valyalkin

Ngatitarisei muenzaniso wekuti nguva yakatevedzana dhatabhesi inoita sei inouya yakasarudzwa mubvunzo.

  • Chekutanga anowana zvese timeseries_ids kubva kuinverted index ine mapeya akapihwa label=value, kana kuti kugutsa kutaura kunoitwa nguva dzose.
  • Inobva yatora ese mapoinzi data kubva kuchengetedzo yedata panguva yakatarwa yevakawanikwa timeseries_ids.
  • Mushure meizvi, dhatabhesi inoita mamwe maverengero pane idzi data data, zvichienderana nechikumbiro chemushandisi. Uye shure kwaizvozvo inodzorera mhinduro.

Mumharidzo iyi ndichakuudza nezve chikamu chekutanga. Uku kutsvaga timeseries_ids neinverted index. Iwe unogona kutarisa nezve chikamu chechipiri uye chikamu chechitatu gare gare VictoriaMetrics masosi, kana kumirira kusvika ndagadzirira mamwe mishumo :)

Enda optimizations muVictoriaMetrics. Alexander Valyalkin

Ngatiendei kune inverted index. Vakawanda vangafunga kuti izvi zviri nyore. Ndiani anoziva kuti inverted index chii uye kuti inoshanda sei? O, vanhu havasati vawanda. Ngatiedzei kunzwisisa kuti chii.

Zviri nyore chaizvo. Ringori duramanzwi rinoratidza kiyi yekukosha. Chii chinonzi kiyi? Vaviri ava label=valuekupi label ΠΈ value - iyi mitsetse. Uye ma values ​​ari set timeseries_ids, iyo inosanganisira vaviri vakapiwa label=value.

Inverted index inokubvumira kuti uwane nekukurumidza zvese timeseries_ids, vakapa label=value.

Inokubvumirawo kuti uwane nokukurumidza timeseries_ids nguva dzakatevedzana dzemapeya akati wandei label=value, kana kune vakaroorana label=regexp. Izvi zvinoitika sei? Nekutsvaga mharadzano yeseti timeseries_ids pambiri imwe neimwe label=value.

Enda optimizations muVictoriaMetrics. Alexander Valyalkin

Ngatitarisei kune kwakasiyana mashandiro eiyo inverted index. Ngatitangei nezviri nyore kuita zvisina basa. Anoratidzika seizvi.

shanda getMetricIDs inowana runyoro rwetambo. Mutsetse wega wega une label=value. Basa iri rinodzosa rondedzero metricIDs.

Inoshanda sei? Pano tine shanduko yepasi rose inonzi invertedIndex. Iri iduramazwi renguva dzose (map), inozoita mepu tambo yekucheka ints. Mutsetse une label=value.

Basa rekuita: tora metricIDs kwekutanga label=value, tobva tapinda mune zvimwe zvese label=value, tinozviwana metricIDs kwavari. Uye dana basa intersectInts, iyo ichakurukurwa pasi apa. Uye basa iri rinodzosa mharadzano yezvirongwa izvi.

Enda optimizations muVictoriaMetrics. Alexander Valyalkin

Sezvauri kuona, kuita inverted index hakuna kunetsa. Asi uku kuita zvisina basa. Zvakaipa zvipi? Iyo yakanyanya kusarudzika yekusaziva kuita ndeye kuti inverted index yakadaro inochengetwa muRAM. Mushure mekutangazve application tinorasa iyi index. Iko hakuna kuchengetedza kweindekisi iyi kudhisiki. Iyo inverted index yakadaro haigone kuve yakakodzera kune database.

Yechipiri drawback inobatanawo nendangariro. Iyo inverted index inofanirwa kukwana mu RAM. Kana ikadarika saizi ye RAM, saka zviri pachena isu tichabuda - kunze kwekukanganisa kwekurangarira. Uye purogiramu haishande.

Enda optimizations muVictoriaMetrics. Alexander Valyalkin

Dambudziko iri rinogona kugadziriswa uchishandisa yakagadzirira-yakagadzirwa mhinduro senge LevelDB, kana RocksDB.

Muchidimbu, tinoda dhatabhesi inotitendera kuti tiite mabasa matatu nekukurumidza.

  • Oparesheni yekutanga iri kurekodha ΠΊΠ»ΡŽΡ‡-Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ kune iyi database. Anoita izvi nekukurumidza, kupi ΠΊΠ»ΡŽΡ‡-Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ tambo dzemapoto.
  • Chechipiri kushanda ndiko kukurumidza kutsvaga kukosha uchishandisa kiyi yakapihwa.
  • Uye chechitatu oparesheni kukurumidza kutsvaga kwese kukosha neakapihwa prefix.

LevelDB neRocksDB - aya dhatabhesi akagadzirwa neGoogle neFacebook. Kutanga kwakauya LevelDB. Ipapo vakomana vepaFacebook vakatora LevelDB ndokutanga kuivandudza, vakagadzira RocksDB. Iye zvino anenge ese emukati dhatabhesi anoshanda paRocksDB mukati meFacebook, kusanganisira ayo akaendeswa kuRocksDB neMySQL. Vakamutumidza zita MyRocks.

Inverted index inogona kuitwa uchishandisa LevelDB. Kuzviita sei? Isu tinochengetedza sekiyi label=value. Uye kukosha ndiyo identifier yenguva yakatevedzana apo vaviri varipo label=value.

Kana tine nguva dzakawanda dzakatevedzana nepeya yakapihwa label=value, ipapo pachava nemitsara yakawanda mune ino database ine kiyi imwechete uye yakasiyana timeseries_ids. Kuti uwane runyoro rwezvose timeseries_ids, izvo zvinotanga neizvi label=prefix, tinoita ongororo yemhando iyo database inogadziridzwa. Ndiko kuti, tinosarudza mitsetse yose inotanga label=prefix uye uwane zvinodiwa timeseries_ids.

Enda optimizations muVictoriaMetrics. Alexander Valyalkin

Heino muenzaniso wekuita wezvaizotaridzika muGo. Tine index inverted. Iyi ndiyo LevelDB.

Basa racho rakafanana nerekuita zvisina basa. Inodzokorora kushandiswa kusina maturo kunenge mutsara nemutsara. Chinhu chete ndechekuti pane kutendeukira kune map tinowana inverted index. Isu tinowana ese kukosha kwekutanga label=value. Zvadaro tinoenda kuburikidza nezvose zvakasara zviviri label=value uye utore seti dzinoenderana dzemetricIDs kwavari. Tinobva tawana mharadzano.

Enda optimizations muVictoriaMetrics. Alexander Valyalkin

Zvose zvinoratidzika kunge zvakanaka, asi pane zvipingamupinyi kune iyi mhinduro. VictoriaMetrics yakatanga kushandisa inverted index yakavakirwa paLevelDB. Asi pakupedzisira ndaifanira kurega.

Sei? Nekuti LevelDB inononoka pane yekusaziva kuita. Mukuita kusaziva, kupihwa kiyi yakapihwa, isu tinobva tangotora chidimbu chose metricIDs. Uku ndiko kukurumidza kushanda - chidimbu chose chagadzirira kushandiswa.

MuLevelDB, pese panodanwa basa GetValues unofanira kupinda mumitsara yose inotanga nayo label=value. Uye tora kukosha kwemutsara wega wega timeseries_ids. Zvekudaro timeseries_ids unganidza chidimbu cheizvi timeseries_ids. Zviripachena, izvi zvinononoka pane kungowana mepu yenguva dzose nekiyi.

Chechipiri chinokanganisa ndechekuti LevelDB yakanyorwa muC. Kudana C mabasa kubva kuGo hakusi kukurumidza. Zvinotora mazana ema nanoseconds. Izvi hazvina kukurumidza kwazvo, nekuti zvichienzaniswa neyenguva dzose basa rekufona rakanyorwa mugo, rinotora 1-5 nanoseconds, mutsauko mukuita makumi enguva. KuVictoriaMetrics ichi chaive chikanganiso chinouraya :)

Enda optimizations muVictoriaMetrics. Alexander Valyalkin

Saka ndakanyora zvangu kushandisa inverted index. Iye akamudana mergeset.

Mergeset yakavakirwa paMergeTree data chimiro. Iyi data data yakakweretwa kubva kuClickHouse. Zviripachena, mergeset inofanirwa kuvandudzwa kutsvaga nekukurumidza timeseries_ids maererano nekiyi yakapihwa. Mergeset yakanyorwa zvachose muGo. Unogona kuona VictoriaMetrics masosi paGitHub. Kuitwa kwe mergeset kuri mufolda /lib/mergeset. Unogona kuedza kufunga kuti chii chiri kuitika ipapo.

Iyo mergeset API yakafanana zvakanyanya neLevelDB uye RocksDB. Ndiko kuti, inokubvumira kukurumidza kuchengetedza zvinyorwa zvitsva ipapo uye nekukurumidza kusarudza marekodhi neakapihwa prefix.

Enda optimizations muVictoriaMetrics. Alexander Valyalkin

Tichazotaura pamusoro pekuipa kwe mergeset gare gare. Iye zvino ngatitaure nezve matambudziko api akamuka neVictoriaMetrics mukugadzira pakuita inverted index.

Nei vakamuka?

Chikonzero chekutanga ndechekukwira kwechurn rate. Yakaturikirwa muchiRussian, iyi inogara ichichinja munhevedzano yenguva. Apa ndipo panopera nhevedzano yenguva uye nhevedzano itsva inotanga, kana kuti dzakawanda dzenguva itsva dzinotanga. Uye izvi zvinoitika kazhinji.

Chikonzero chechipiri ndiyo nhamba huru yenguva dzakatevedzana. Pakutanga, apo kutarisa kwaive kuwana mukurumbira, nhamba yenguva yakatevedzana yaive diki. Semuenzaniso, kune imwe neimwe komputa unofanirwa kutarisa CPU, ndangariro, network uye dhisiki mutoro. 4 nguva dzakatevedzana pakombiyuta. Ngatitii une zana makomputa uye mazana mana enguva akateedzana. Izvi zvishoma.

Nekufamba kwenguva, vanhu vakafunga kuti vaigona kuyera ruzivo rwakawanda. Semuenzaniso, kuyera mutoro usiri weiyo processor yese, asi zvakasiyana yega yega processor core. Kana iwe uine makumi mana e processor cores, saka une 40 nguva yakawanda nguva yekuyera processor mutoro.

Asi handizvo zvoga. Imwe neimwe processor musimboti inogona kuve yakati wandei nyika, senge isina basa, kana isina kuita. Uye zvakare shanda munzvimbo yevashandisi, shanda munzvimbo yekernel nedzimwe nyika. Uye imwe neimwe mamiriro akadai anogona zvakare kuyerwa seyakasiyana nguva inoteedzana. Izvi zvinowedzera huwandu hwemitsara ne7-8 nguva.

Kubva pane imwe metric takawana 40 x 8 = 320 metrics pakombiyuta imwe chete. Wanza nezana, tinowana 100 pachinzvimbo chemazana mana.

Ipapo Kubernetes akauya. Uye zvakatonyanya kuipa nekuti Kubernetes inogona kugamuchira akawanda akasiyana masevhisi. Sevhisi yega yega muKubernetes ine akawanda pods. Uye izvi zvose zvinoda kuongororwa. Pamusoro pezvo, isu tine nguva dzose kutumirwa kweshanduro itsva dzemasevhisi ako. Kune yega yega vhezheni itsva, nyowani nguva inoteedzana inofanirwa kugadzirwa. Somugumisiro, nhamba yezvikamu zvenguva inokura zvakanyanya uye isu takatarisana nechinetso chenhamba yakawanda yenguva, iyo inonzi high-cardinality. VictoriaMetrics inobata nayo zvakabudirira kana ichienzaniswa nedzimwe nguva dhatabhesi.

Enda optimizations muVictoriaMetrics. Alexander Valyalkin

Ngatitarisei zvakanyanya kune yakakwira churn rate. Chii chinokonzera kuwanda kwechurn rate mukugadzirwa? Nekuti zvimwe zvirevo zvemavara nema tag zviri kuramba zvichichinja.

Semuenzaniso, tora Kubernetes, iyo ine pfungwa deployment, kureva kana shanduro itsva yechishandiso chako yaburitswa. Nechimwe chikonzero, ivo vanogadzira Kubernetes vakasarudza kuwedzera iyo id yekutumira kune iyo label.

Izvi zvakaguma nei? Uyezve, nekutumirwa kutsva kwega kwega, ese echinyakare akateedzana anovhiringwa, uye pachinzvimbo chavo, nyowani yenguva inoteedzana inotanga neiyo nyowani kukosha. deployment_id. Panogona kuva nemazana ezviuru uye kunyange mamiriyoni emitsara yakadaro.

Chinhu chakakosha pane zvese izvi ndechekuti huwandu hwese hwenguva inokura, asi iyo nhamba yenguva yakatevedzana iyo ikozvino inoshanda uye kugamuchira data inoramba iripo. Nyika iyi inonzi high churn rate.

Dambudziko guru rekukwira kwechurn rate ndere kuve nechokwadi chenguva dzose yekutsvaga yekumhanyisa kwese kutevedzana kweseti yakapihwa seti yemazita pane imwe nguva yenguva. Kazhinji iyi ndiyo nguva yenguva yeawa yekupedzisira kana zuva rekupedzisira.

Enda optimizations muVictoriaMetrics. Alexander Valyalkin

Nzira yekugadzirisa sei dambudziko iri? Heino sarudzo yekutanga. Uku ndiko kupatsanura index inverted kuita zvikamu zvakazvimirira nekufamba kwenguva. Ndiko kuti, imwe nguva inopfuura, tinopedza kushanda neino inverted index. Uye gadzira nyowani inverted index. Imwe nguva yenguva inopfuura, tinogadzira imwe uye imwe.

Uye kana tichiita sampling kubva kune aya inverted indices, tinowana seti ye inverted indices inowira mukati menguva yakapihwa. Uye, maererano, isu tinosarudza id yenguva yakatevedzana kubva ipapo.

Izvi zvinochengetedza zviwanikwa nekuti isu hatifanirwe kutarisa zvikamu zvisingawire mukati menguva yakapihwa. Ndiko kuti, kazhinji, kana tikasarudza data yeawa yekupedzisira, saka yenguva yapfuura tinodarika mibvunzo.

Enda optimizations muVictoriaMetrics. Alexander Valyalkin

Pane imwe sarudzo yekugadzirisa dambudziko iri. Izvi ndezvekuchengetera zuva rega rega runyoro rwakasiyana rwemaID enguva dzakatevedzana zvakaitika pazuva iro.

Chakanakira mhinduro iyi pamusoro pemhinduro yapfuura ndechekuti isu hatidzokorore ruzivo rwenguva rusinganyangarika nekufamba kwenguva. Vanogara varipo uye havashanduki.

Izvo zvisingabatsiri ndezvekuti mhinduro yakadaro yakanyanya kuoma kuita uye yakanyanya kuoma kugadzirisa. Uye VictoriaMetrics yakasarudza iyi mhinduro. Izvi ndizvo zvakaitika munhoroondo. Iyi mhinduro inoitawo zvakanaka kana ichienzaniswa neyekare. Nekuti iyi mhinduro haina kuitwa nekuda kwekuti zvinofanirwa kudzokorora dhata muchikamu chega chega chenguva dzakateedzana dzisingashanduke, i.e. dzisinganyangarike nekufamba kwenguva. VictoriaMetrics yainyanya kugadziridzwa dhisiki nzvimbo yekushandisa, uye kuitisa kwekutanga kwakaita kuti disk nzvimbo iwedzere. Asi kushandiswa uku kwakanyatsokodzera kuderedza dhisiki nzvimbo yekushandisa, saka yakasarudzwa.

Ndaifanira kumurwisa. Kurwira kwaive kwekuti mukuita uku uchiri kuda kusarudza nhamba yakakura kwazvo timeseries_ids yedata pane iyo inverted index yapatsanurwa nguva.

Enda optimizations muVictoriaMetrics. Alexander Valyalkin

Takagadzirisa sei dambudziko iri? Isu takazvigadzirisa nenzira yepakutanga - nekuchengetedza akati wandei akateedzana identifiers mune yega yega inverted index yekupinda pane imwe identifier. Kureva kuti tine kiyi label=value, iyo inoitika munguva dzese dzakateedzana. Uye zvino tinochengetedza akati wandei timeseries_ids mune imwe yekupinda.

Heino muenzaniso. Pakutanga taive neN, asi ikozvino tine imwe yekupinda iyo prefix yakafanana nemamwe ese. Kune yakambopinda, kukosha kune ese maid akateedzera nguva.

Izvi zvakaita kuti zvikwanise kuwedzera kumhanya kwekutarisa kweiyo inverted index kusvika kagumi. Uye zvakatibvumira kuderedza kushandiswa kwekuyeuka kune cache, nokuti ikozvino tinochengeta tambo label=value kamwe chete mu cache pamwe N nguva. Uye mutsara uyu unogona kunge wakakura kana ukachengeta mitsara mirefu mumatagi ako uye mavara, ayo Kubernetes anofarira kusunda ipapo.

Enda optimizations muVictoriaMetrics. Alexander Valyalkin

Imwe sarudzo yekumhanyisa kutsvaga pane inverted index is sharding. Kugadzira akati wandei inverted indexes pane imwe uye kugova data pakati pavo nekiyi. Iyi isethi key=value steam. Ndokunge, isu tinowana akati wandei akazvimirira inverted indexes, ayo isu tinogona kubvunza mukufanana pane akati wandei processor. Kushandiswa kwekare kunongobvumira kushanda mune imwechete-processor modhi, kureva, kuongorora data pane imwechete musimboti. Iyi mhinduro inokutendera kuti utarise data pane akati wandei macores kamwechete, seClickHouse inoda kuita. Izvi ndizvo zvatinoronga kuita.

Enda optimizations muVictoriaMetrics. Alexander Valyalkin

Zvino ngatidzokerei kumakwai edu - kune mharadzano basa timeseries_ids. Ngationei kuti ndezvipi zvekushandisa zvingave zviripo. Basa iri rinokubvumira kuwana timeseries_ids seti yakapihwa label=value.

Enda optimizations muVictoriaMetrics. Alexander Valyalkin

Sarudzo yekutanga ndeyekuita zvisina musoro. Zvishwe zviviri nematendere. Pano tinowana kushandiswa kwemaitiro intersectInts zvidimbu zviviri - a ΠΈ b. Pakubuda, inofanira kutidzosera kwatiri mharadzano yezvimedu izvi.

Kuitwa kusina maturo kunotaridzika seizvi. Isu tinodzokorora pamusoro pezvese kukosha kubva pachimedu a, mukati meichi loop tinofamba nepakati pese kukosha kwechimedu b. Uye tinozvienzanisa. Kana dzakafanana, saka tawana mharadzano. Uye chengeta mukati result.

Enda optimizations muVictoriaMetrics. Alexander Valyalkin

Ndezvipi zvisingabatsiri? Quadratic yakaoma ndiyo dhizaini yayo huru. Semuyenzaniso, kana zvimiro zvako zvimedu a ΠΈ b miriyoni imwe panguva, ipapo basa iri harizombodzoki mhinduro kwauri. Nekuti ichada kuita imwe trillion iterations, iyo yakawanda kunyange kumakomputa emazuva ano.

Enda optimizations muVictoriaMetrics. Alexander Valyalkin

Kuitwa kwechipiri kunobva pamepu. Isu tinogadzira mepu. Isu tinoisa kukosha kwese kubva muchidimbu mune iyi mepu a. Zvadaro tinoenda nepakati muchidimbu chakasiyana b. Uye isu tinotarisa kana kukosha uku kuri kubva kuchidimbu b mumepu. Kana iripo, wobva wawedzera kune mhedzisiro.

Enda optimizations muVictoriaMetrics. Alexander Valyalkin

Ndezvipi zvinobatsira? Chakanakira ndechekuti pane mutsara wakaoma. Kureva kuti, basa racho richaita nekukurumidza zvakanyanya kune akakura zvimedu. Kune miriyoni-saizi chimedu, basa iri richaita mu 2 miriyoni iterations, kusiyana netrillion iterations yebasa rekare.

Izvo zvakaderera ndezvekuti basa iri rinoda ndangariro zhinji kugadzira mepu iyi.

Yechipiri drawback ndiyo yakakura pamusoro pehashing. Iyi drawback haisi pachena. Uye kwatiri zvaisanyanya kujeka, saka pakutanga muVictoriaMetrics kuita kwemharadzano kwaive kuburikidza nemepu. Asi zvadaro profiling yakaratidza kuti iyo huru processor nguva inopedzwa kunyora kumepu uye kutarisa kuvepo kwekukosha mumepu iyi.

Nei nguva yeCPU ichiraswa munzvimbo idzi? Nekuti Go anoita hashing oparesheni pamitsara iyi. Kureva kuti, inoverengera hashi yekiyi kuitira kuti wozoiwana pane yakapihwa index muHashMap. Iyo hashi yekuverenga oparesheni inopedzwa mumakumi ema nanoseconds. Izvi zvinononoka kuVictoriaMetrics.

Enda optimizations muVictoriaMetrics. Alexander Valyalkin

Ndakafunga kuita bitset yakagadziridzwa yakanangana nenyaya iyi. Izvi ndizvo zvinoita mharadzano yezvidimbu zviviri zvino. Pano tinogadzira bitset. Isu tinowedzera zvinhu kubva pachikamu chekutanga kwairi. Zvadaro tinotarisa kuvapo kwezvinhu izvi muchikamu chechipiri. Uye vawedzere kune chigumisiro. Ndiko kuti, inenge isina kusiyana nemuenzaniso wekare. Chinhu chega apa ndechekuti isu takatsiva kuwana mepu nemaitiro ekuita add ΠΈ has.

Enda optimizations muVictoriaMetrics. Alexander Valyalkin

Pakutanga kuona, zvinoita sekunge izvi zvinofanirwa kushanda zvishoma, kana kare mepu yakajairwa yaishandiswa ipapo, uyezve mamwe mamwe mabasa anodanwa, asi profiling inoratidza kuti chinhu ichi chinoshanda ka10 nekukurumidza kupfuura mepu yakajairwa munyaya yeVictoriaMetrics.

Mukuwedzera, inoshandisa ndangariro shoma kana ichienzaniswa nekuita mepu. Nekuti tiri kuchengeta mabits pano pachinzvimbo cheeight-byte values.

Kuipa kwekuita uku ndiko kuti hazvisi pachena, kwete zviduku.

Chimwe chinokanganisa icho vazhinji vangasacherechedza ndechekuti kuita uku kunogona kusashanda zvakanaka mune dzimwe nguva. Kureva kuti, yakagadziridzwa kune chaiyo kesi, kune iyi kesi yekusangana kweVictoriaMetrics nguva yakatevedzana maID. Izvi hazvireve kuti yakakodzera kune ese kesi. Kana ikashandiswa zvisizvo, isu hatizowana kuwedzera kwekuita, asi kunze kwekurangarira kukanganisa uye kuderera mukuita.

Enda optimizations muVictoriaMetrics. Alexander Valyalkin

Ngatitarisei kushandiswa kwechimiro ichi. Kana iwe uchida kutarisa, iri muVictoriaMetrics masosi, mune folda lib/uint64set. Iyo yakagadziridzwa yakanangana neVictoriaMetrics kesi, kupi timeseries_id ndeye 64-bit kukosha, uko yekutanga 32 bhiti inongogara uye chete yekupedzisira 32 bits inoshanduka.

Iyi data data haina kuchengetwa pa diski, inongoshanda mundangariro.

Enda optimizations muVictoriaMetrics. Alexander Valyalkin

Heino API yayo. Hazvina kunyanya kuoma. Iyo API yakagadzirirwa zvakananga kune chaiyo muenzaniso wekushandisa VictoriaMetrics. Ndiko kuti, hapana mabasa asina basa pano. Heano mabasa anoshandiswa zvakajeka neVictoriaMetrics.

Pane mabasa add, iyo inowedzera tsika itsva. Pane basa has, iyo inotarisa mitsva mitsva. Uye pane basa del, iyo inobvisa maitiro. Pane basa remubatsiri len, iyo inodzorera hukuru hweseti. Function clone clones zvakawanda. Uye basa appendto inoshandura seti iyi kuita chidimbu timeseries_ids.

Enda optimizations muVictoriaMetrics. Alexander Valyalkin

Izvi ndizvo zvinoita kuitwa kweichi data chimiro. set ine zvinhu zviviri:

  • ItemsCount inzvimbo yekubatsira kukurumidza kudzosa nhamba yezvinhu museti. Zvingakwanisika kuita pasina iyi yebetsero ndima, asi yaifanira kuwedzerwa pano nekuti VictoriaMetrics inowanzobvunza kureba kwebitset mumaalgorithms ayo.

  • Munda wechipiri ndiwo buckets. Ichi chikamu kubva kune chimiro bucket32. Chimiro chega chega chinochengeta hi munda. Aya ndiwo epamusoro 32 bits. Uye zvidimbu zviviri - b16his ΠΈ buckets kubva bucket16 zvimiro.

Iyo yepamusoro 16 bits yechikamu chechipiri cheiyo 64-bit chimiro chakachengetwa pano. Uye pano mabhiti akachengeterwa epasi 16 mabhiti ega rega rega.

Bucket64 inoumbwa nehurongwa uint64. Hurefu hunoverengerwa pachishandiswa maconstants aya. Mune imwe bucket16 huwandu hunogona kuchengetwa 2^16=65536 zvishoma. Kana ukakamura izvi ne8, zvino 8 kilobytes. Kana ukagovanisa na8 zvakare, i1000 uint64 zvinoreva. Ndizvozvo Bucket16 - iyi ndiyo yedu 8-kilobyte chimiro.

Enda optimizations muVictoriaMetrics. Alexander Valyalkin

Ngatitarisei kuti imwe yenzira dzeiyo chimiro chekuwedzera kukosha hutsva inoitwa sei.

Zvose zvinotanga uint64 zvinoreva. Isu tinoverenga iyo yepamusoro 32 bits, isu tinoverenga yakaderera 32 bits. Ngatipfuure nemuzvinhu zvese buckets. Isu tinoenzanisa epamusoro 32 bits mubhaketi rega rega neukoshi huri kuwedzerwa. Uye kana vakaenderana, tobva tadaidza basa racho add muchimiro b32 buckets. Uye wedzera ezasi 32 bits ipapo. Uye kana yakadzoka true, zvino izvi zvinoreva kuti takawedzera kukosha kwakadaro ikoko uye hatina kukosha kwakadaro. Kana yadzoka false, ipapo revo yakadaro yakanga yatovapo. Zvadaro tinowedzera nhamba yezvinhu muhutano.

Kana isu tisina kuwana yaunoda bucket neinodiwa hi-value, tobva tadaidza basa racho addAlloc, iyo ichabudisa imwe itsva bucket, kuwedzera kune chimiro chebhakiti.

Enda optimizations muVictoriaMetrics. Alexander Valyalkin

Uku ndiko kushandiswa kwebasa racho b32.add. Izvo zvakafanana nekushandiswa kwekare. Isu tinoverenga akanyanya kukosha 16 mabhiti, mashoma akakosha 16 bits.

Zvadaro tinoenda kuburikidza nezvose zvepamusoro 16 bits. Tinowana machisi. Uye kana paine mutambo, tinodaidza nzira yekuwedzera, yatichafunga pane inotevera peji bucket16.

Enda optimizations muVictoriaMetrics. Alexander Valyalkin

Uye heino nhanho yakaderera, iyo inofanirwa kuvandudzwa zvakanyanya sezvinobvira. Isu tinoverengera uint64 id kukosha muchidimbu chidimbu uye zvakare bitmask. Iyi mask yeiyo yakapihwa 64-bit kukosha, iyo inogona kushandiswa kutarisa kuvepo kweichi bhiti, kana kuimisa. Isu tinotarisa kuti tione kana bhiti iri rakagadzikwa uye nekurimisa, uye kudzorera kuvapo. Uku ndiko kuita kwedu, kwakatitendera kuti tikurumidze kushanda kweiyo intersecting ids yenguva dzakateerana nekagumi kana tichienzanisa nemamepu akajairwa.

Enda optimizations muVictoriaMetrics. Alexander Valyalkin

Pamusoro peiyo optimization, VictoriaMetrics ine zvimwe zvakawanda zvinogonesa. Mazhinji eaya magadzirirwo akawedzerwa nechikonzero, asi mushure mekunyora kodhi mukugadzira.

Uyu ndiwo mutemo mukuru wekugadzirisa - usawedzera optimization uchifungidzira kuti pachave nebhodhoro pano, nekuti zvinogona kuzoitika kuti hapazove nebhodhoro ipapo. Optimization kazhinji inoderedza kunaka kwekodhi. Naizvozvo, zvakakodzera optimization chete mushure mekunyora uye zviri nani mukugadzira, kuitira kuti iyi ive chaiyo data. Kana paine munhu anofarira, unogona kutarisa kuVictoriaMetrics sosi kodhi uye kuongorora mamwe magadzirirwo aripo.

Enda optimizations muVictoriaMetrics. Alexander Valyalkin

Ndine mubvunzo nezve bitset. Zvakanyanya kufanana neC ++ vector bool kuita, yakagadziridzwa bitset. Wakatora kuitiswa kubva ipapo?

Kwete, kwete kubva ipapo. Pakuita iyi bitset, ndaitungamirwa neruzivo rwechimiro cheiyi ids timeseries, iyo inoshandiswa muVictoriaMetrics. Uye chimiro chavo ndechekuti ekumusoro 32 bits anongogara akamira. Iyo yakaderera 32 bits inogona kuchinja. Iyo yakaderera iyo bit, iyo kazhinji inogona kuchinja. Naizvozvo, kuita uku kwakanyatso kugadziridzwa kune iyi data chimiro. Iyo C ++ kuita, sekuziva kwangu, yakagadziridzwa kune iyo general kesi. Kana iwe ukagonesa iyo general kesi, izvi zvinoreva kuti haizove yakanyanya kunaka kune chaiyo kesi.

Ini zvakare ndinokupa zano kuti utarise mushumo waAlexey Milovid. Anenge mwedzi wapfuura, akataura nezve optimization muClickHouse kune chaiwo hunyanzvi. Anongotaura kuti mune zvakajairika, kuisirwa kweC ++ kana kumwe kumwe kuita kwakagadzirirwa kushanda zvakanaka paavhareji muchipatara. Inogona kuita zvakaipisisa kupfuura kuita kweruzivo-chakanangana nekuita sekwedu, kwatinoziva kuti epamusoro 32 bits anowanzogara.

Ndine mubvunzo wechipiri. Ndeupi musiyano wakakosha kubva kuInfluxDB?

Pane zvakawanda zvakakosha zvakasiyana. Panyaya yekuita uye kushandiswa kwekuyeuka, InfluxDB mumaedzo inoratidza ka10 nguva yakawanda yekuyeuka kushandiswa kwepamusoro kadhiini nguva yakatevedzana, kana uine yakawanda, semuenzaniso, mamirioni. Semuenzaniso, VictoriaMetrics inoshandisa 1 GB pamiriyoni inoshanda mitsara, nepo InfluxDB ichidya gumi GB. Uye ndiwo musiyano mukuru.

Musiyano wechipiri wakakosha ndewekuti InfluxDB ine mitauro isinganzwisisike yemubvunzo - Flux uye InfluxQL. Iwo haana kunyanya kunyanyo batsira pakushanda nenguva dzakatevedzana zvichienzaniswa PromQL, iyo inotsigirwa neVictoriaMetrics. PromQL mutauro wekubvunza kubva kuPrometheus.

Uye mumwe mutsauko ndewekuti InfluxDB ine isinganzwisisike data modhi, uko mutsara wega wega unogona kuchengeta akati wandei minda ine akasiyana ma tag. Mitsetse iyi inopatsanurwazve kuita matafura akasiyana. Aya mamwe matambudziko anoomesa rinotevera basa neiyi dhatabhesi. Zvakaoma kutsigira uye kunzwisisa.

MuVictoriaMetrics zvese zviri nyore. Ikoko, imwe neimwe yenguva yakatevedzana yakakosha-kukosha. Kukosha iboka rezvibodzwa - (timestamp, value), uye kiyi ndiyo set label=value. Hapana kupatsanurwa pakati peminda nezviyero. Zvinokutendera kuti usarudze chero data wobva wasanganisa, wedzera, bvisa, wedzera, patsanura, kusiyana neInfluxDB apo kuverenga pakati pemitsara yakasiyana kusati kwaitwa sekuziva kwangu. Kunyangwe zvikaitwa, zvakaoma, unofanirwa kunyora kodhi yakawanda.

Ndine mubvunzo unojekesa. Ndanzwisisa here kuti pane imwe mhando yedambudziko rawakataura nezvaro, kuti iyi inverted index haikodzeri mundangariro, saka pane kupatsanura ipapo?

Chekutanga, ini ndakaratidza kusashanda kweiyo inverted index pane yakajairwa Go mepu. Kuitwa uku hakuna kukodzera kune dhatabhesi nekuti iyi inverted index haina kuchengetwa ku diski, uye dhatabhesi inofanirwa kuchengetedza ku diski kuitira kuti iyi data irambe iripo panotangazve. Mukuita uku, paunotangazve chishandiso, index yako yakadzora inopera. Uye iwe ucharasikirwa nekuwana kune data rese nekuti hauzokwanise kuiwana.

Mhoro! Ndatenda nemushumo! Ini ndinonzi Pavel. Ini ndinobva kuWildberries. Ndine mibvunzo mishoma kwamuri. Mubvunzo wekutanga. Iwe unofunga kuti dai wakasarudza imwe musimboti paunenge uchivaka dhizaini yechishandiso chako uye nekugovanisa data nekufamba kwenguva, saka pamwe ungadai wakakwanisa kuyambuka data paunenge uchitsvaga, zvichibva chete pakuti chikamu chimwe chete chine data reimwe. nguva yenguva, ndiko kuti, munguva imwe chete uye hauzofaniri kunetseka pamusoro pekuti zvidimbu zvako zvakapararira zvakasiyana? Mubvunzo nhamba 2 - sezvo uri kushandisa algorithm yakafanana nebitset nezvimwe zvese, saka pamwe wakaedza kushandisa processor mirairo? Zvimwe wakamboedza optimizations dzakadaro?

Ndichapindura wechipiri ipapo ipapo. Hatisati tasvika panguva iyoyo. Asi kana zvakakodzera, tichasvika ikoko. Uye wekutanga, waiva mubvunzo upi?

Makakurukura zviitiko zviviri. Uye ivo vakati vakasarudza yechipiri nekuita kwakaoma. Uye ivo havana kuda yekutanga, iyo data inogovaniswa nenguva.

Ehe. Muchiitiko chekutanga, huwandu hwehuwandu hweindex hunenge hwakakura, nekuti muchikamu chega chega taizofanira kuchengetedza data rakadzokororwa kune idzo nguva dzakatevedzana dzinoenderera nepakati peizvi zvikamu. Uye kana nguva yako yakatevedzana churn rate iri diki, i.e. yakafanana yakatevedzana inogara ichishandiswa, saka mune yekutanga kesi isu taizorasikirwa zvakanyanya muhuwandu hwedhisiki nzvimbo inogarwa kana ichienzaniswa neyechipiri kesi.

Uye saka - hongu, kugovera nguva isarudzo yakanaka. Prometheus anoshandisa. Asi Prometheus ane imwe drawback. Kana uchibatanidza zvidimbu zve data, inoda kuchengeta mundangariro meta ruzivo kune ese mavara uye nguva. Naizvozvo, kana zvimedu zve data izvo zvinobatanidza zvakakura, saka kushandiswa kwendangariro kunowedzera zvakanyanya panguva yekubatanidza, kusiyana neVictoriaMetrics. Kana uchibatanidza, VictoriaMetrics haidye ndangariro zvachose; mashoma makirobhayiti chete anodyiwa, zvisinei nehukuru hweakasanganiswa zvidimbu zve data.

Iyo algorithm yauri kushandisa inoshandisa ndangariro. Inomaka ma tag enguva dzakatevedzana ane zvakakosha. Uye nenzira iyi iwe unotarisa kuvepo kwepaviri mune imwe dhata array uye mune imwe. Uye iwe unonzwisisa kana mharadzano yakaitika kana kwete. Kazhinji, dhatabhesi dzinoshandisa macursors uye iterators inochengeta izvo zvazvino uye inomhanya kuburikidza neyakarongwa data nekuda kwekuoma kuri nyore kwekuita uku.

Nei tisingashandisi macursors kuyambuka data?

Hongu.

Isu tinochengeta mitsara yakarongwa muLevelDB kana mergeset. Tinogona kufambisa chitubu uye kuwana mharadzano. Nei tisingazvishandise? Nekuti inonoka. Nekuti ma cursors anoreva kuti iwe unofanirwa kufonera basa remutsetse wega wega. A function call ndeye 5 nanoseconds. Uye kana iwe uine 100 mitsetse, zvino zvinozoitika kuti isu tinopedza hafu yesekondi tichingofonera basa.

Pane chinhu chakadaro, hongu. Uye mubvunzo wangu wekupedzisira. Mubvunzo unganzwika seusinganzwisisike. Sei zvisingabviri kuverenga ese anodiwa akaunganidzwa panguva iyo data yasvika uye nekuichengeta mune inodiwa fomu? Sei uchichengetedza mavhoriyamu akakura mune mamwe masisitimu akaita seVictoriaMetrics, ClickHouse, nezvimwe, uye wobva wapedza nguva yakawanda pazviri?

Ndichapa muenzaniso kuti zvijeke. Ngatimboti kadiki kadiki speedometer inoshanda sei? Inorekodha nhambwe yawakafamba, nguva dzese ichiwedzera kune imwe kukosha, uye yechipiri - nguva. Uye kupatsanura. Uye inowana avhareji yekumhanya. Iwe unogona kuita pamusoro pechinhu chimwe chete. Wedzera zvese zvinodikanwa chokwadi pane nhunzi.

Zvakanaka, ndinonzwisisa mubvunzo. Muenzaniso wako une nzvimbo yawo. Kana iwe uchiziva izvo zvakaunganidzwa zvaunoda, saka iyi ndiyo yakanakisa kuita. Asi dambudziko nderekuti vanhu vanochengetedza ma metrics aya, imwe data muClickHouse uye havasati vaziva kuti vanozounganidza sei nekuzvisefa mune ramangwana, saka vanofanirwa kuchengetedza data rese rakasviba. Asi kana iwe uchiziva kuti iwe unofanirwa kuverenga chimwe chinhu muavhareji, saka wadii kuverengera panzvimbo yekuchengeta boka remhando dzakasvibirira ipapo? Asi izvi chete kana iwe uchiziva chaizvo zvaunoda.

Nenzira, dhatabhesi yekuchengetedza nguva dzakateedzana inotsigira kuverenga kweaggregates. Somuenzaniso, Prometheus inotsigira kurekodha mitemo. Kureva, izvi zvinogona kuitwa kana iwe uchiziva kuti ndeapi mayuniti aunozoda. VictoriaMetrics haisati yave neizvi, asi kazhinji inotungamirwa naPrometheus, umo izvi zvinogona kuitwa mumitemo yekukodha.

Semuenzaniso, mubasa rangu rekare ndaifanira kuverenga nhamba yezviitiko muhwindo rinotsvedza pamusoro peawa yekupedzisira. Dambudziko nderekuti ndaifanira kuita tsika yekuita muGo, kureva sevhisi yekuverenga chinhu ichi. Iyi sevhisi yakazopedzisira isiri yenhando, nekuti yakaoma kuverenga. Kuitwa kwacho kunogona kuve kwakapusa kana iwe uchida kuverenga mamwe akaunganidzwa panguva yakatarwa nguva. Kana iwe uchida kuverenga zviitiko muhwindo rinotsvedza, saka hazvisi nyore sezvazvinoratidzika. Ini ndinofunga izvi hazvisati zvaitwa muClickHouse kana mutimeseries dhatabhesi, nekuti zvakaoma kuita.

Uye mumwe mubvunzo zvakare. Takanga tichingotaura nezve avhareji, uye ndakarangarira kuti paimbova nechinhu chakadai seGraphite ine Carbon backend. Uye aiziva kutetepa data rekare, ndiko kuti, kusiya imwe poindi paminiti, imwe poindi paawa, etc. Muchidimbu, izvi zvakakunakira kana tichida data rakasvibira, tichitaura, kwemwedzi, uye zvimwe zvese zvinogona kutetepa . Asi Prometheus neVictoriaMetrics havatsigire basa iri. Yakarongwa kuitsigira here? Kana zvisina kudaro, nei?

Ndatenda nemubvunzo. Vashandisi vedu vanobvunza uyu mubvunzo nguva nenguva. Vanobvunza kuti tichawedzera rinhi rutsigiro rwekudzikisa sampuli. Pane matambudziko akawanda pano. Chekutanga, wese mushandisi anonzwisisa downsampling chimwe chinhu chakasiyana: mumwe munhu anoda kuwana chero nzvimbo yekupokana pane imwe nguva yakapihwa, mumwe munhu anoda huwandu, hushoma, hwepakati kukosha. Kana akawanda masisitimu akanyora data kune yako dhatabhesi, saka haugone kuisanganisa pamwe chete. Zvinogona kuitika kuti imwe neimwe system inoda kuonda kwakasiyana. Uye izvi zvakaoma kuita.

Uye chinhu chechipiri ndechekuti VictoriaMetrics, seClickHouse, yakagadziridzwa kuti ishande nemavhoriyamu akakura e data mbishi, saka inogona kufoshora bhiriyoni mitsetse isingasviki sekondi kana uine akawanda macores musystem yako. Kuongorora nguva dzakateerana mapoinzi muVictoriaMetrics - 50 mapoinzi pasekondi pamusimboti. Uye kuita uku kunoyera kumacores aripo. Ndokunge, kana uine makumi maviri cores, semuenzaniso, iwe unozotarisa bhiriyoni mapoinzi pasekondi. Uye ichi chivakwa cheVictoriaMetrics uye ClickHouse chinoderedza kudiwa kwekudzikisa.

Chimwe chinhu ndechekuti VictoriaMetrics inonyatso kumanikidza iyi data. Kutsikirira paavhareji mukugadzirwa kunobva pa0,4 kusvika ku0,8 bytes poindi. Imwe neimwe poindi ndeye timestamp + kukosha. Uye inomanikidzwa kuita isingasviki imwe byte paavhareji.

Sergey. Ndine mubvunzo. Ndeipi iyo shoma yekurekodha nguva quantum?

Imwe millisecond. Isu nguva pfupi yadarika takaita hurukuro nevamwe vanogadzira dhatabhesi nguva. Yenguva yavo shoma sekondi imwe. Uye muGraphite, semuenzaniso, zvakare sekondi imwe. MuOpenTSDB iri zvakare sekondi imwe. InfluxDB ine nanosecond chaiyo. MuVictoriaMetrics imillisecond imwe, nekuti muPrometheus imillisecond imwe. Uye VictoriaMetrics yakatanga kugadzirwa seyekuchengetera kure kwePrometheus. Asi ikozvino inogona kuchengetedza data kubva kune mamwe masisitimu.

Munhu wandakataura naye anoti ane huchokwadi hwechipiri-kusvika-chechipiri - zvakavakwanira nekuti zvinoenderana nerudzi rwedata riri kuchengetwa mudura renguva. Kana iyi iri data yeDevOps kana data kubva kune zvivakwa, kwaunoiunganidza panguva dzemasekondi makumi matatu, paminiti, ipapo kurongeka kwechipiri kwakaringana, hapana chaunoda zvishoma. Uye kana iwe ukaunganidza iyi data kubva kune yakakwirira frequency yekutengesa masisitimu, saka iwe unoda nanosecond kurongeka.

Millisecond accuracy muVictoriaMetrics zvakare inokodzera iyo DevOps kesi, uye inogona kuve yakakodzera kune mazhinji emakesi andakataura pakutanga kwemushumo. Chinhu chega icho chingave chisina kukodzera ndeye yakakwirira frequency yekutengesa masisitimu.

Ndatenda! Uye mumwe mubvunzo. Chii chinonzi kuenderana muPromQL?

Yakazara kumashure kuenderana. VictoriaMetrics inotsigira zvizere PromQL. Uye zvakare, inowedzera yakawedzera mashandiro epamberi muPromQL, inonzi MetricsQL. Pane hurukuro paYouTube nezve iyi yakawedzerwa kushanda. Ndakataura paMonitoring Meetup muchirimo muSt.

Teregiramu chiteshi VictoriaMetrics.

Vashandisi vakanyoresa chete ndivo vanogona kutora chikamu muongororo. Nyorera mu, Munogamuchirwa.

Chii chiri kukumisa kubva kuchinjira kuVictoriaMetrics senge yako yenguva refu yekuchengetedza yePrometheus? (Nyora mumashoko, ini ndichawedzera kune vhoti))

  • 71,4%Ini handishandise Prometheus5

  • 28,6%Ndaisaziva nezve VictoriaMetrics2

7 vashandisi vakavhota. 12 vashandisi vakaramba.

Source: www.habr.com

Voeg