E-ea ho optimizations ho VictoriaMetrics. Alexander Valyalkin

Ke khothaletsa hore u bale sengoloa sa tlaleho ea morao-rao ea 2019 ea Alexander Valyalkin "E-ea optimizations ho VictoriaMetrics"

VictoriaMetrics - DBMS e potlakileng le e ka senyehang bakeng sa ho boloka le ho sebetsana le data ka mokhoa oa letoto la nako (rekoto e etsa nako le sete ea litekanyetso tse tsamaellanang le nako ena, mohlala, e fumanoang ka ho khetha nako le nako ea boemo ba li-sensor kapa ho bokella methapo).

E-ea ho optimizations ho VictoriaMetrics. Alexander Valyalkin

Sehokelo sa video ea tlaleho ena ke sena - https://youtu.be/MZ5P21j_HLE

Li-slide

E-ea ho optimizations ho VictoriaMetrics. Alexander Valyalkin

Re bolelle ka uena. Ke Alexander Valyalkin. Mona akhaonto ea ka ea GitHub. Ke chesehela Go le ho ntlafatsa ts'ebetso. Ke ngotse lilaebrari tse ngata tse molemo le tse seng molemo hakaalo. Ba qala ka leha e le efe fast, kapa ka quick sehlongoapele.

Hajoale ke sebetsa ho VictoriaMetrics. Ke eng mme ke etsa eng moo? Ke tla bua ka sena tlhahisong ena.

E-ea ho optimizations ho VictoriaMetrics. Alexander Valyalkin

Kemiso ea tlaleho e tjena:

  • Pele, ke tla u joetsa hore na VictoriaMetrics ke eng.
  • Joale ke tla u bolella hore na letoto la nako ke lefe.
  • Ebe ke tla u joetsa hore na letoto la letoto la nako le sebetsa joang.
  • Ka mor'a moo, ke tla u bolella ka meralo ea database: hore na e na le eng.
  • 'Me joale ha re feteleng pele ho lintlafatso tseo VictoriaMetrics e nang le tsona. Sena ke optimization bakeng sa index inverted le optimization bakeng sa ho kenngwa tshebetsong ha bitset ho Go.

E-ea ho optimizations ho VictoriaMetrics. Alexander Valyalkin

Na ho na le motho har'a bamameli ea tsebang hore na VictoriaMetrics ke eng? Wow, batho ba bangata ba se ba ntse ba tseba. Ke litaba tse monate. Bakeng sa ba sa tsebeng, ena ke pokello ea nako. E ipapisitse le meralo ea ClickHouse, lintlha tse ling tsa ts'ebetsong ea ClickHouse. Mohlala, ho tse kang: MergeTree, lipalo tse tšoanang ho li-processor cores tsohle tse fumanehang le ntlafatso ea ts'ebetso ka ho sebetsa ho li-block tsa data tse behiloeng ka har'a cache ea processor.

VictoriaMetrics e fana ka compression e betere ea data ho feta li-database tse ling tsa letoto la nako.

E lekanya ka mokhoa o otlolohileng - ke hore, o ka eketsa li-processor tse eketsehileng, RAM e eketsehileng khomphuteng e le 'ngoe. VictoriaMetrics e tla sebelisa lisebelisoa tsena tse fumanehang ka katleho 'me e tla ntlafatsa tlhahiso ea mohala.

VictoriaMetrics e boetse e lekanya ka holimo - ke hore, o ka eketsa li-node ho sehlopha sa VictoriaMetrics, 'me ts'ebetso ea eona e tla eketseha ka mokhoa o batlang o lekana.

Joalo ka ha u nahanne, VictoriaMetrics ke database e potlakileng, hobane ha ke khone ho ngola ba bang. 'Me e ngotsoe ho Go, kahoo ke bua ka eona kopanong ena.

E-ea ho optimizations ho VictoriaMetrics. Alexander Valyalkin

Ke mang ea tsebang hore na letoto la nako ke eng? Hape o tseba batho ba bangata. Letoto la nako ke letoto la lipara (timestamp, значение), moo lipara tsena li hlophisoang ka nako. Boleng ke nomoro ea ntlha e phaphametseng - float64.

Letoto le leng le le leng la nako le khetholloa ka senotlolo. Senotlolo see se akarelletsa eng? E na le sete e se nang letho ea li-key-value pairs.

Mohlala oa letoto la linako ke ona. Senotlolo sa letoto lena ke lethathamo la lipara: __name__="cpu_usage" ke lebitso la metric, instance="my-server" - ena ke komporo eo metric ena e bokelloang ho eona, datacenter="us-east" - ena ke setsi sa data moo khomphuta ena e leng teng.

Re ile ra qetella re e-na le letoto la nako le nang le lipara tse tharo tsa bohlokoa. Senotlolo sena se lumellana le lethathamo la lipara (timestamp, value). t1, t3, t3, ..., tN - tsena ke litempe tsa linako, 10, 20, 12, ..., 15 - litekanyetso tse tsamaellanang. Ena ke ts'ebeliso ea cpu ka nako e fanoeng bakeng sa letoto le fanoeng.

E-ea ho optimizations ho VictoriaMetrics. Alexander Valyalkin

Letoto la linako le ka sebelisoa hokae? Na ho na le motho ea nang le maikutlo?

  • Ho DevOps, o ka lekanya CPU, RAM, marang-rang, rps, palo ea liphoso, jj.
  • IoT - re ka lekanya mocheso, khatello, lihokela tsa geo le ntho e 'ngoe.
  • Hape lichelete - re ka shebella litheko tsa mefuta eohle ea li-stock le lichelete.
  • Ho feta moo, letoto la nako le ka sebelisoa ho lekola lits'ebetso tsa tlhahiso lifemeng. Re na le basebelisi ba sebelisang VictoriaMetrics ho beha leihlo li-turbine tsa moea, bakeng sa liroboto.
  • Letoto la nako le lona le thusa ho bokella tlhahisoleseling ho tsoa ho li-sensor tsa lisebelisoa tse fapaneng. Ka mohlala, bakeng sa enjene; bakeng sa ho lekanya khatello ea mabili; bakeng sa ho lekanya lebelo, sebaka; bakeng sa ho lekanya tšebeliso ea peterole, joalo-joalo.
  • Letoto la nako le ka boela la sebelisoa ho beha leihlo lifofane. Sefofane se seng le se seng se na le lebokose le letšo le bokellang letoto la nako bakeng sa maemo a fapaneng a bophelo ba sefofane. Letoto la nako le boetse le sebelisoa indastering ea lifofane.
  • Tlhokomelo ea bophelo bo botle ke khatello ea mali, ho otla ha pelo, joalo-joalo.

Ho ka 'na ha e-ba le lisebelisoa tse ling tseo ke li lebetseng, empa ke tšepa hore u utloisisa hore lihlopha tsa nako li sebelisoa ka mafolofolo lefatšeng la kajeno. 'Me boholo ba tšebeliso ea bona bo ntse bo eketseha selemo le selemo.

E-ea ho optimizations ho VictoriaMetrics. Alexander Valyalkin

Hobaneng o hloka database ea letoto la nako? Hobaneng o sa khone ho sebelisa database ea kamehla ea likamano ho boloka letoto la nako?

