Lọ awọn iṣapeye ni VictoriaMetrics. Alexander Vallykin

Mo daba pe ki o ka iwe afọwọkọ ti ijabọ 2019 ti o pẹ nipasẹ Alexander Vallyalkin “Lọ awọn iṣapeye ni VictoriaMetrics”

VictoriaMetrics - DBMS iyara ati iwọn fun titoju ati sisẹ data ni irisi jara akoko (akoko igbasilẹ ati ṣeto awọn iye ti o ni ibamu si akoko yii, fun apẹẹrẹ, gba nipasẹ idibo igbakọọkan ti ipo awọn sensosi tabi ikojọpọ ti awọn metiriki).

Lọ awọn iṣapeye ni VictoriaMetrics. Alexander Vallykin

Eyi ni ọna asopọ si fidio ijabọ yii - https://youtu.be/MZ5P21j_HLE

Awọn ifaworanhan

Lọ awọn iṣapeye ni VictoriaMetrics. Alexander Vallykin

Sọ fun wa nipa ara rẹ. Emi ni Alexander Valyalkin. Nibi akọọlẹ GitHub mi. Mo ni itara nipa Go ati iṣapeye iṣẹ. Mo ti kowe kan pupo ti wulo ati ki o ko ki wulo ikawe. Wọn bẹrẹ pẹlu boya fast, tabi pẹlu quick ìpele.

Mo n ṣiṣẹ lọwọlọwọ lori VictoriaMetrics. Kini ati kini MO ṣe nibẹ? Emi yoo sọrọ nipa eyi ni igbejade yii.

Lọ awọn iṣapeye ni VictoriaMetrics. Alexander Vallykin

Ilana ti ijabọ naa jẹ bi atẹle:

  • Ni akọkọ, Emi yoo sọ fun ọ kini VictoriaMetrics jẹ.
  • Lẹhinna Emi yoo sọ fun ọ kini jara akoko jẹ.
  • Lẹhinna Emi yoo sọ fun ọ bi data jara akoko kan ṣe n ṣiṣẹ.
  • Nigbamii ti, Emi yoo sọ fun ọ nipa faaji data data: kini o ni ninu.
  • Ati lẹhinna jẹ ki a lọ siwaju si awọn iṣapeye ti VictoriaMetrics ni. Eyi jẹ iṣapeye fun atọka iyipada ati iṣapeye fun imuse bitset ni Go.

Lọ awọn iṣapeye ni VictoriaMetrics. Alexander Vallykin

Ṣe ẹnikẹni ninu awọn olugbo mọ kini VictoriaMetrics jẹ? Wow, ọpọlọpọ eniyan ti mọ tẹlẹ. O jẹ iroyin ti o dara. Fun awọn ti ko mọ, eyi jẹ data data jara akoko kan. O da lori faaji ClickHouse, lori diẹ ninu awọn alaye ti imuse ClickHouse. Fun apẹẹrẹ, lori bii: MergeTree, iṣiro afiwe lori gbogbo awọn ohun kohun ero isise ti o wa ati iṣapeye iṣẹ nipasẹ ṣiṣẹ lori awọn bulọọki data ti a gbe sinu kaṣe ero isise naa.

VictoriaMetrics n pese funmorawon data to dara ju awọn apoti isura infomesonu jara akoko miiran lọ.

O ṣe iwọn ni inaro - iyẹn ni, o le ṣafikun awọn ilana diẹ sii, Ramu diẹ sii lori kọnputa kan. VictoriaMetrics yoo lo awọn orisun to wa ni aṣeyọri ati pe yoo mu iṣelọpọ laini dara si.

VictoriaMetrics tun ṣe iwọn petele - iyẹn ni, o le ṣafikun awọn apa afikun si iṣupọ VictoriaMetrics, ati pe iṣẹ rẹ yoo pọ si ni laini.

Bi o ṣe gboju, VictoriaMetrics jẹ ibi ipamọ data ti o yara, nitori Emi ko le kọ awọn miiran. Ati pe o ti kọ ni Go, nitorinaa Mo n sọrọ nipa rẹ ni ipade yii.

Lọ awọn iṣapeye ni VictoriaMetrics. Alexander Vallykin

Tani o mọ kini jara akoko kan jẹ? O tun mọ ọpọlọpọ eniyan. A akoko jara jẹ kan lẹsẹsẹ ti orisii (timestamp, значение), ibi ti awọn orisii wọnyi ti wa ni lẹsẹsẹ nipasẹ akoko. Iye naa jẹ nọmba aaye lilefoofo - float64.

Awọn jara akoko kọọkan jẹ idanimọ ni iyasọtọ nipasẹ bọtini kan. Kini bọtini yi ni ninu? O ni eto ti ko ṣofo ti awọn orisii iye bọtini.

Eyi jẹ apẹẹrẹ ti jara akoko kan. Bọtini ti jara yii jẹ atokọ ti awọn orisii: __name__="cpu_usage" ni orukọ metric, instance="my-server" - Eyi ni kọnputa lori eyiti a ti gba metric yii, datacenter="us-east" - Eyi ni ile-iṣẹ data nibiti kọnputa yii wa.

A pari pẹlu orukọ jara akoko kan ti o ni awọn orisii iye-bọtini mẹta. Bọtini yi ni ibamu si atokọ ti awọn orisii (timestamp, value). t1, t3, t3, ..., tN - Iwọnyi jẹ awọn aami akoko, 10, 20, 12, ..., 15 - awọn iye ti o baamu. Eyi ni lilo Sipiyu ni akoko ti a fun fun jara ti a fun.

Lọ awọn iṣapeye ni VictoriaMetrics. Alexander Vallykin

Nibo ni a le lo jara akoko? Ṣe ẹnikẹni ni eyikeyi agutan?

  • Ni DevOps, o le wọn Sipiyu, Ramu, nẹtiwọki, rps, nọmba awọn aṣiṣe, ati be be lo.
  • IoT - a le wọn iwọn otutu, titẹ, awọn ipoidojuko geo ati nkan miiran.
  • Paapaa inawo - a le ṣe atẹle awọn idiyele fun gbogbo iru awọn ọja ati awọn owo nina.
  • Ni afikun, jara akoko le ṣee lo ni ibojuwo awọn ilana iṣelọpọ ni awọn ile-iṣelọpọ. A ni awọn olumulo ti o lo VictoriaMetrics lati ṣe atẹle awọn turbines afẹfẹ, fun awọn roboti.
  • Awọn jara akoko tun wulo fun gbigba alaye lati awọn sensọ ti awọn ẹrọ oriṣiriṣi. Fun apẹẹrẹ, fun ẹrọ kan; fun wiwọn titẹ taya; fun wiwọn iyara, ijinna; fun wiwọn agbara petirolu, ati bẹbẹ lọ.
  • Awọn jara akoko tun le ṣee lo lati ṣe atẹle ọkọ ofurufu. Ọkọ ofurufu kọọkan ni apoti dudu ti o gba jara akoko fun ọpọlọpọ awọn aye ti ilera ọkọ ofurufu naa. Awọn jara akoko ni a tun lo ni ile-iṣẹ aerospace.
  • Itọju ilera jẹ titẹ ẹjẹ, pulse, ati bẹbẹ lọ.

Awọn ohun elo diẹ sii le wa ti Mo gbagbe nipa rẹ, ṣugbọn Mo nireti pe o loye pe jara akoko ni a lo ni itara ni agbaye ode oni. Ati iwọn lilo wọn n dagba ni gbogbo ọdun.

Lọ awọn iṣapeye ni VictoriaMetrics. Alexander Vallykin

Kini idi ti o nilo aaye data jara akoko kan? Kilode ti o ko le lo aaye data ibatan deede lati tọju jara akoko bi?