Hobane letoto la nako hangata le na le tlhaiso-leseling e ngata, eo ho leng thata ho e boloka le ho e sebetsa litsing tse tloaelehileng. Ka hona, ho ile ha hlaha li-database tse khethehileng tsa letoto la nako. Metheo ena e boloka lintlha hantle (timestamp, value) ka senotlolo se fanoeng. Ba fana ka API ea ho bala data e bolokiloeng ka senotlolo, ka konopo e le 'ngoe ea boleng, kapa ka lipara tse ngata tsa bohlokoa, kapa ka regexp. Mohlala, o batla ho fumana mojaro oa CPU oa lits'ebeletso tsohle tsa hau setsing sa data Amerika, ebe o hloka ho sebelisa potso ena ea pseudo.

Ka tloaelo li-database tsa letoto la nako li fana ka lipuo tse ikhethang tsa lipotso hobane letoto la nako la SQL ha lea tšoanela hantle. Leha ho na le li-database tse tšehetsang SQL, ha e ea nepahala haholo. Botsa lipuo tse kang PromQL, InfluxQL, phalla, Q. Ke tšepa hore ho na le motho ea utloileng bonyane e 'ngoe ea lipuo tsena. Mohlomong batho ba bangata ba utloile ka PromQL. Ena ke puo ea potso ea Prometheus.

E-ea ho optimizations ho VictoriaMetrics. Alexander Valyalkin

Sena ke seo meralo ea li-database ea sejoale-joale e shebahalang e sebelisa mohlala oa VictoriaMetrics.

E na le likarolo tse peli. Ena ke polokelo ea index e sothehileng le polokelo ea boleng ba letoto la nako. Libaka tsena tsa polokelo li arohane.

Ha rekoto e ncha e fihla sebakeng sa polokelo ea litaba, re qala ka ho fumana index ea inverted ho fumana sekhetho sa nako bakeng sa sete e fanoeng. label=value bakeng sa metric e fanoeng. Re fumana sekhetho sena mme re boloka boleng ba polokelo ea data.

Ha kopo e fihla ea ho khutlisa data ho tsoa ho TSDB, re qala ho ea ho index e inverted. Ha re fumaneng tsohle timeseries_ids litlaleho tse lumellanang le sehlopha sena label=value. 'Me joale re fumana lintlha tsohle tse hlokahalang ho tloha polokelong ea data, e bontšitsoeng ke timeseries_ids.

E-ea ho optimizations ho VictoriaMetrics. Alexander Valyalkin

Ha re shebeng mohlala oa kamoo letoto la li-database le sebetsanang le potso e tlang ea khetho.

  • Pele ho tsohle o fumana tsohle timeseries_ids ho tsoa ho index e sothehileng e nang le lipara tse fanoeng label=value, kapa ho khotsofatsa polelo e fanoeng kamehla.
  • Ebe e fumana lintlha tsohle tsa data ho tloha polokelong ea data ka nako e behiloeng bakeng sa ba fumanoeng timeseries_ids.
  • Kamora sena, database e etsa lipalo tse ling lintlheng tsena tsa data, ho latela kopo ea mosebelisi. 'Me ka mor'a moo e khutlisetsa karabo.

Tlhahisong ena ke tla u bolella ka karolo ea pele. Ena ke patlo timeseries_ids ka indexed inverted. U ka shebella karolo ea bobeli le karolo ea boraro hamorao Mehloli ea VictoriaMetrics, kapa ema ho fihlela ke lokisa litlaleho tse ling :)

E-ea ho optimizations ho VictoriaMetrics. Alexander Valyalkin

Ha re feteleng ho index e sothehileng. Ba bangata ba ka 'na ba nahana hore sena se bonolo. Ke mang ea tsebang hore na index inverted ke eng le hore na e sebetsa joang? Oh, ha ho sa le batho ba bangata hakaalo. Ha re leke ho utloisisa hore na ke eng.

Ha e le hantle e bonolo. Ke buka e hlalosang mantsoe feela e etsang 'mapa oa bohlokoa. Senotlolo ke eng? Banyalani bana label=valuekae label и value - ena ke mela. Mme boleng ke sete timeseries_ids, e kenyeletsang para e fanoeng label=value.

Inverted index e u lumella ho fumana tsohle kapele timeseries_ids, tse faneng ka tsona label=value.

E boetse e u lumella ho fumana kapele timeseries_ids letoto la nako bakeng sa lipara tse 'maloa label=value, kapa bakeng sa banyalani label=regexp. See se etsahala joang? Ka ho fumana mateano a litsela tsa sete timeseries_ids bakeng sa para ka 'ngoe label=value.

E-ea ho optimizations ho VictoriaMetrics. Alexander Valyalkin

Ha re shebeng ts'ebetsong e fapaneng ea index e fetotsoeng. Ha re qaleng ka ts'ebetso e bonolo ka ho fetisisa e se nang kelello. O shebahala tjena.

Mosebetsi getMetricIDs e fumana lethathamo la likhoele. Mohala o mong le o mong o na le label=value. Mosebetsi ona o khutlisa lenane metricIDs.

E sebetsa joang? Mona re na le phetoho ea lefats'e e bitsoang invertedIndex. Ena ke bukantswe e tlwaelehileng (map), e tla etsa 'mapa oa khoele ho arola ints. Mohala o na le label=value.

Ts'ebetsong ea mosebetsi: fumana metricIDs bakeng sa pele label=value, ebe re feta har'a tse ling kaofela label=value, rea e fumana metricIDs bakeng sa bona. Mme o bitse tshebetso intersectInts, e tla tšohloa ka tlaase mona. 'Me mosebetsi ona o khutlisa mateano a litsela tsa manane ana.

E-ea ho optimizations ho VictoriaMetrics. Alexander Valyalkin

Joalo ka ha u bona, ho kenya ts'ebetsong index ea inverted ha ho thata haholo. Empa sena ke ts'ebetso e sa utloahaleng. E na le mathata afe? Phoso e ka sehloohong ea ts'ebetsong e se nang kelello ke hore index e joalo e khelohileng e bolokiloe ho RAM. Kamora ho qala ts'ebeliso, re lahleheloa ke index ena. Ha ho na ho boloka index ena ho disk. Lenane le joalo la inverted ha le na monyetla oa hore le tšoanelehe bakeng sa database.

Drawback ea bobeli e boetse e amana le mohopolo. Lenane la inverted le tlameha ho lekana le RAM. Haeba e feta boholo ba RAM, ho hlakile hore re tla tsoa - phoso ea mohopolo. Mme lenaneo le keke la sebetsa.

E-ea ho optimizations ho VictoriaMetrics. Alexander Valyalkin

Bothata bona bo ka rarolloa ka ho sebelisa litharollo tse lokiselitsoeng joalo ka LevelDB, kapa RocksDB.

Ka bokhutšoanyane, re hloka database e re lumellang ho etsa mesebetsi e meraro kapele.

  • Opereishene ea pele ke ho rekota ключ-значение ho database ena. O etsa sena kapele haholo, moo ключ-значение ke likhoele tse sa reroang.
  • Ts'ebetso ea bobeli ke ho batla ka potlako boleng ho sebelisa senotlolo se fanoeng.
  • 'Me ts'ebetso ea boraro ke ho batla ka potlako litekanyetso tsohle ka sehlomathiso se fanoeng.