Nitoripe jara akoko nigbagbogbo ni iye nla ti alaye, eyiti o nira lati fipamọ ati ilana ni awọn apoti isura infomesonu ti aṣa. Nitorinaa, awọn apoti isura infomesonu pataki fun jara akoko han. Awọn ipilẹ wọnyi ni ipamọ awọn aaye daradara (timestamp, value) pẹlu bọtini ti a fun. Wọn pese API kan fun kika data ti o fipamọ nipasẹ bọtini, nipasẹ bata-iye bọtini kan, tabi nipasẹ awọn orisii iye bọtini pupọ, tabi nipasẹ regexp. Fun apẹẹrẹ, o fẹ lati wa ẹru Sipiyu ti gbogbo awọn iṣẹ rẹ ni ile-iṣẹ data kan ni Amẹrika, lẹhinna o nilo lati lo ibeere afọwọṣe yii.

Ni deede awọn apoti isura infomesonu jara akoko pese awọn ede ibeere pataki nitori jara akoko SQL ko baamu daradara. Botilẹjẹpe awọn apoti isura infomesonu ti o ṣe atilẹyin SQL, ko dara pupọ. Awọn ede ibeere bii PromQL, InfluxQL, ṣàn, Q. Mo nireti pe ẹnikan ti gbọ o kere ju ọkan ninu awọn ede wọnyi. Ọpọlọpọ eniyan ti gbọ nipa PromQL. Eyi ni ede ibeere Prometheus.

Lọ awọn iṣapeye ni VictoriaMetrics. Alexander Vallykin

Eyi ni ohun ti faaji data jara akoko ode oni dabi lilo VictoriaMetrics bi apẹẹrẹ.

O ni awọn ẹya meji. Eyi jẹ ibi ipamọ fun atọka iyipada ati ibi ipamọ fun awọn iye jara akoko. Awọn ibi ipamọ wọnyi ti yapa.

Nigbati igbasilẹ tuntun ba de ibi ipamọ data, a kọkọ wọle si atọka inverted lati wa idamo jara akoko fun eto ti a fun. label=value fun a fi metric. A rii idanimọ yii ati fi iye pamọ sinu ile itaja data.

Nigbati ibeere kan ba wa lati gba data lati TSDB, a kọkọ lọ si atọka inverted. Jẹ ki a gba ohun gbogbo timeseries_ids awọn igbasilẹ ti o baamu ṣeto yii label=value. Ati lẹhinna a gba gbogbo data pataki lati ile-ipamọ data, titọka nipasẹ timeseries_ids.

Lọ awọn iṣapeye ni VictoriaMetrics. Alexander Vallykin

Jẹ ki a wo apẹẹrẹ ti bii akoko data jara data ṣe n ṣe ilana ibeere yiyan ti nwọle.

  • Ni akọkọ o gba ohun gbogbo timeseries_ids lati ẹya inverted atọka ti o ni awọn ti fi fun orisii label=value, tabi ni itẹlọrun ikosile deede ti a fun.
  • Lẹhinna o gba gbogbo awọn aaye data lati ibi ipamọ data ni aarin akoko ti a fun fun awọn ti a rii timeseries_ids.
  • Lẹhin eyi, data data ṣe awọn iṣiro diẹ lori awọn aaye data wọnyi, ni ibamu si ibeere olumulo. Ati lẹhin naa o da idahun pada.

Ninu igbejade yii Emi yoo sọ fun ọ nipa apakan akọkọ. Eyi jẹ wiwa timeseries_ids nipa inverted atọka. O le wo nipa apakan keji ati apakan kẹta nigbamii VictoriaMetrics awọn orisun, tabi duro titi emi o fi pese awọn iroyin miiran :)

Lọ awọn iṣapeye ni VictoriaMetrics. Alexander Vallykin

Jẹ ki a lọ siwaju si atọka inverted. Ọpọlọpọ le ro pe eyi rọrun. Tani o mọ kini atọka inverted ati bi o ṣe n ṣiṣẹ? Oh, kii ṣe ọpọlọpọ eniyan mọ. Jẹ ká gbiyanju lati ni oye ohun ti o jẹ.

O rọrun gangan. O jẹ iwe-itumọ lasan ti o ṣe maapu bọtini kan si iye kan. Kini bọtini kan? Tọkọtaya yii label=valuenibo label и value - wọnyi ni awọn ila. Ati awọn iye jẹ eto kan timeseries_ids, eyiti o pẹlu bata ti a fun label=value.

Atọka iyipada jẹ ki o yara wa ohun gbogbo timeseries_ids, ti o ti fun label=value.

O tun faye gba o lati ni kiakia ri timeseries_ids akoko jara fun orisirisi orisii label=value, tabi fun awọn tọkọtaya label=regexp. Bawo ni eyi ṣe ṣẹlẹ? Nipa wiwa ikorita ti ṣeto timeseries_ids fun kọọkan bata label=value.

Lọ awọn iṣapeye ni VictoriaMetrics. Alexander Vallykin

Jẹ ki a wo ọpọlọpọ awọn imuse ti atọka inverted. Jẹ ká bẹrẹ pẹlu awọn alinisoro imuse rọrun. O dabi eleyi.

Išẹ getMetricIDs n ni akojọ kan ti awọn gbolohun ọrọ. Laini kọọkan ni ninu label=value. Iṣẹ yi da akojọ kan pada metricIDs.

Bawo ni o ṣe n ṣiṣẹ? Nibi ti a ni agbaye oniyipada ti a npe ni invertedIndex. Eyi jẹ iwe-itumọ deede (map), eyi ti yoo ya aworan okun lati ge ints. Laini ni ninu label=value.

Imuse iṣẹ: gba metricIDs fun igba akọkọ label=value, lẹhinna a lọ nipasẹ ohun gbogbo miiran label=value, a gba metricIDs fun won. Ati pe iṣẹ naa intersectInts, eyi ti yoo wa ni sísọ ni isalẹ. Ati iṣẹ yi pada ikorita ti awọn wọnyi awọn akojọ.

Lọ awọn iṣapeye ni VictoriaMetrics. Alexander Vallykin

Bi o ti le rii, imuse atọka inverted kii ṣe idiju pupọ. Ṣugbọn eyi jẹ imuse aiṣedeede. Awọn alailanfani wo ni o ni? Aila-nfani akọkọ ti imuse aiṣedeede ni pe iru atọka inverted ti wa ni ipamọ ni Ramu. Lẹhin atunbere ohun elo a padanu atọka yii. Ko si fifipamọ ti atọka yii si disk. Irú atọ́ka ìyípadà bẹ́ẹ̀ kò ṣeé ṣe kí ó yẹ fún ibùdó dátà.

Idapada keji tun ni ibatan si iranti. Atọka inverted gbọdọ dada sinu Ramu. Ti o ba kọja iwọn Ramu, lẹhinna o han gbangba pe a yoo gba - kuro ninu aṣiṣe iranti. Ati pe eto naa kii yoo ṣiṣẹ.

Lọ awọn iṣapeye ni VictoriaMetrics. Alexander Vallykin

A le yanju iṣoro yii nipa lilo awọn solusan ti a ti ṣetan gẹgẹbi IpeleDB, tabi RocksDB.

Ni kukuru, a nilo aaye data ti o fun wa laaye lati ṣe awọn iṣẹ mẹta ni kiakia.

  • Išišẹ akọkọ jẹ gbigbasilẹ ключ-значение si yi database. O ṣe eyi yarayara, nibo ключ-значение ni o wa lainidii awọn gbolohun ọrọ.
  • Išišẹ keji jẹ wiwa iyara fun iye kan nipa lilo bọtini ti a fun.
  • Ati pe iṣẹ kẹta jẹ wiwa iyara fun gbogbo awọn iye nipasẹ asọtẹlẹ ti a fun.

LevelDB ati RocksDB - awọn data data wọnyi ni idagbasoke nipasẹ Google ati Facebook. Akọkọ wá LevelDB. Lẹhinna awọn eniyan lati Facebook mu LevelDB ati bẹrẹ imudarasi rẹ, wọn ṣe RocksDB. Bayi fere gbogbo awọn apoti isura infomesonu ti inu ṣiṣẹ lori RocksDB inu Facebook, pẹlu awọn ti o ti gbe lọ si RocksDB ati MySQL. Wọ́n dárúkọ rẹ̀ MyRocks.

Atọka iyipada le ṣee ṣe ni lilo LevelDB. Bawo ni lati ṣe? A fipamọ bi bọtini label=value. Ati pe iye naa jẹ idanimọ ti jara akoko nibiti bata wa label=value.

Ti a ba ni ọpọlọpọ akoko jara pẹlu a fi fun bata label=value, lẹhinna ọpọlọpọ awọn ori ila yoo wa ni ibi ipamọ data yii pẹlu bọtini kanna ati iyatọ timeseries_ids. Lati gba akojọ kan ti gbogbo timeseries_ids, eyi ti o bẹrẹ pẹlu eyi label=prefix, a ṣe iwoye ibiti o ti jẹ iṣapeye data yii. Iyẹn ni, a yan gbogbo awọn ila ti o bẹrẹ pẹlu label=prefix ati ki o gba awọn pataki timeseries_ids.

Lọ awọn iṣapeye ni VictoriaMetrics. Alexander Vallykin

Eyi ni imuse apẹẹrẹ ti ohun ti yoo dabi ni Go. A ni atọka inverted. Eyi ni LevelDB.

Iṣẹ naa jẹ kanna bi fun imuse ti o rọrun. O tun imuse ti o rọrun fẹrẹ laini nipasẹ laini. Awọn nikan ojuami ni wipe dipo titan si map a wọle si atọka inverted. A gba gbogbo awọn iye fun igba akọkọ label=value. Lẹhinna a lọ nipasẹ gbogbo awọn orisii to ku label=value ati gba awọn eto metricID ti o baamu fun wọn. Lẹhinna a wa ikorita.

Lọ awọn iṣapeye ni VictoriaMetrics. Alexander Vallykin

Ohun gbogbo dabi pe o dara, ṣugbọn awọn abawọn wa si ojutu yii. VictoriaMetrics kọkọ ṣe imuse atọka inverted ti o da lori LevelDB. Ṣugbọn ni ipari Mo ni lati fi silẹ.

Kí nìdí? Nitoripe LevelDB losokepupo ju imuse ti o rọrun lọ. Ni imuse ti o rọrun, ti a fun ni bọtini ti a fun, a gba gbogbo bibẹ pẹlẹbẹ naa lẹsẹkẹsẹ metricIDs. Eyi jẹ iṣẹ ṣiṣe ti o yara pupọ - gbogbo bibẹ pẹlẹbẹ ti ṣetan fun lilo.

Ni LevelDB, ni gbogbo igba ti iṣẹ kan ba pe GetValues o nilo lati lọ nipasẹ gbogbo awọn ila ti o bẹrẹ pẹlu label=value. Ati gba iye fun laini kọọkan timeseries_ids. Ti iru timeseries_ids gba kan bibẹ ti awọn wọnyi timeseries_ids. O han ni, eyi lọra pupọ ju wiwa wọle si maapu deede nipasẹ bọtini.

Idapada keji ni pe a kọ LevelDB ni C. Npe awọn iṣẹ C lati Go ko yara pupọ. O gba awọn ọgọọgọrun ti nanoseconds. Eyi kii ṣe iyara pupọ, nitori pe akawe si ipe iṣẹ deede ti a kọ ni lọ, eyiti o gba 1-5 nanoseconds, iyatọ ninu iṣẹ jẹ awọn mewa ti awọn akoko. Fun VictoriaMetrics eyi jẹ abawọn apaniyan :)

Lọ awọn iṣapeye ni VictoriaMetrics. Alexander Vallykin

Nitorinaa Mo kọ imuse ti ara mi ti atọka inverted. O si pè e akojọpọ.

Mergeset da lori ọna data MergeTree. Eto data yii ti ya lati ClickHouse. O han ni, iṣọpọ yẹ ki o jẹ iṣapeye fun wiwa ni iyara timeseries_ids gẹgẹ bi bọtini ti a fun. Mergeset ti kọ patapata ni Go. O le rii Awọn orisun VictoriaMetrics lori GitHub. Imuse ti irẹpọ wa ninu folda /lib/dapọ. O le gbiyanju lati ro ero ohun ti n ṣẹlẹ nibẹ.

API àkópọ̀ jọra gan-an sí LevelDB àti RocksDB. Iyẹn ni, o gba ọ laaye lati fipamọ awọn igbasilẹ tuntun ni iyara ati yan awọn igbasilẹ ni kiakia nipasẹ asọtẹlẹ ti a fun.

Lọ awọn iṣapeye ni VictoriaMetrics. Alexander Vallykin

A yoo sọrọ nipa awọn aila-nfani ti iṣọpọ nigbamii. Bayi jẹ ki a sọrọ nipa kini awọn iṣoro ti o dide pẹlu VictoriaMetrics ni iṣelọpọ nigba imuse atọka inverted.

Kí nìdí tí wọ́n fi dìde?

Idi akọkọ ni oṣuwọn churn giga. Itumọ si Russian, eyi jẹ iyipada loorekoore ni jara akoko. Eyi ni nigbati jara akoko ba pari ati jara tuntun kan bẹrẹ, tabi ọpọlọpọ awọn jara akoko tuntun bẹrẹ. Ati pe eyi n ṣẹlẹ nigbagbogbo.

Idi keji jẹ nọmba nla ti jara akoko. Ni ibẹrẹ, nigbati ibojuwo n gba olokiki, nọmba ti jara akoko jẹ kekere. Fun apẹẹrẹ, fun kọnputa kọọkan o nilo lati ṣe atẹle Sipiyu, iranti, nẹtiwọọki ati fifuye disk. 4 akoko jara fun kọmputa. Jẹ ki a sọ pe o ni awọn kọnputa 100 ati jara akoko 400. Eyi kere pupọ.

Ni akoko pupọ, awọn eniyan rii pe wọn le wọn alaye granular diẹ sii. Fun apẹẹrẹ, wiwọn fifuye kii ṣe ti gbogbo ero isise, ṣugbọn lọtọ ti mojuto ero isise kọọkan. Ti o ba ni awọn ohun kohun ero isise 40, lẹhinna o ni awọn akoko 40 diẹ sii lati wiwọn fifuye ero isise.

Ṣugbọn iyẹn ko pẹ. Ipilẹ ero isise kọọkan le ni awọn ipinlẹ pupọ, gẹgẹbi laišišẹ, nigbati o ba ṣiṣẹ. Ati tun ṣiṣẹ ni aaye olumulo, ṣiṣẹ ni aaye ekuro ati awọn ipinlẹ miiran. Ati kọọkan iru ipinle le tun ti wa ni won bi a lọtọ akoko jara. Eyi tun pọ si nọmba awọn ori ila nipasẹ awọn akoko 7-8.

Lati metric kan a ni 40 x 8 = 320 metiriki fun kọnputa kan. Ilọpo nipasẹ 100, a gba 32 dipo 000.