LevelDB le RocksDB - datha tsena li entsoe ke Google le Facebook. Pele ho ile ha tla LevelDB. Eaba bahlankana ba Facebook ba nka LevelDB mme ba qala ho e ntlafatsa, ba etsa RocksDB. Hona joale hoo e batlang e le li-database tsohle tsa ka hare li sebetsa ho RocksDB ka hare ho Facebook, ho kenyeletsa le tse fetiselitsoeng ho RocksDB le MySQL. Ba mo reha lebitso MyRocks.

Lenane la inverted le ka kenngoa ts'ebetsong ho sebelisoa LevelDB. Joang ho e etsa? Re boloka e le senotlolo label=value. Mme boleng ke sesupo sa letoto la nako moo para e leng teng label=value.

Haeba re na le letoto la linako tse ngata le para e fanoeng label=value, joale ho tla ba le mela e mengata ho database ena e nang le senotlolo se tšoanang le se fapaneng timeseries_ids. Ho fumana lethathamo la tsohle timeseries_ids, e qalang ka sena label=prefix, re etsa skena sa marang-rang seo database ena e ntlafalitsoeng bakeng sa sona. Ke hore, re khetha mela eohle e qalang label=prefix mme o fumane tse hlokahalang timeseries_ids.

E-ea ho optimizations ho VictoriaMetrics. Alexander Valyalkin

Mona ke mohlala oa ts'ebetso ea hore na e ka shebahala joang ho Go. Re na le index inverted. Ena ke LevelDB.

Ts'ebetso e ts'oana le ts'ebetsong e se nang kelello. E pheta ts'ebetsong e se nang kelello hoo e ka bang mola ka mola. Taba feela ke hore ho e-na le ho retelehela ho map re fihlella index inverted. Re fumana litekanyetso tsohle tsa pele label=value. Ebe re feta har'a lipara tsohle tse setseng label=value 'me u ba fumanele li-metricID tse tsamaellanang. Ebe re fumana mateano.

E-ea ho optimizations ho VictoriaMetrics. Alexander Valyalkin

Ntho e 'ngoe le e' ngoe e bonahala e le ntle, empa ho na le litšitiso ho tharollo ena. VictoriaMetrics qalong e sebelisitse indexed inverted e thehiloeng ho LevelDB. Empa qetellong ke ile ka tlameha ho e tlohela.

Hobaneng? Hobane LevelDB e lieha ho feta ts'ebetsong e se nang kelello. Ts'ebetsong e se nang kelello, ha re fuoa senotlolo se fanoeng, hang-hang re fumana selae sohle metricIDs. Ena ke ts'ebetso e potlakileng haholo - selae sohle se se se loketse ho sebelisoa.

Ho LevelDB, nako le nako ha ts'ebetso e bitsoa GetValues o hloka ho feta mela eohle e qalang label=value. 'Me u fumane boleng ba mola o mong le o mong timeseries_ids. Ea joalo timeseries_ids bokella selae sa tsena timeseries_ids. Ho hlakile hore sena se lieha ho feta ho fihlella 'mapa o tloaelehileng ka senotlolo.

Bothata ba bobeli ke hore LevelDB e ngotsoe ho C. Ho letsetsa C mesebetsi ho tloha Go ha ho potlake haholo. Ho nka makholo a li-nanoseconds. Sena ha se potlake haholo, hobane ha se bapisoa le mohala o tloaelehileng oa ts'ebetso o ngotsoeng ka nako, o nkang 1-5 nanoseconds, phapang ea ts'ebetso ke makhetlo a mashome. Ho VictoriaMetrics ena e ne e le phoso e mpe :)

E-ea ho optimizations ho VictoriaMetrics. Alexander Valyalkin

Kahoo ke ile ka ngola ts'ebetsong ea ka ea inverted index. Mme a mmitsa kopanya.

Mergeset e ipapisitse le sebopeho sa data sa MergeTree. Sebopeho sena sa data se alimiloe ho ClickHouse. Ho hlakile hore mergeset e lokela ho ntlafatsoa bakeng sa ho batla ka potlako timeseries_ids ho latela senotlolo se fanoeng. Mergeset e ngotsoe ka botlalo ho Go. O ka bona Mehloli ea VictoriaMetrics ho GitHub. Ts'ebetsong ea mergeset e ka har'a foldara /lib/mergeset. U ka leka ho fumana hore na ho etsahalang moo.

Mergeset API e tšoana haholo le LevelDB le RocksDB. Ke hore, e u lumella ho boloka lirekoto tse ncha kapele 'me u khethe lirekoto kapele ka sehlomathiso se fanoeng.

E-ea ho optimizations ho VictoriaMetrics. Alexander Valyalkin

Re tla bua ka bofokoli ba mergeset hamorao. Joale a re ke re bue ka hore na ke mathata afe a hlahileng ka VictoriaMetrics tlhahisong ha o kenya ts'ebetsong index e sothehileng.

Ke hobane'ng ha li ile tsa hlaha?

Lebaka la pele ke lebelo le phahameng la churn. E fetoletsoe ho Serussia, ena ke phetoho e etsahalang khafetsa letotong la nako. Mona ke ha letoto la nako le fela mme letoto le lecha le qala, kapa letoto le lecha la nako le qala. 'Me sena se etsahala hangata.

Lebaka la bobeli ke palo e kholo ea letoto la nako. Qalong, ha tlhokomelo e ntse e tsebahala, palo ea lihlopha tsa nako e ne e le nyenyane. Ka mohlala, bakeng sa khomphuta e 'ngoe le e' ngoe u hloka ho shebella CPU, memori, marang-rang le disk load. Letoto la linako tse 4 khomphuteng ka 'ngoe. Ha re re u na le likhomphutha tse 100 le letoto la linako tse 400. Sena se nyane haholo.

Ha nako e ntse e ea, batho ba ile ba nahana hore ba ka khona ho lekanya tlhahisoleseling e eketsehileng. Mohlala, lekanya mojaro eseng oa processor kaofela, empa ka thoko ho mantlha ea processor ka 'ngoe. Haeba u na le li-processor cores tse 40, joale u na le letoto la linako tse 40 ho lekanya mojaro oa processor.

Empa ha se phetho. Mokotla o mong le o mong oa processor o ka ba le linaha tse 'maloa, joalo ka ho sa sebetse, ha o sa sebetse. Hape sebetsa sebakeng sa basebelisi, sebetsa sebakeng sa kernel le libakeng tse ling. 'Me boemo bo bong le bo bong bo joalo bo ka lekanngoa hape e le letoto la nako le arohaneng. Sena se eketsa palo ea mela ka makhetlo a 7-8.

Ho tsoa ho metric e le 'ngoe re fumane 40 x 8 = 320 metrics bakeng sa komporo e le 'ngoe feela. Atisa ka 100, re fumana 32 sebakeng sa 000.

Joale Kubernetes a tla. Mme e ile ea mpefala le ho feta hobane Kubernetes e khona ho amohela lits'ebeletso tse ngata tse fapaneng. Tšebeletso e 'ngoe le e' ngoe e Kubernetes e na le li-pods tse ngata. 'Me sena sohle se hloka ho hlahlojoa. Ho feta moo, re lula re romelloa mefuta e mecha ea litšebeletso tsa hau. Bakeng sa mofuta o mong le o mong o mocha, lethathamo la nako le lecha le tlameha ho etsoa. Ka lebaka leo, palo ea lihlopha tsa nako e ntse e hōla ka potlako 'me re tobane le bothata ba palo e kholo ea nako, e bitsoang high-cardinality. VictoriaMetrics e sebetsana le eona ka katleho ha e bapisoa le li-database tse ling tsa letoto la nako.

E-ea ho optimizations ho VictoriaMetrics. Alexander Valyalkin

Ha re shebeng ka botebo sekhahla se phahameng sa churn. Ke'ng e bakang sekhahla se phahameng sa tlhahiso? Hobane litlhaloso tse ling tsa li-label le li-tag li lula li fetoha.

Ka mohlala, nka Kubernetes, e nang le mohopolo deployment, ke hore ha mofuta o mocha oa ts'ebeliso ea hau o kentsoe. Ka lebaka le itseng, bahlahisi ba Kubernetes ba nkile qeto ea ho eketsa ID ea ho tsamaisa leiboleng.

See se ile sa fella ka eng? Ho feta moo, ka phepelo e 'ngoe le e' ngoe e ncha, letoto lohle la nako ea khale lea sitisoa, 'me sebakeng sa bona, letoto la nako le lecha le qala ka boleng bo bocha ba label. deployment_id. Ho ka ba le makholo a likete esita le limilione tsa mela e joalo.

Ntho ea bohlokoa ka sena sohle ke hore palo eohle ea letoto la nako e ntse e hōla, empa palo ea nako eo hona joale e sebetsang le ho amohela data e lula e le teng. Boemo bona bo bitsoa sekhahla se phahameng sa churn.

Bothata bo boholo ba sekhahla se phahameng sa churn ke ho netefatsa lebelo la ho batla kamehla bakeng sa letoto la linako tsohle bakeng sa sete e fanoeng ea lileibole ka nako e itseng. Ka tloaelo ena ke nako ea hora ea ho qetela kapa letsatsi la ho qetela.

E-ea ho optimizations ho VictoriaMetrics. Alexander Valyalkin

Joang ho rarolla bothata bona? Khetho ea pele ke ena. Sena ke ho arola index inverted ka likarolo tse ikemetseng ha nako e ntse e ea. Ke hore, nako e itseng e feta, re qeta ho sebetsa le index ea hona joale ea inverted. 'Me u thehe index e ncha e fetotsoeng. Nako e 'ngoe ea nako e feta, re theha e' ngoe le e 'ngoe.

'Me ha re etsa sampole ho tsoa ho li-indices tsena tse sothehileng, re fumana sehlopha sa li-indices tse sothehileng tse oelang ka har'a nako e fanoeng. 'Me, ka hona, re khetha id ea letoto la nako ho tloha moo.

Sena se boloka lisebelisoa hobane ha ho hlokahale hore re shebe likarolo tse sa oeleng ka nako e fanoeng. Ke hore, hangata, haeba re khetha data bakeng sa hora e fetileng, ebe bakeng sa linako tse fetileng re tlola lipotso.

E-ea ho optimizations ho VictoriaMetrics. Alexander Valyalkin

Ho na le khetho e 'ngoe ea ho rarolla bothata bona. Sena ke ho boloka bakeng sa letsatsi ka leng lethathamo le arohaneng la li-ID tsa letoto la linako tse etsahetseng ka letsatsi leo.

Monyetla oa tharollo ena ho feta tharollo e fetileng ke hore ha re phete lintlha tsa letoto la nako tse sa nyameleng ha nako e ntse e ea. Li lula li le teng 'me ha li fetohe.

Bothata ke hore tharollo e joalo e thata haholo ho e kenya ts'ebetsong le ho feta ho e lokisa. Mme VictoriaMetrics o khethile tharollo ena. Ke kamoo e etsahetseng historing. Tharollo ena e boetse e sebetsa hantle ha e bapisoa le e fetileng. Hobane tharollo ena ha ea ka ea kenngoa ts'ebetsong ka lebaka la hore hoa hlokahala ho pheta-pheta data karolong e 'ngoe le e' ngoe bakeng sa letoto la nako le sa fetoheng, ke hore, ha le nyamele ha nako e ntse e ea. VictoriaMetrics e ne e ntlafalitsoe haholo-holo bakeng sa tšebeliso ea sebaka sa disk, 'me ts'ebetsong e fetileng e ile ea mpefatsa tšebeliso ea sebaka sa disk. Empa ts'ebetsong ena e loketse hamolemo bakeng sa ho fokotsa tšebeliso ea sebaka sa disk, kahoo e ile ea khethoa.

Ke ile ka tlameha ho mo loantša. Ntoa e ne e le hore ts'ebetsong ena u ntse u hloka ho khetha palo e kholoanyane timeseries_ids bakeng sa data ho feta ha index e inverted e aroloa ka nako.

E-ea ho optimizations ho VictoriaMetrics. Alexander Valyalkin

Re ile ra rarolla bothata boo joang? Re e rarolotse ka tsela ea mantlha - ka ho boloka li-identifiers tsa nako tse 'maloa lethathamong le leng le le leng le sothehileng ho fapana le sekhetho se le seng. Ke hore, re na le senotlolo label=value, e hlahang letotong le leng le le leng la nako. 'Me joale re boloka tse' maloa timeseries_ids ka keno e le nngwe.

Mohlala ke ona. Pele re ne re e-na le litlhaloso tsa N, empa joale re na le keno e le 'ngoe eo sehlomathiso sa eona se ts'oanang le tse ling kaofela. Bakeng sa kenyo e fetileng, boleng bo na le li-ID tsa letoto la linako tsohle.

Sena se ile sa etsa hore ho khonehe ho eketsa lebelo la ho hlahloba index e joalo e sothehileng ka makhetlo a 10. 'Me e re lumelletse ho fokotsa tšebeliso ea mohopolo bakeng sa cache, hobane joale re boloka khoele label=value hang feela ka cache hammoho N linako tse ling. Mme mohala ona o ka ba moholo haeba o boloka mela e melelele ho li-tag le lileibole tsa hau, tseo Kubernetes a ratang ho li sutumelletsa moo.

E-ea ho optimizations ho VictoriaMetrics. Alexander Valyalkin

Kgetho e 'ngoe ea ho potlakisa ho batla ho index e inverted ke sharding. Ho theha li-inverted indexes ho fapana le e le 'ngoe le ho arola data lipakeng tsa tsona ka senotlolo. Sena ke sete key=value mouoane. Ka mantsoe a mang, re fumana li-inverted tse 'maloa tse ikemetseng, tseo re ka li botsang ka ho tšoana ho li-processor tse' maloa. Ts'ebetsong ea nakong e fetileng e ne e lumella ts'ebetso feela ka mokhoa oa processor e le 'ngoe, ke hore, ho hlahloba lintlha ka motheo o le mong feela. Tharollo ena e u lumella ho lekola data ho li-cores tse 'maloa ka nako e le ngoe, joalo ka ha ClickHouse e rata ho e etsa. Sena ke seo re rerileng ho se phethahatsa.

E-ea ho optimizations ho VictoriaMetrics. Alexander Valyalkin

Joale ha re khutleleng linkung tsa rona – tšebetsong ea mateano timeseries_ids. Ha re nahaneng hore na ho ka ba le ts'ebetsong efe. Sesebelisoa sena se u lumella ho fumana timeseries_ids bakeng sa sete e fanoeng label=value.