Lẹhinna Kubernetes wa pẹlu. Ati pe o buru nitori Kubernetes le gbalejo ọpọlọpọ awọn iṣẹ oriṣiriṣi. Iṣẹ kọọkan ni Kubernetes ni ọpọlọpọ awọn adarọ-ese. Ati gbogbo eyi nilo lati ṣe abojuto. Ni afikun, a ni imuṣiṣẹ igbagbogbo ti awọn ẹya tuntun ti awọn iṣẹ rẹ. Fun ẹya tuntun kọọkan, jara akoko tuntun gbọdọ ṣẹda. Bi abajade, nọmba awọn akoko ti o pọju ti o pọju ati pe a ni idojukọ pẹlu iṣoro ti nọmba ti o pọju akoko, eyi ti a npe ni giga-kardinality. VictoriaMetrics koju pẹlu aṣeyọri ni akawe si awọn apoti isura infomesonu jara akoko miiran.

Lọ awọn iṣapeye ni VictoriaMetrics. Alexander Vallykin

Jẹ ki a ṣe akiyesi diẹ sii ni oṣuwọn churn giga. Kini o fa oṣuwọn chun giga ni iṣelọpọ? Nitori diẹ ninu awọn itumọ ti awọn akole ati awọn afi ti wa ni iyipada nigbagbogbo.

Fun apẹẹrẹ, mu Kubernetes, ti o ni imọran deployment, i.e. nigbati ẹya tuntun ti ohun elo rẹ ba ti yiyi jade. Fun idi kan, awọn olupilẹṣẹ Kubernetes pinnu lati ṣafikun id imuṣiṣẹ si aami naa.

Kí ni èyí yọrí sí? Pẹlupẹlu, pẹlu imuṣiṣẹ tuntun kọọkan, gbogbo awọn jara akoko atijọ ni idilọwọ, ati dipo wọn, jara akoko tuntun bẹrẹ pẹlu iye aami tuntun deployment_id. O le jẹ awọn ọgọọgọrun egbegberun ati paapaa awọn miliọnu iru awọn ori ila.

Ohun pataki nipa gbogbo eyi ni pe nọmba lapapọ ti jara akoko dagba, ṣugbọn nọmba awọn jara akoko ti o nṣiṣe lọwọ lọwọlọwọ ati gbigba data jẹ igbagbogbo. Ipinle yii ni a pe ni oṣuwọn churn giga.

Iṣoro akọkọ ti oṣuwọn churn giga ni lati rii daju iyara wiwa igbagbogbo fun gbogbo jara akoko fun ṣeto awọn aami ti a fun ni aarin akoko kan. Ni deede eyi ni aarin akoko fun wakati to kẹhin tabi ọjọ ikẹhin.

Lọ awọn iṣapeye ni VictoriaMetrics. Alexander Vallykin

Bawo ni lati yanju isoro yi? Eyi ni aṣayan akọkọ. Eyi ni lati pin atọka inverted si awọn ẹya ominira ni akoko pupọ. Iyẹn ni, diẹ ninu awọn akoko aarin kọja, a pari ṣiṣẹ pẹlu atọka inverted lọwọlọwọ. Ki o si ṣẹda titun kan inverted atọka. Miiran akoko aarin koja, a ṣẹda miran ati awọn miiran.

Ati nigbati a ba ṣe ayẹwo lati awọn itọka inverted wọnyi, a rii akojọpọ awọn atọka inverted ti o ṣubu laarin aarin ti a fifun. Ati pe, ni ibamu, a yan id ti jara akoko lati ibẹ.

Eyi fi awọn orisun pamọ nitori a ko ni lati wo awọn apakan ti ko ṣubu laarin aarin ti a fun. Iyẹn ni, nigbagbogbo, ti a ba yan data fun wakati to kẹhin, lẹhinna fun awọn aarin akoko iṣaaju a fo awọn ibeere.

Lọ awọn iṣapeye ni VictoriaMetrics. Alexander Vallykin

Aṣayan miiran wa lati yanju iṣoro yii. Eyi ni lati fipamọ fun ọjọ kọọkan atokọ lọtọ ti ids ti jara akoko ti o waye ni ọjọ yẹn.

Anfani ti ojutu yii lori ojutu iṣaaju ni pe a ko ṣe ẹda alaye lẹsẹsẹ akoko ti ko parẹ lori akoko. Wọn wa nigbagbogbo ati pe ko yipada.

Aila-nfani ni pe iru ojutu kan nira diẹ sii lati ṣe ati pe o nira sii lati yokokoro. Ati VictoriaMetrics yan ojutu yii. Eyi ni bi o ṣe ṣẹlẹ ni itan. Ojutu yii tun ṣiṣẹ daradara ni akawe si ti iṣaaju. Nitoripe ojutu yii ko ṣe imuse nitori otitọ pe o jẹ dandan lati ṣe ẹda data ni ipin kọọkan fun jara akoko ti ko yipada, ie ti ko parẹ ni akoko pupọ. VictoriaMetrics jẹ iṣapeye akọkọ fun agbara aaye disk, ati imuse iṣaaju jẹ ki agbara aaye disk buru si. Ṣugbọn imuse yii dara julọ fun idinku agbara aaye disk, nitorinaa o yan.

Mo ní láti bá a jà. Ijakadi ni pe ninu imuse yii o tun nilo lati yan nọmba ti o tobi pupọ timeseries_ids fun data ju nigbati awọn inverted atọka ti wa ni akoko partitioned.

Lọ awọn iṣapeye ni VictoriaMetrics. Alexander Vallykin

Bawo ni a ṣe yanju iṣoro yii? A yanju rẹ ni ọna atilẹba - nipa titoju ọpọlọpọ awọn idamọ jara igba pupọ ni titẹsi atọka inverted kọọkan dipo idamo kan. Iyẹn ni, a ni bọtini kan label=value, eyi ti o waye ni gbogbo igba jara. Ati nisisiyi a fipamọ pupọ timeseries_ids ninu ọkan titẹsi.

Eyi ni apẹẹrẹ. Ni iṣaaju a ni awọn titẹ sii N, ṣugbọn ni bayi a ni titẹsi kan ti asọtẹlẹ jẹ kanna bi gbogbo awọn miiran. Fun titẹ sii ti tẹlẹ, iye naa ni gbogbo awọn ids jara akoko ninu.

Eyi jẹ ki o ṣee ṣe lati mu iyara ọlọjẹ ti iru atọka inverted soke si awọn akoko 10. Ati pe o gba wa laaye lati dinku agbara iranti fun kaṣe, nitori bayi a tọju okun naa label=value ni ẹẹkan ni kaṣe jọ N igba. Ati pe laini yii le jẹ nla ti o ba tọju awọn laini gigun ni awọn afi ati awọn akole rẹ, eyiti Kubernetes fẹran lati ṣabọ nibẹ.

Lọ awọn iṣapeye ni VictoriaMetrics. Alexander Vallykin

Aṣayan miiran fun wiwa iyara lori atọka inverted jẹ sharding. Ṣiṣẹda ọpọlọpọ awọn atọka inverted dipo ọkan ati pinpin data laarin wọn nipasẹ bọtini. Eyi jẹ eto key=value nya si. Iyẹn ni, a gba ọpọlọpọ awọn atọka inverted ominira, eyiti a le beere ni afiwe lori ọpọlọpọ awọn ilana. Awọn imuṣẹ iṣaaju nikan gba laaye iṣẹ ni ipo ero isise kan, ie, data ọlọjẹ lori mojuto kan ṣoṣo. Ojutu yii ngbanilaaye lati ṣayẹwo data lori ọpọlọpọ awọn ohun kohun ni ẹẹkan, bi ClickHouse ṣe fẹran lati ṣe. Eyi ni ohun ti a gbero lati ṣe.

Lọ awọn iṣapeye ni VictoriaMetrics. Alexander Vallykin

Bayi jẹ ki a pada si ọdọ agutan wa - si iṣẹ ikorita timeseries_ids. Jẹ ki a ro kini awọn imuse ti o le wa. Iṣẹ yii gba ọ laaye lati wa timeseries_ids fun a fi fun ṣeto label=value.

Lọ awọn iṣapeye ni VictoriaMetrics. Alexander Vallykin

Aṣayan akọkọ jẹ imuse ti o rọrun. Meji iteeye losiwajulosehin. Nibi a gba titẹ iṣẹ naa intersectInts awọn ege meji - a и b. Ni abajade, o yẹ ki o pada si wa ni ikorita ti awọn ege wọnyi.

Imuse alaigbọran dabi eyi. A ṣe atunwo lori gbogbo awọn iye lati bibẹ a, inu lupu yii a lọ nipasẹ gbogbo awọn iye ti bibẹ b. Ati pe a ṣe afiwe wọn. Ti wọn ba baramu, lẹhinna a ti ri ikorita kan. Ati fipamọ sinu result.

Lọ awọn iṣapeye ni VictoriaMetrics. Alexander Vallykin

Kini awọn alailanfani? Idiju kuadiratiki jẹ apadabọ akọkọ rẹ. Fun apẹẹrẹ, ti awọn iwọn rẹ ba jẹ bibẹ a и b milionu kan ni akoko kan, lẹhinna iṣẹ yii kii yoo da idahun pada si ọ. Nitoripe yoo nilo lati ṣe awọn aimọye aimọye kan, eyiti o jẹ pupọ paapaa fun awọn kọnputa ode oni.

Lọ awọn iṣapeye ni VictoriaMetrics. Alexander Vallykin

Ilana keji da lori maapu. A ṣẹda maapu. A fi gbogbo awọn iye lati bibẹ sinu maapu yii a. Lẹhinna a lọ nipasẹ bibẹ ni lupu lọtọ b. Ati pe a ṣayẹwo boya iye yii wa lati bibẹ b ninu maapu. Ti o ba wa, lẹhinna fi sii si abajade.

Lọ awọn iṣapeye ni VictoriaMetrics. Alexander Vallykin

Kini awọn anfani? Awọn anfani ni wipe o wa ni nikan laini complexity. Iyẹn ni, iṣẹ naa yoo ṣiṣẹ ni iyara pupọ fun awọn ege nla. Fun bibẹ pẹlẹbẹ iwọn miliọnu kan, iṣẹ yii yoo ṣiṣẹ ni awọn aṣetunṣe miliọnu meji, ni idakeji si awọn aimọye aimọye ti iṣẹ iṣaaju.

Isalẹ ni pe iṣẹ yii nilo iranti diẹ sii lati ṣẹda maapu yii.

Idaduro keji jẹ oke nla fun hashing. Yi drawback ni ko gan kedere. Ati fun wa ko tun han gbangba, nitorinaa ni akọkọ ni VictoriaMetrics imuse ti ikorita jẹ nipasẹ maapu kan. Ṣugbọn lẹhinna profaili fihan pe akoko ero isise akọkọ ti lo kikọ si maapu naa ati ṣayẹwo fun wiwa iye kan ninu maapu yii.

Kini idi ti akoko Sipiyu n sofo ni awọn aaye wọnyi? Nitori Go ṣe iṣẹ hashing lori awọn ila wọnyi. Iyẹn ni, o ṣe iṣiro hash ti bọtini naa lati le wọle si ni itọka ti a fun ni HashMap. Iṣẹ iṣiro hash ti pari ni awọn mewa ti nanoseconds. Eyi jẹ o lọra fun VictoriaMetrics.

Lọ awọn iṣapeye ni VictoriaMetrics. Alexander Vallykin

Mo pinnu lati ṣe iṣapeye bitset pataki fun ọran yii. Eyi ni ikorita ti awọn ege meji ni bayi dabi. Nibi a ṣẹda bitset kan. A ṣafikun awọn eroja lati bibẹ akọkọ si rẹ. Lẹhinna a ṣayẹwo wiwa awọn eroja wọnyi ni bibẹ keji. Ki o si fi wọn si esi. Iyẹn ni, o fẹrẹ ko yatọ si apẹẹrẹ iṣaaju. Ohun kan ṣoṣo nibi ni pe a rọpo iwọle si maapu pẹlu awọn iṣẹ aṣa add и has.

Lọ awọn iṣapeye ni VictoriaMetrics. Alexander Vallykin

Ni wiwo akọkọ, o dabi pe eyi yẹ ki o ṣiṣẹ losokepupo, ti o ba ti lo maapu boṣewa tẹlẹ nibẹ, lẹhinna a pe diẹ ninu awọn iṣẹ miiran, ṣugbọn profaili fihan pe nkan yii ṣiṣẹ ni awọn akoko 10 ni iyara ju maapu boṣewa ni ọran ti VictoriaMetrics.

Ni afikun, o nlo Elo kere iranti akawe si awọn map imuse. Nitoripe a n tọju awọn ege nibi dipo awọn iye baiti mẹjọ.

Aila-nfani ti imuse yii ni pe ko han gbangba, kii ṣe bintin.

Idaduro miiran ti ọpọlọpọ le ma ṣe akiyesi ni pe imuse yii le ma ṣiṣẹ daradara ni awọn igba miiran. Iyẹn ni, o jẹ iṣapeye fun ọran kan pato, fun ọran yii ti ikorita ti awọn ids jara akoko VictoriaMetrics. Eyi ko tumọ si pe o dara fun gbogbo awọn ọran. Ti o ba ti lo ni aṣiṣe, a kii yoo ni ilọsiwaju iṣẹ, ṣugbọn jade kuro ni aṣiṣe iranti ati idinku ninu iṣẹ.

Lọ awọn iṣapeye ni VictoriaMetrics. Alexander Vallykin

Jẹ ká ro awọn imuse ti yi be. Ti o ba fẹ wo, o wa ni awọn orisun VictoriaMetrics, ninu folda naa lib/uint64set. O ti wa ni iṣapeye pataki fun ọran VictoriaMetrics, nibiti timeseries_id ni a 64-bit iye, ibi ti akọkọ 32 die-die ni o wa besikale ibakan ati ki o nikan awọn ti o kẹhin 32 die-die ayipada.

Ilana data yii ko ni ipamọ lori disiki, o nṣiṣẹ ni iranti nikan.

Lọ awọn iṣapeye ni VictoriaMetrics. Alexander Vallykin

Eyi ni API rẹ. Ko ṣe idiju pupọ. API naa ni a ṣe ni pataki si apẹẹrẹ kan pato ti lilo VictoriaMetrics. Iyẹn ni, ko si awọn iṣẹ ti ko wulo nibi. Eyi ni awọn iṣẹ ti VictoriaMetrics lo ni gbangba.

Awọn iṣẹ wa add, eyi ti o ṣe afikun awọn iye titun. Iṣẹ kan wa has, eyiti o ṣayẹwo fun awọn iye tuntun. Ati pe iṣẹ kan wa del, eyi ti o yọ awọn iye. Iṣẹ oluranlọwọ wa len, eyi ti o da iwọn ti ṣeto pada. Išẹ clone ere ibeji pupọ. Ati iṣẹ appendto yi eto yi pada si bibẹ timeseries_ids.

Lọ awọn iṣapeye ni VictoriaMetrics. Alexander Vallykin

Eyi ni ohun ti imuse ti eto data yii dabi. Eto naa ni awọn eroja meji:

  • ItemsCount jẹ aaye oluranlọwọ lati da nọmba awọn eroja pada ni iyara kan. Yoo ṣee ṣe lati ṣe laisi aaye iranlọwọ, ṣugbọn o ni lati ṣafikun nibi nitori VictoriaMetrics nigbagbogbo n beere gigun bitset ninu awọn algoridimu rẹ.

  • Aaye keji jẹ buckets. Eleyi jẹ bibẹ lati awọn be bucket32. Kọọkan be ile oja hi aaye. Iwọnyi jẹ awọn die-die 32 oke. Ati awọn ege meji - b16his и buckets ati bẹbẹ lọ bucket16 awọn ẹya.