E-ea ho optimizations ho VictoriaMetrics. Alexander Valyalkin

Khetho ea pele ke ts'ebetso e se nang kelello. Li-loops tse peli tsa sehlaha. Mona re fumana tlhahiso ea tšebetso intersectInts lilae tse peli - a и b. Ka tlhahiso, e lokela ho khutlisetsa ho rona mateano a lilae tsena.

Ts'ebetso e se nang kelello e shebahala tjena. Re pheta-pheta litekanyetso tsohle ho tloha selae a, ka har'a loop ena re feta har'a boleng bohle ba selae b. Mme re bapisa tsona. Haeba li lumellana, joale re fumane mateano a litsela. 'Me u e boloke ka hare result.

E-ea ho optimizations ho VictoriaMetrics. Alexander Valyalkin

Ke mefokolo efe? Ho rarahana ha quadratic ke drawback ea eona e kholo. Mohlala, haeba litekanyo tsa hau li le selae a и b milione e le 'ngoe ka nako, joale ts'ebetso ena e ke ke ea hlola e khutlisa karabo ho uena. Hobane e tla hloka ho etsa makhetlo a trilione e le 'ngoe, e leng ntho e ngata le bakeng sa lik'homphieutha tsa morao-rao.

E-ea ho optimizations ho VictoriaMetrics. Alexander Valyalkin

Ts'ebetsong ea bobeli e thehiloe 'mapeng. Re theha 'mapa. Re kenya lintlha tsohle tsa boleng ho tloha selaneng 'mapeng ona a. Ebe re tšela selae ka loop e arohaneng b. 'Me re hlahloba hore na boleng bona bo tsoa selae b 'mapeng. Haeba e teng, e kenyelle sephethong.

E-ea ho optimizations ho VictoriaMetrics. Alexander Valyalkin

Melemo ke efe? Molemo ke hore ho na le ho rarahana ha linear feela. Ke hore, ts'ebetso e tla sebetsa kapele haholo bakeng sa lilae tse kholoanyane. Bakeng sa selae sa boholo ba milione, ts'ebetso ena e tla sebetsa ka makhetlo a limilione tse 2, ho fapana le makhetlo a litrilione a ts'ebetso e fetileng.

Taba e mpe ke hore ts'ebetso ena e hloka mohopolo o mongata ho theha 'mapa ona.

Bothata ba bobeli ke karolo e kholo ea hashing. Drawback ena ha e bonahale haholo. Mme ho rona e ne e boetse e sa totobala haholo, ka hona qalong ho VictoriaMetrics ts'ebetsong ea mateano a litsela e ne e le ka 'mapa. Empa profiling e bonts'itse hore nako ea mantlha ea processor e sebelisoa ho ngolla 'mapa le ho hlahloba boteng ba boleng' mapeng ona.

Ke hobane'ng ha nako ea CPU e senyeha libakeng tsee? Hobane Go etsa ts'ebetso ea hashing meleng ena. Ka mantsoe a mang, e bala hash ea senotlolo e le hore e ka e fumana ka index e fanoeng ho HashMap. Ts'ebetso ea ho bala hash e phetheloa ka mashome a nanoseconds. Sena se lieha ho VictoriaMetrics.

E-ea ho optimizations ho VictoriaMetrics. Alexander Valyalkin

Ke nkile qeto ea ho kenya tšebetsong bitset e ntlafalitsoeng ka ho khetheha bakeng sa nyeoe ena. Ke kamoo mateano a lilae tse peli a shebahalang ka teng. Mona re theha bitset. Re eketsa likarolo ho tloha selae sa pele ho eona. Ebe re hlahloba boteng ba likarolo tsena karolong ea bobeli. 'Me u li kenye sephethong. Ke hore, e batla e sa fapane le mohlala o fetileng. Ntho feela mona ke hore re nkele sebaka sa ho fumana 'mapa ka mesebetsi e tloaelehileng add и has.

E-ea ho optimizations ho VictoriaMetrics. Alexander Valyalkin

Ha u sheba ka lekhetlo la pele, ho bonahala eka sena se lokela ho sebetsa butle, haeba pele ho ne ho sebelisoa 'mapa o tloaelehileng moo, ebe ho bitsoa mesebetsi e meng, empa profiling e bontša hore ntho ena e sebetsa ka makhetlo a 10 ka potlako ho feta' mapa o tloaelehileng tabeng ea VictoriaMetrics.

Ho feta moo, e sebelisa mohopolo o fokolang haholo ha o bapisoa le ts'ebetsong ea 'mapa. Hobane re boloka likotoana mona ho fapana le boleng ba li-byte tse robeli.

Bothata ba ts'ebetsong ena ke hore ha e totobetse hakaalo, ha e nyenyane.

Tšitiso e 'ngoe eo ba bangata ba ke keng ba e hlokomela ke hore ts'ebetsong ena e kanna ea se sebetse hantle maemong a mang. Ke hore, e ntlafalitsoe bakeng sa nyeoe e itseng, bakeng sa nyeoe ena ea matekoane a li-ID tsa letoto la nako la VictoriaMetrics. Sena ha se bolele hore e loketse linyeoe tsohle. Haeba e sebelisoa hampe, re ke ke ra fumana keketseho ea ts'ebetso, empa phoso ea ho tsoa mohopolong le ho fokotseha ha ts'ebetso.

E-ea ho optimizations ho VictoriaMetrics. Alexander Valyalkin

A re ke re nahaneng ka ts'ebetsong ea sebopeho sena. Haeba u batla ho sheba, e fumaneha mehloling ea VictoriaMetrics, foldareng lib/uint64set. E ntlafalitsoe ka ho khetheha bakeng sa nyeoe ea VictoriaMetrics, moo timeseries_id ke boleng ba 64-bit, moo li-bits tse 32 tsa pele li sa fetoheng 'me ke tse 32 feela tsa ho qetela li fetohang.

Sebopeho sena sa data ha se bolokoe ho disk, se sebetsa feela mohopolong.

E-ea ho optimizations ho VictoriaMetrics. Alexander Valyalkin

Mona ke API ea eona. Ha e thata haholo. API e etselitsoe mohlala o ikhethileng oa ho sebelisa VictoriaMetrics. Ke hore, ha ho na mesebetsi e sa hlokahaleng mona. Mona ke mesebetsi e sebelisoang ka ho hlaka ke VictoriaMetrics.

Ho na le mesebetsi add, e eketsang litekanyetso tse ncha. Ho na le ts'ebetso has, e hlahlobang boleng bo bocha. Mme ho na le tshebetso del, e tlosang litekanyetso. Ho na le ts'ebetso ea mothusi len, e khutlisetsang boholo ba sete. Mosebetsi clone clones haholo. Le tshebetso appendto fetola sete sena ho sekoto timeseries_ids.

E-ea ho optimizations ho VictoriaMetrics. Alexander Valyalkin

Sena ke seo ts'ebetsong ea sebopeho sena sa data se shebahalang ka sona. setlama se na le lintlha tse peli:

  • ItemsCount ke sebaka sa mothusi ho khutlisetsa kapele palo ea likarolo ka sete. Ho ne ho ka khoneha ho etsa ntle le ts'ebetso ena e thusang, empa e ne e tlameha ho eketsoa mona hobane VictoriaMetrics hangata e botsa bolelele ba bitset ho li-algorithms tsa eona.

  • Tšimo ea bobeli ke buckets. Sena ke selae ho tloha sebopeho bucket32. Sebopeho ka seng se boloka hi lebala. Tsena ke li-bits tse 32 tse holimo. Le lilae tse peli - b16his и buckets ho tswa bucket16 meaho.