Awọn ege 16 oke ti apakan keji ti eto 64-bit ti wa ni ipamọ nibi. Ati ki o nibi bitsets ti wa ni ipamọ fun kekere 16 die-die ti kọọkan baiti.

Bucket64 oriširiši ohun orun uint64. Awọn ipari ti wa ni iṣiro nipa lilo awọn wọnyi ibakan. Ninu ọkan bucket16 o pọju le wa ni ipamọ 2^16=65536 die-die. Ti o ba pin eyi nipasẹ 8, lẹhinna o jẹ 8 kilobytes. Ti o ba pin nipasẹ 8 lẹẹkansi, o jẹ 1000 uint64 itumo. Ti o jẹ Bucket16 – Eyi ni eto 8-kilobyte wa.

Lọ awọn iṣapeye ni VictoriaMetrics. Alexander Vallykin

Jẹ ki a wo bii ọkan ninu awọn ọna ti eto yii fun fifi iye tuntun kan ṣe imuse.

Gbogbo rẹ bẹrẹ pẹlu uint64 itumo. A ṣe iṣiro awọn iwọn 32 oke, a ṣe iṣiro awọn bit 32 isalẹ. Jẹ ki a lọ nipasẹ ohun gbogbo buckets. A ṣe afiwe awọn iwọn 32 oke ni garawa kọọkan pẹlu iye ti a ṣafikun. Ati pe ti wọn ba baamu, lẹhinna a pe iṣẹ naa add ninu eto b32 buckets. Ki o si fi awọn kekere 32 die-die nibẹ. Ati pe ti o ba pada true, lẹhinna eyi tumọ si pe a ṣafikun iru iye kan nibẹ ati pe a ko ni iru iye kan. Ti o ba pada false, lẹhinna iru itumọ kan ti wa tẹlẹ. Lẹhinna a pọ si nọmba awọn eroja ninu eto naa.

Ti a ko ba ri ọkan ti o nilo bucket pẹlu hi-iye ti a beere, lẹhinna a pe iṣẹ naa addAlloc, eyi ti yoo ṣe agbejade tuntun kan bucket, fifi o si awọn garawa be.

Lọ awọn iṣapeye ni VictoriaMetrics. Alexander Vallykin

Eyi ni imuse ti iṣẹ naa b32.add. O jẹ iru si imuse iṣaaju. A ṣe iṣiro awọn die-die 16 ti o ṣe pataki julọ, ti o kere ju awọn iwọn 16 pataki.

Lẹhinna a lọ nipasẹ gbogbo awọn iwọn 16 oke. A ri awọn ere-kere. Ati pe ti ibaamu kan ba wa, a pe ọna afikun, eyiti a yoo gbero ni oju-iwe atẹle fun bucket16.

Lọ awọn iṣapeye ni VictoriaMetrics. Alexander Vallykin

Ati pe eyi ni ipele ti o kere julọ, eyiti o yẹ ki o wa ni iṣapeye bi o ti ṣee ṣe. A ṣe iṣiro fun uint64 id iye ni bibẹ bit ati ki o tun bitmask. Eyi jẹ iboju-boju fun iye 64-bit ti a fun, eyiti o le ṣee lo lati ṣayẹwo wiwa ti bit yii, tabi ṣeto rẹ. A ṣayẹwo lati rii boya a ṣeto bit yii ati ṣeto rẹ, ati ipadabọ wiwa. Eyi ni imuse wa, eyiti o gba wa laaye lati mu iyara ṣiṣẹ ti awọn ids intersecting ti jara akoko nipasẹ awọn akoko 10 ni akawe si awọn maapu aṣa.

Lọ awọn iṣapeye ni VictoriaMetrics. Alexander Vallykin

Ni afikun si iṣapeye yii, VictoriaMetrics ni ọpọlọpọ awọn iṣapeye miiran. Pupọ julọ awọn iṣapeye wọnyi ni a ṣafikun fun idi kan, ṣugbọn lẹhin sisọ koodu ni iṣelọpọ.

Eyi ni ofin akọkọ ti iṣapeye - maṣe ṣafikun iṣapeye ti o ro pe igo kan yoo wa nibi, nitori o le tan-an pe kii yoo jẹ igo kan nibẹ. Iṣapeye maa n dinku didara koodu naa. Nitorinaa, o tọ si iṣapeye nikan lẹhin profaili ati ni pataki ni iṣelọpọ, nitorinaa eyi jẹ data gidi. Ti ẹnikẹni ba nifẹ, o le wo koodu orisun VictoriaMetrics ati ṣawari awọn iṣapeye miiran ti o wa nibẹ.

Lọ awọn iṣapeye ni VictoriaMetrics. Alexander Vallykin

Mo ni ibeere kan nipa bitset. Gan iru si C ++ fekito bool imuse, iṣapeye bitset. Ṣe o gba imuse lati ibẹ?

Rara, kii ṣe lati ibẹ. Nigbati o ba n ṣe imuse bitset yii, Mo ni itọsọna nipasẹ imọ ti eto ti awọn asiko ids wọnyi, eyiti a lo ni VictoriaMetrics. Ati pe eto wọn jẹ iru awọn iwọn 32 oke jẹ igbagbogbo igbagbogbo. Isalẹ 32 die-die wa ni koko ọrọ si ayipada. Isalẹ bit, diẹ sii nigbagbogbo o le yipada. Nitorinaa, imuse yii jẹ iṣapeye pataki fun eto data yii. Imuse C ++, niwọn bi Mo ti mọ, jẹ iṣapeye fun ọran gbogbogbo. Ti o ba ṣe atunṣe fun ọran gbogbogbo, eyi tumọ si pe kii yoo jẹ aipe julọ fun ọran kan pato.

Mo tun gba ọ ni imọran lati wo ijabọ ti Alexey Milovid. Nipa oṣu kan sẹhin, o sọrọ nipa iṣapeye ni ClickHouse fun awọn amọja pato. O kan sọ pe ninu ọran gbogbogbo, imuse C ++ kan tabi imuse miiran ni a ṣe deede lati ṣiṣẹ daradara ni apapọ ni ile-iwosan kan. O le ṣe buru ju imuse imọ-pato bi tiwa, nibiti a ti mọ pe oke 32 die-die jẹ igbagbogbo igbagbogbo.

Mo ni ibeere keji. Kini iyatọ ipilẹ lati InfluxDB?

Ọpọlọpọ awọn iyatọ ipilẹ wa. Ni awọn ofin ti iṣẹ ati agbara iranti, InfluxDB ninu awọn idanwo fihan awọn akoko 10 diẹ sii agbara iranti fun jara akoko kaadi, nigbati o ni pupọ ninu wọn, fun apẹẹrẹ, awọn miliọnu. Fun apẹẹrẹ, VictoriaMetrics n gba 1 GB fun miliọnu awọn ori ila ti nṣiṣe lọwọ, lakoko ti InfluxDB n gba 10 GB. Ati pe iyatọ nla ni.

Iyatọ ipilẹ keji ni pe InfluxDB ni awọn ede ibeere ajeji - Flux ati InfluxQL. Wọn ko rọrun pupọ fun ṣiṣẹ pẹlu jara akoko akawe si PromQL, eyiti o jẹ atilẹyin nipasẹ VictoriaMetrics. PromQL jẹ ede ibeere lati Prometheus.