Li-bits tse 16 tse holimo tsa karolo ea bobeli ea sebopeho sa 64-bit li bolokiloe mona. 'Me mona li-bitsets li bolokiloe bakeng sa li-bits tse ka tlase tse 16 tsa byte ka' ngoe.

Bucket64 e na le sehlopha uint64. Bolelele bo baloa ho sebelisoa li-constants tsena. Ho e 'ngoe bucket16 boholo bo ka bolokoa 2^16=65536 hanyane. Haeba u arola sena ka 8, joale ke 8 kilobytes. Haeba u arola ka 8 hape, ke 1000 uint64 moelelo. Ke hore Bucket16 - ena ke sebopeho sa rona sa 8-kilobyte.

E-ea ho optimizations ho VictoriaMetrics. Alexander Valyalkin

Ha re shebeng hore na e 'ngoe ea mekhoa ea sebopeho sena ea ho eketsa boleng bo bocha e sebelisoa joang.

Tsohle li qala ka uint64 meelelo. Re bala li-bits tse 32 tse ka holimo, re bala li-bits tse 32 tse tlase. Ha re hlahlobeng tsohle buckets. Re bapisa li-bits tse 32 tse holimo ka har'a bakete ka 'ngoe le boleng bo ntseng bo eketsoa. 'Me haeba li lumellana, joale re bitsa mosebetsi add ka sebopeho b32 buckets. Ebe u eketsa li-bits tse 32 tse tlase moo. 'Me haeba e ile ea khutla true, joale sena se bolela hore re ekelitse boleng bo joalo mono ra se be le boleng bo joalo. Haeba e khutla false, joale moelelo o joalo o ne o se o ntse o le teng. Ebe re eketsa palo ea likarolo tsa sebopeho.

Haeba ha re so fumane eo u e hlokang bucket ka hi-value e hlokahalang, joale re bitsa mosebetsi addAlloc, e tla hlahisa e ncha bucket, ho e eketsa mohahong oa bakete.

E-ea ho optimizations ho VictoriaMetrics. Alexander Valyalkin

Ena ke ts'ebetsong ea mosebetsi b32.add. E tšoana le ts'ebetsong e fetileng. Re bala li-bits tse bohlokoa ka ho fetisisa tse 16, tse bohlokoa haholo tse 16.

Ebe re fetela likotoana tsohle tse ka holimo tse 16. Re fumana lipapali. 'Me haeba ho na le papali, re bitsa mokhoa oa ho eketsa, oo re tla o hlahloba leqepheng le latelang bucket16.

E-ea ho optimizations ho VictoriaMetrics. Alexander Valyalkin

'Me mona ke boemo bo tlaase ka ho fetisisa, bo lokelang ho ntlafatsoa ka hohle kamoo ho ka khonehang. Re bala bakeng sa uint64 boleng ba id ka selae bit le hape bitmask. Ena ke mask bakeng sa boleng bo fanoeng ba 64-bit, e ka sebelisoang ho lekola boteng ba karolo ena, kapa ho e beha. Re hlahloba ho bona hore na karolo ena e behiloe le ho e beha, le ho khutlisetsa boteng. Ena ke ts'ebetsong ea rona, e ileng ea re lumella ho potlakisa ts'ebetso ea li-ID tsa nako ea li-intersecting ka makhetlo a 10 ho bapisoa le limmapa tse tloaelehileng.

E-ea ho optimizations ho VictoriaMetrics. Alexander Valyalkin

Ntle le ntlafatso ena, VictoriaMetrics e na le lintlafatso tse ling tse ngata. Boholo ba lintlafatso tsena li kentsoe ka lebaka, empa kamora ho hlahisa khoutu tlhahisong.

Ona ke molao oa mantlha oa ts'ebetso - se ke oa eketsa ts'ebetso ka ho nka hore ho tla ba le bothata mona, hobane ho kanna ha fumaneha hore ho ke ke ha ba le bothata moo. Ntlafatso hangata e theola boleng ba khoutu. Ka hona, ho bohlokoa ho ntlafatsa feela ka mor'a ho fana ka profil mme ka ho khetheha tlhahisong, e le hore ena ke data ea 'nete. Haeba ho na le motho ea thahasellang, u ka sheba khoutu ea mohloli oa VictoriaMetrics 'me u hlahlobe lintlafatso tse ling tse teng.

E-ea ho optimizations ho VictoriaMetrics. Alexander Valyalkin

Ke na le potso ka bitset. E ts'oana haholo le ts'ebetsong ea bool ea C ++ vector, bitset e ntlafalitsoeng. Na u nkile ts'ebetsong ho tloha moo?

Che, eseng ho tloha moo. Ha ke kenya ts'ebetsong bitset ena, ke ne ke tataisoa ke tsebo ea sebopeho sa li-timeseries tsena tsa ids, tse sebelisoang ho VictoriaMetrics. 'Me sebopeho sa bona se joalo hoo li-bits tse 32 tse ka holimo li sa fetoheng. Li-bits tse 32 tse tlase li ka fetoha. Ha e le tlase hanyane, hangata e ka fetoha. Ka hona, ts'ebetsong ena e ntlafalitsoe ka ho khetheha bakeng sa sebopeho sena sa data. Ts'ebetsong ea C ++, ho ea kamoo ke tsebang, e ntlafalitsoe bakeng sa nyeoe e akaretsang. Haeba u ntlafatsa bakeng sa nyeoe e akaretsang, sena se bolela hore e ke ke ea e-ba eona e nepahetseng ka ho fetisisa bakeng sa nyeoe e itseng.

Ke boetse ke u eletsa hore u shebe tlaleho ea Alexey Milovid. Hoo e ka bang khoeli e fetileng, o ile a bua ka optimization ho ClickHouse bakeng sa litsebo tse khethehileng. O mpa a re ka kakaretso, ts'ebetsong ea C ++ kapa ts'ebetsong e 'ngoe e etselitsoe ho sebetsa hantle ka karolelano sepetlele. E kanna ea sebetsa hampe ho feta ts'ebetsong e ikhethileng joalo ka ea rona, moo re tsebang hore li-bits tse 32 tse holimo ha li fetohe.

Ke na le potso ea bobeli. Phapang ea mantlha ke efe ho tloha ho InfluxDB?

Ho na le liphapang tse ngata tsa motheo. Mabapi le ts'ebetso ea ts'ebetso le ts'ebeliso ea memori, InfluxDB litekong e bonts'a ts'ebeliso ea memori ka makhetlo a 10 bakeng sa letoto le phahameng la nako, ha o na le tse ngata, mohlala, limilione. Mohlala, VictoriaMetrics e sebelisa 1 GB ho mela e sebetsang ea milione, ha InfluxDB e sebelisa 10 GB. Mme ke phapang e kgolo.

Phapang ea bobeli ea bohlokoa ke hore InfluxDB e na le lipuo tse makatsang tsa lipotso - Flux le InfluxQL. Ha li loketse haholo ho sebetsa le letoto la nako ha li bapisoa le PromQL, e tšehetsoang ke VictoriaMetrics. PromQL ke puo ea lipotso e tsoang ho Prometheus.