Ati iyatọ diẹ sii ni pe InfluxDB ni awoṣe data ajeji die-die, nibiti laini kọọkan le fipamọ awọn aaye pupọ pẹlu awọn ami ti o yatọ. Awọn wọnyi ni ila ti wa ni siwaju pin si orisirisi awọn tabili. Awọn iloluran afikun wọnyi ṣe idiju iṣẹ atẹle pẹlu data data yii. O soro lati ṣe atilẹyin ati oye.

Ni VictoriaMetrics ohun gbogbo rọrun pupọ. Nibẹ, kọọkan akoko jara jẹ bọtini-iye. Iye naa jẹ ṣeto awọn aaye - (timestamp, value), ati bọtini ni ṣeto label=value. Ko si iyapa laarin awọn aaye ati awọn wiwọn. O gba ọ laaye lati yan eyikeyi data ati lẹhinna darapọ, ṣafikun, yọkuro, isodipupo, pin, ko dabi InfluxDB nibiti awọn iṣiro laarin awọn ori ila oriṣiriṣi ko tun ṣe imuse bi mo ti mọ. Paapa ti wọn ba ṣe imuse, o nira, o ni lati kọ koodu pupọ.

Mo ni ibeere ti n ṣalaye. Ṣe Mo loye ni deede pe iru iṣoro kan wa ti o ti sọrọ nipa, pe atọka inverted yii ko baamu si iranti, nitorinaa ipin wa nibẹ?

Ni akọkọ, Mo ṣe afihan imuse aiṣedeede ti atọka inverted lori maapu Go boṣewa kan. Imuse yii ko dara fun awọn apoti isura infomesonu nitori atọka inverted yii ko ni fipamọ si disiki, ati pe ibi ipamọ data gbọdọ fipamọ si disk ki data yii wa nigbati o tun bẹrẹ. Ninu imuse yii, nigbati o ba tun ohun elo naa bẹrẹ, atọka inverted rẹ yoo parẹ. Ati pe iwọ yoo padanu iraye si gbogbo data nitori iwọ kii yoo ni anfani lati rii.

Pẹlẹ o! O ṣeun fun iroyin na! Orukọ mi ni Pavel. Mo wa lati Wildberries. Mo ni awọn ibeere diẹ fun ọ. Ibeere ọkan. Ṣe o ro pe ti o ba ti yan ilana ti o yatọ nigbati o ba kọ faaji ti ohun elo rẹ ati pin data ni akoko pupọ, lẹhinna boya iwọ yoo ti ni anfani lati intersect data nigba wiwa, da lori otitọ pe ipin kan ni data fun ọkan. akoko akoko, iyẹn ni, ni aarin akoko kan ati pe iwọ kii yoo ni aniyan nipa otitọ pe awọn ege rẹ ti tuka ni oriṣiriṣi? Nọmba ibeere 2 - niwọn igba ti o n ṣe imuse iru algorithm kan pẹlu bitset ati ohun gbogbo miiran, lẹhinna boya o gbiyanju lilo awọn ilana ero isise? Boya o ti gbiyanju iru awọn iṣapeye?

Emi yoo dahun ọkan keji lẹsẹkẹsẹ. A ko tii de aaye yẹn sibẹsibẹ. Ṣugbọn ti o ba jẹ dandan, a yoo de ibẹ. Ati akọkọ ọkan, kini ibeere naa?

O ti jiroro lori awọn oju iṣẹlẹ meji. Ati pe wọn sọ pe wọn yan keji pẹlu imuse eka diẹ sii. Ati pe wọn ko fẹran akọkọ, nibiti data ti pin nipasẹ akoko.

Bẹẹni. Ni akọkọ nla, awọn lapapọ iwọn didun ti awọn Atọka yoo jẹ tobi, nitori ni kọọkan ipin a yoo ni lati fi àdáwòkọ data fun awon akoko jara ti o tẹsiwaju nipasẹ gbogbo awọn wọnyi ipin. Ati pe ti o ba jẹ pe oṣuwọn churn jara akoko rẹ jẹ kekere, ie jara kanna ni a lo nigbagbogbo, lẹhinna ni ọran akọkọ a yoo padanu pupọ diẹ sii ni iye aaye disk ti o wa ni akawe si ọran keji.

Ati bẹ - bẹẹni, ipin akoko jẹ aṣayan ti o dara. Prometheus lo. Ṣugbọn Prometheus ni apadabọ miiran. Nigbati o ba n dapọ awọn ege data wọnyi, o nilo lati tọju ni alaye meta iranti fun gbogbo awọn akole ati awọn jara akoko. Nitorinaa, ti awọn ege data ti o dapọ pọ si tobi, lẹhinna agbara iranti pọ si pupọ lakoko iṣọpọ, ko dabi VictoriaMetrics. Nigbati o ba n dapọ, VictoriaMetrics ko jẹ iranti rara; awọn kilobytes meji nikan ni o jẹ, laibikita iwọn awọn ege data ti a dapọ.

Algoridimu ti o nlo iranti nlo. O samisi awọn aami igba ti o ni awọn iye ninu. Ati ni ọna yii o ṣayẹwo fun wiwa so pọ ni titobi data kan ati ni omiiran. Ati pe o loye boya intersect waye tabi rara. Ni deede, awọn apoti isura infomesonu ṣe imuse awọn kọsọ ati awọn iterators ti o tọju akoonu lọwọlọwọ wọn ati ṣiṣe nipasẹ data lẹsẹsẹ nitori idiju ti o rọrun ti awọn iṣẹ wọnyi.

Kilode ti a ko lo awọn kọsọ lati kọja data?

Bẹẹni.

A tọju awọn ori ila ti o to lẹsẹsẹ ni LevelDB tabi akojọpọ. A le gbe kọsọ ki o wa ikorita. Kilode ti a ko lo? Nitoripe o lọra. Nitori awọn kọsọ tumọ si pe o nilo lati pe iṣẹ kan fun laini kọọkan. Ipe iṣẹ kan jẹ 5 nanoseconds. Ati pe ti o ba ni awọn laini 100, lẹhinna o wa ni pe a lo idaji iṣẹju kan kan pe iṣẹ naa.

Iru nkan bẹẹ wa, bẹẹni. Ati ibeere mi ti o kẹhin. Awọn ibeere le dun kekere kan ajeji. Kini idi ti ko ṣee ṣe lati ka gbogbo awọn akojọpọ pataki ni akoko data ti de ati fi wọn pamọ sinu fọọmu ti a beere? Kini idi ti o fi awọn iwọn nla pamọ ni diẹ ninu awọn eto bii VictoriaMetrics, ClickHouse, ati bẹbẹ lọ, ati lẹhinna lo akoko pupọ lori wọn?

Emi yoo fun apẹẹrẹ lati jẹ ki o ṣe alaye diẹ sii. Jẹ ká sọ bawo ni a kekere toy speedometer ṣiṣẹ? O ṣe igbasilẹ ijinna ti o ti rin, ni gbogbo igba ti o nfi kun si iye kan, ati keji - akoko. Ati pin. Ati ki o gba apapọ iyara. O le ṣe nipa ohun kanna. Ṣafikun gbogbo awọn otitọ pataki lori fo.

O dara, Mo loye ibeere naa. Apẹẹrẹ rẹ ni aaye rẹ. Ti o ba mọ kini awọn akojọpọ ti o nilo, lẹhinna eyi ni imuse to dara julọ. Ṣugbọn iṣoro naa ni pe eniyan ṣafipamọ awọn metiriki wọnyi, diẹ ninu data ni ClickHouse ati pe wọn ko tii mọ bi wọn yoo ṣe ṣajọpọ ati ṣe àlẹmọ wọn ni ọjọ iwaju, nitorinaa wọn ni lati ṣafipamọ gbogbo data aise. Ṣugbọn ti o ba mọ pe o nilo lati ṣe iṣiro nkan ni apapọ, lẹhinna kilode ti o ko ṣe iṣiro dipo titoju opo awọn iye aise nibẹ? Ṣugbọn eyi jẹ nikan ti o ba mọ pato ohun ti o nilo.

Nipa ọna, awọn apoti isura infomesonu fun titoju lẹsẹsẹ akoko atilẹyin kika awọn akojọpọ. Fun apẹẹrẹ, Prometheus ṣe atilẹyin awọn ofin igbasilẹ. Iyẹn ni, eyi le ṣee ṣe ti o ba mọ iru awọn ẹya ti iwọ yoo nilo. VictoriaMetrics ko ni eyi sibẹsibẹ, ṣugbọn o jẹ iṣaaju nipasẹ Prometheus, ninu eyiti eyi le ṣee ṣe ni awọn ofin atunṣe.

Fun apẹẹrẹ, ninu iṣẹ iṣaaju mi ​​Mo nilo lati ka iye awọn iṣẹlẹ ni window sisun ni wakati to kẹhin. Iṣoro naa ni pe Mo ni lati ṣe imuse aṣa ni Go, ie iṣẹ kan fun kika nkan yii. Iṣẹ yi je be ti kii-bintin, nitori ti o jẹ soro lati ṣe iṣiro. Imuse le jẹ rọrun ti o ba nilo lati ka diẹ ninu awọn akojọpọ ni awọn aaye arin ti o wa titi. Ti o ba fẹ ka awọn iṣẹlẹ ni window sisun, lẹhinna ko rọrun bi o ṣe dabi. Mo ro pe eyi ko tii ṣe imuse ni ClickHouse tabi ni awọn apoti isura infomesonu igba, nitori o nira lati ṣe.

Ati ibeere kan diẹ sii. A kan sọrọ nipa aropin, ati pe Mo ranti pe iru nkan kan wa ni ẹẹkan bi Graphite pẹlu ẹhin erogba. Ati pe o mọ bi o ṣe le tinrin jade data atijọ, iyẹn ni, fi aaye kan silẹ fun iṣẹju kan, aaye kan fun wakati kan, bbl Ni ipilẹ, eyi rọrun pupọ ti a ba nilo data aise, ni ibatan sọrọ, fun oṣu kan, ati ohun gbogbo miiran le jẹ thinned jade. Ṣugbọn Prometheus ati VictoriaMetrics ko ṣe atilẹyin iṣẹ ṣiṣe yii. Ṣe o ngbero lati ṣe atilẹyin fun? Bí bẹ́ẹ̀ kọ́, kí ló dé?

O ṣeun fun ibeere naa. Awọn olumulo wa beere ibeere yii lorekore. Wọn beere nigba ti a yoo ṣafikun atilẹyin fun idinku. Awọn iṣoro pupọ wa nibi. Ni akọkọ, gbogbo olumulo loye downsampling nkankan ti o yatọ: ẹnikan fẹ lati gba eyikeyi lainidii ojuami lori a fi fun aarin, ẹnikan fẹ o pọju, kere, apapọ iye. Ti ọpọlọpọ awọn ọna ṣiṣe kọ data si ibi ipamọ data rẹ, lẹhinna o ko le fa gbogbo rẹ papọ. O le jẹ wipe kọọkan eto nbeere o yatọ si thinning. Ati pe eyi nira lati ṣe.

Ati ohun keji ni wipe VictoriaMetrics, bi ClickHouse, ti wa ni iṣapeye fun ṣiṣẹ lori tobi oye akojo ti aise data, ki o le shovel a bilionu ila ni kere ju a keji ti o ba ti o ba ni ọpọlọpọ awọn ohun kohun ninu rẹ eto. Ṣiṣayẹwo awọn aaye jara akoko ni VictoriaMetrics – Awọn aaye 50 fun iṣẹju kan fun mojuto. Ati pe iṣẹ ṣiṣe yii ṣe iwọn si awọn ohun kohun ti o wa tẹlẹ. Iyẹn ni, ti o ba ni awọn ohun kohun 000, fun apẹẹrẹ, iwọ yoo ṣayẹwo awọn aaye bilionu kan fun iṣẹju kan. Ati ohun-ini yii ti VictoriaMetrics ati ClickHouse dinku iwulo fun downsamling.

Ẹya miiran ni pe VictoriaMetrics ṣe imunadoko data yii ni imunadoko. Funmorawon ni apapọ ni iṣelọpọ jẹ lati 0,4 si 0,8 awọn baiti fun aaye kan. Ojuami kọọkan jẹ aami timestamp + iye. Ati awọn ti o ti wa ni fisinuirindigbindigbin sinu kere ju ọkan baiti lori apapọ.

Sergey. Mo ni ibere kan. Kini kuatomu akoko igbasilẹ ti o kere ju?

Iseju kan. Laipẹ a ni ibaraẹnisọrọ pẹlu awọn olupilẹṣẹ jara data akoko miiran. Bibẹ pẹlẹbẹ akoko wọn to kere julọ jẹ iṣẹju-aaya kan. Ati ni Graphite, fun apẹẹrẹ, o tun jẹ iṣẹju-aaya kan. Ni OpenTSDB o tun jẹ iṣẹju-aaya kan. InfluxDB ni iṣojuuwọn nanosecond. Ni VictoriaMetrics o jẹ millisecond kan, nitori ni Prometheus o jẹ millisecond kan. Ati VictoriaMetrics ti ni idagbasoke ni akọkọ bi ibi ipamọ latọna jijin fun Prometheus. Ṣugbọn nisisiyi o le fi data pamọ lati awọn ọna ṣiṣe miiran.

Eniyan ti mo ba sọrọ sọ pe wọn ni deede-keji si iṣẹju-aaya - iyẹn to fun wọn nitori pe o da lori iru data ti o wa ni ipamọ ninu data jara akoko. Ti eyi ba jẹ data DevOps tabi data lati awọn amayederun, nibiti o ti gba ni awọn aaye arin ti awọn aaya 30, fun iṣẹju kan, lẹhinna deede keji ti to, iwọ ko nilo ohunkohun ti o kere si. Ati pe ti o ba gba data yii lati awọn eto iṣowo igbohunsafẹfẹ giga, lẹhinna o nilo deede nanosecond.

Ipeye Millisecond ni VictoriaMetrics tun dara fun ọran DevOps, ati pe o le dara fun pupọ julọ awọn ọran ti Mo mẹnuba ni ibẹrẹ ijabọ naa. Ohun kan ṣoṣo fun eyiti o le ma dara ni awọn eto iṣowo igbohunsafẹfẹ giga.

E dupe! Ati ibeere miiran. Kini ibamu ni PromQL?

Ni kikun sẹhin ibamu. VictoriaMetrics ṣe atilẹyin PromQL ni kikun. Ni afikun, o ṣe afikun iṣẹ ṣiṣe ilọsiwaju ni PromQL, eyiti a pe MetricsQL. Ọrọ kan wa lori YouTube nipa iṣẹ ṣiṣe ti o gbooro sii. Mo sọ ni Ipade Abojuto ni orisun omi ni St.

Ikanni Telegram VictoriaMetrics.

Awọn olumulo ti o forukọsilẹ nikan le kopa ninu iwadi naa. wọle, Jowo.

Kini idilọwọ ọ lati yipada si VictoriaMetrics bi ibi ipamọ igba pipẹ rẹ fun Prometheus? (Kọ sinu awọn asọye, Emi yoo ṣafikun rẹ si ibo ibo))

  • 71,4%Nko lo Prometheus5

  • 28,6%Ko mọ nipa VictoriaMetrics2

7 olumulo dibo. 12 olumulo abstained.

orisun: www.habr.com

Fi ọrọìwòye kun