'Me phapang e' ngoe hape ke hore InfluxDB e na le mohlala o makatsang oa data, moo mohala o mong le o mong o ka bolokang masimo a 'maloa ka li-tag tse fapaneng. Mela ena e arotsoe hape ka litafole tse fapaneng. Mathata ana a eketsehileng a thatafatsa mosebetsi o latelang le database ena. Ho thata ho tšehetsa le ho utloisisa.

Ho VictoriaMetrics tsohle li bonolo haholo. Moo, letoto le leng le le leng la nako ke bohlokoa-boleng. Boleng ke sehlopha sa lintlha - (timestamp, value), mme senotlolo ke sete label=value. Ha ho na karohano lipakeng tsa masimo le litekanyo. E u lumella ho khetha data efe kapa efe ebe u kopanya, eketsa, ho tlosa, ho atisa, ho arola, ho fapana le InfluxDB moo lipalo lipakeng tsa mela e fapaneng li ntseng li sa kengoa tšebetsong ho ea kamoo ke tsebang. Leha li ka kengoa ts'ebetsong, ho thata, u tlameha ho ngola khoutu e ngata.

Ke na le potso e hlakisang. Na ke ile ka utloisisa hantle hore ho na le mofuta o itseng oa bothata boo u buileng ka bona, hore index ena e inverted ha e kenelle mohopolong, kahoo ho na le karohano moo?

Taba ea pele, ke bonts'itse ts'ebetsong e sa tsebeng letho ea index e sothehileng 'mapeng o tloaelehileng oa Go. Ts'ebetsong ena ha ea tšoanela li-database hobane index ena e sothehileng ha e bolokehe ho disk, mme database e tlameha ho boloka ho disk e le hore data ena e lule e fumaneha ha e qala hape. Ts'ebetsong ena, ha o qala kopo bocha, index ea hau e kentsoeng e tla nyamela. 'Me u tla lahleheloa ke phihlello ea data eohle hobane u ke ke ua khona ho e fumana.

Lumela! Re leboha tlaleho! Lebitso la ka ke Pavel. Ke tsoa Wildberries. Ke na le lipotso bakeng sa hau. Potso ea pele. Na u nahana hore haeba u ne u khethile molao-motheo o fapaneng ha u haha ​​​​meralo ea kopo ea hau 'me u arola data ka nako, mohlomong u ka be u khonne ho fapanyetsana le data ha u ntse u batla, ho itšetlehile feela ka hore karolo e le' ngoe e na le data bakeng sa e le 'ngoe. nako , ke hore, ka nako e le 'ngoe' me u ke ke ua tšoenyeha ka taba ea hore likotoana tsa hau li hasane ka tsela e fapaneng? Nomoro ea potso ea 2 - kaha u sebelisa algorithm e ts'oanang le bitset le ntho e 'ngoe le e' ngoe, mohlomong u lekile ho sebelisa litaelo tsa processor? Mohlomong u lekile ho ntlafatsa joalo?

Ke tla araba ea bobeli hang-hang. Ha re e-so fihle boemong boo. Empa haeba ho hlokahala, re tla fihla moo. Mme ya pele, potso e ne e le efe?

Le buisane ka maemo a mabeli. 'Me ba boletse hore ba khetha ea bobeli e nang le ts'ebetsong e rarahaneng. 'Me ha baa ka ba khetha ea pele, moo data e arotsoeng ka nako.

Ee. Tabeng ea pele, kakaretso ea palo ea index e tla ba kholoanyane, hobane karolong e 'ngoe le e' ngoe re tla tlameha ho boloka boitsebiso bo habeli bakeng sa letoto la nako le tsoelang pele ho pholletsa le likarolo tsena kaofela. 'Me haeba nako ea hau ea nako ea churn e nyenyane, ke hore, lihlopha tse tšoanang li lula li sebelisoa, joale tabeng ea pele re ka lahleheloa haholo ke sebaka sa disk se tšoaretsoeng ha se bapisoa le nyeoe ea bobeli.

'Me kahoo - e, ho arola nako ke khetho e ntle. Prometheus o e sebelisa. Empa Prometheus o na le bothata bo bong hape. Ha o kopanya likarolo tsena tsa data, e hloka ho boloka lintlha tsa meta tsa memori bakeng sa lileibole le linako tsohle. Ka hona, haeba likarolo tsa data tseo e li kopanyang li le kholo, tšebeliso ea mohopolo e eketseha haholo nakong ea ho kopanya, ho fapana le VictoriaMetrics. Ha o kopanya, VictoriaMetrics ha e sebelise mohopolo ho hang; ho sebelisoa li-kilobyte tse 'maloa feela, ho sa tsotelehe boholo ba likotoana tsa data tse kopaneng.

Algorithm eo u e sebelisang e sebelisa mohopolo. E tšoaea li-tag tsa linako tse nang le boleng. 'Me ka tsela ena u hlahloba boteng ba marang-rang sebakeng se le seng sa data le ho se seng. 'Me ua utloisisa hore na intersect e etsahetse kapa che. Ka tloaelo, li-database li kenya li-cursors le li-iterator tse bolokang litaba tsa bona tsa morao-rao le ho tsamaisa boitsebiso bo hlophisitsoeng ka lebaka la ho rarahana ha mesebetsi ena.

Hobaneng re sa sebelise li-cursor ho tšela data?

E.

Re boloka mela e hlophisitsoeng ho LevelDB kapa mergeset. Re ka suthisa khesa ebe re fumana mateano a litsela. Ke hobane'ng ha re sa e sebelise? Hobane e butle. Hobane li-cursors li bolela hore o hloka ho letsetsa tšebetso bakeng sa mohala o mong le o mong. Mohala oa tšebetso ke 5 nanoseconds. 'Me haeba u na le mela e 100, joale ho bonahala eka re qeta halofo ea motsotsoana feela re bitsa mosebetsi.

Ho na le ntho e joalo, e. Le potso ea ka ea ho qetela. Potso e ka 'na ea utloahala e makatsa. Ke hobane'ng ha ho sa khonehe ho bala likarolo tsohle tse hlokahalang ka nako eo data e fihlang ka eona le ho e boloka ka mokhoa o hlokahalang? Hobaneng u boloka meqolo e mengata lits'ebetsong tse ling tse kang VictoriaMetrics, ClickHouse, joalo-joalo, ebe u qeta nako e ngata ho tsona?

Ke tla fana ka mohlala ho e hlakisa haholoanyane. Ha re re sebapadiswa se senyane sa lebelo la ho bapala se sebetsa jwang? E tlaleha sebaka seo u se tsamaileng, ka linako tsohle e e eketsa boleng bo le bong, 'me ea bobeli - nako. Le ho arola. 'Me e fumana lebelo le tloaelehileng. U ka etsa ntho e tšoanang. Kopanya lintlha tsohle tse hlokahalang hang-hang.

Ho lokile, ke utloisisa potso. Mohlala oa hau o na le sebaka sa ona. Haeba u tseba hore na u hloka li-aggregates life, joale ena ke ts'ebetsong e ntle ka ho fetisisa. Empa bothata ke hore batho ba boloka metrics ena, lintlha tse ling ho ClickHouse mme ha ba e-so tsebe hore na ba tla li kopanya joang le ho li sefa nakong e tlang, kahoo ba tlameha ho boloka lintlha tsohle tse tala. Empa haeba u tseba hore u hloka ho bala ntho e itseng ka karolelano, joale ke hobane'ng ha u sa e bale ho e-na le ho boloka bongata ba litekanyetso tse tala moo? Empa sena ke feela ha o tseba hantle seo o se hlokang.

Ka mokhoa o ts'oanang, li-database tsa ho boloka letoto la nako li ts'ehetsa ho baloa ha li-aggregates. Ka mohlala, Prometheus e tšehetsa melao ea ho rekota. Ke hore, sena se ka etsoa haeba u tseba hore na u tla hloka lihlopha life. VictoriaMetrics ha e na sena, empa hangata e etelloa pele ke Prometheus, moo sena se ka etsoang ho melao ea ho rekota.

Ka mohlala, mosebetsing oa ka oa pele ke ne ke hloka ho bala palo ea liketsahalo fensetereng e thellang ka hora e fetileng. Bothata ke hore ke ile ka tlameha ho etsa ts'ebetsong ea tloaelo ho Go, ke hore, tšebeletso ea ho bala ntho ena. Qetellong tšebeletso ena e ne e se ntho e nyenyane, hobane ho thata ho bala. Ts'ebetsong e ka ba bonolo haeba u hloka ho bala likarolo tse ling ka nako e behiloeng. Haeba u batla ho bala liketsahalo ka fensetere e thellang, joale ha e bonolo joalokaha e bonahala. Ke nahana hore sena ha se e-so kenngoe tšebetsong ho ClickHouse kapa ka har'a li-database tsa nako, hobane ho thata ho e sebelisa.

Le potso e 'ngoe hape. Re ne re bua feela ka karolelano, 'me ka hopola hore ho kile ha e-ba le ntho e kang Graphite e nang le mokokotlo oa Carbon. 'Me o ne a tseba ho tšesaane data ea khale, ke hore, tlohela ntlha e le' ngoe ka motsotso, ntlha e le 'ngoe ka hora, joalo-joalo. ho fokotsoa . Empa Prometheus le VictoriaMetrics ha li tšehetse ts'ebetso ena. Na e reriloe ho e tšehetsa? Haeba ha ho joalo, ke hobane'ng?

Ke leboha potso. Basebelisi ba rona ba botsa potso ena nako le nako. Ba botsa hore na re tla eketsa neng tšehetso ea ho theola sampole. Ho na le mathata a 'maloa mona. Taba ea pele, mosebelisi e mong le e mong oa utloisisa downsampling ho hong ho fapaneng: motho o batla ho fumana ntlha efe kapa efe ka nako e itseng, motho e mong o batla boholo, bonyane, boleng ba karolelano. Haeba litsamaiso tse ngata li ngola data ho database ea hau, u ke ke ua e kopanya kaofela. E ka 'na eaba tsamaiso e' ngoe le e 'ngoe e hloka ho fokotseha ho fapaneng. 'Me sena se thata ho se phethahatsa.

'Me ntho ea bobeli ke hore VictoriaMetrics, joalo ka ClickHouse, e ntlafalitsoe bakeng sa ho sebetsa ka bongata bo boholo ba data e tala, kahoo e ka hula mela e limilione tse likete ka nako e ka tlase ho motsotsoana haeba u na le li-cores tse ngata tsamaisong ea hau. Lintlha tsa letoto la nako ho VictoriaMetrics - lintlha tse 50 motsotsoana o mong le o mong. 'Me ts'ebetso ena e fihla ho li-cores tse teng. Ke hore, haeba u na le li-cores tse 000, mohlala, u tla hlahloba lintlha tse bilione motsotsoana. Mme thepa ena ea VictoriaMetrics le ClickHouse e fokotsa tlhoko ea ho theola.

Karolo e 'ngoe ke hore VictoriaMetrics e hatella data ena ka nepo. Ho hatella ka karolelano tlhahiso ho tloha ho 0,4 ho ea ho 0,8 bytes ka ntlha. Ntlha ka 'ngoe ke setempe sa nako + boleng. 'Me e hatelloa ka tlase ho byte e le 'ngoe ka karolelano.

Sergey. Ke na le potso. Nako e fokolang ea ho rekota ke bokae?

millisecond e le 'ngoe. Haufinyane tjena re bile le puisano le baetsi ba li-database tse ling tsa nako. Nako e fokolang ea nako ea bona ke motsotsoana o le mong. 'Me ho Graphite, mohlala, hape ke motsotsoana o le mong. Ho OpenTSDB hape ke motsotsoana o le mong. InfluxDB e na le ho nepahala ha nanosecond. Ho VictoriaMetrics ke millisecond e le 'ngoe, hobane ho Prometheus ke millisecond e le' ngoe. 'Me VictoriaMetrics qalong e ile ea ntlafatsoa e le polokelo e hole bakeng sa Prometheus. Empa joale e ka boloka data ho tsoa lits'ebetsong tse ling.

Motho eo ke buileng le eena o re ba na le ho nepahala ha bobeli ho isa ho motsotsoana - hoo ho lekane bakeng sa bona hobane ho itšetlehile ka mofuta oa data e ntseng e bolokoa sebakeng sa polokelo ea nako. Haeba ena ke data ea DevOps kapa data e tsoang litsing tsa motheo, moo u e bokellang ka nako ea metsotsoana ea 30, ka motsotso, joale ho nepahala ha bobeli ho lekane, ha u hloke letho le fokolang. 'Me haeba u bokella lintlha tsena ho tloha lits'ebetsong tse phahameng tsa khoebo, joale u hloka ho nepahala ha nanosecond.

Ho nepahala ha Millisecond ho VictoriaMetrics le hona ho loketse nyeoe ea DevOps, 'me e ka tšoanela boholo ba linyeoe tseo ke li boletseng qalong ea tlaleho. Ntho feela eo e ka 'nang ea se ke ea e-ba e loketseng ke mekhoa e phahameng ea khoebo ea maqhubu.

Kea leboha! Le potso e 'ngoe. Ho lumellana ho PromQL ke eng?

Tšebelisano e felletseng ea morao. VictoriaMetrics e tšehetsa PromQL ka botlalo. Ntle le moo, e eketsa ts'ebetso e tsoetseng pele ho PromQL, e bitsoang MetricsQL. Ho na le puo ho YouTube mabapi le ts'ebetso ena e atolositsoeng. Ke ile ka bua Sebokeng sa Monitoring nakong ea selemo St. Petersburg.

Lenaneo la thelekramo VictoriaMetrics.

Ke basebelisi ba ngolisitsoeng feela ba ka kenyang letsoho phuputsong. kenaka kopo.

Ke eng e u sitisang ho fetohela ho VictoriaMetrics joalo ka polokelo ea hau ea nako e telele bakeng sa Prometheus? (Ngola maikutlong, ke tla e kenyelletsa phuputsong))

  • 71,4%Ha ke sebelise Prometheus5

  • 28,6%Ke ne ke sa tsebe ka VictoriaMetrics2

Basebelisi ba 7 ba ile ba khetha. Basebelisi ba 12 ba ile ba hana.

Source: www.habr.com

Eketsa ka tlhaloso