Tag hagaajinta VictoriaMetrics. Alexander Vallykin

Waxaan kuu soo jeedinayaa inaad akhrido qoraalka warbixinta dabayaaqadii 2019 ee Alexander Vallyalkin "Go optimizations in VictoriaMetrics"

VictoriaMetrics - DBMS degdeg ah oo la cabbiri karo oo loogu talagalay kaydinta iyo socodsiinta xogta qaab taxane ah (rikoorku wuxuu sameeyaa waqti iyo qiimeyaal qiimeeya waqtigan, tusaale ahaan, laga helo codbixin xilliyeedka ah ee xaaladda dareemayaasha ama ururinta metrik).

Tag hagaajinta VictoriaMetrics. Alexander Vallykin

Halkan ka daawo muuqaalka warbixintan https://youtu.be/MZ5P21j_HLE

Bogag

Tag hagaajinta VictoriaMetrics. Alexander Vallykin

Noo sheeg naftaada. Anigu waxaan ahay Alexander Vallyalkin. Halkan akoonkayga GitHub. Aad ayaan u xiiseeyaa Go iyo tayaynta waxqabadka. Waxaan qoray maktabado badan oo faa'iido leh oo aan faa'iido lahayn. Waxay ku bilaabayaan midkood fast, ama leh quick horgale

Waxaan hadda ka shaqeeyaa VictoriaMetrics. Waa maxay iyo maxaan ka qabanayaa halkaas? Tani waxaan kaga hadli doonaa bandhigan.

Tag hagaajinta VictoriaMetrics. Alexander Vallykin

Nuxurka warbixintu waa sidan.

  • Marka hore, waxaan kuu sheegi doonaa waxa ay tahay VictoriaMetrics.
  • Markaa waxaan kuu sheegi doonaa taxanaha waqtiga.
  • Kadib waxaan kuu sheegi doonaa sida uu u shaqeeyo kaydka kaydka wakhtiga.
  • Marka xigta, waxaan kuu sheegi doonaa wax ku saabsan qaab dhismeedka database-ka: waxa uu ka kooban yahay.
  • Ka dibna aan u gudubno hagaajinta ay VictoriaMetrics leedahay. Tani waa hagaajinta tusmada rogan iyo hagaajinta hirgelinta bitset ee Go.

Tag hagaajinta VictoriaMetrics. Alexander Vallykin

Ma jiraa qof ka mid ah dhagaystayaasha oo yaqaan waxa VictoriaMetrics ay tahay? Wow, dad badan ayaa hore u ogaa. Waa war wanaagsan. Kuwa aan garanayn, tani waa xog-waraysi wakhtiyo taxane ah. Waxay ku salaysan tahay dhismaha ClickHouse, faahfaahinta qaar ee hirgelinta ClickHouse. Tusaale ahaan, sida: MergeTree, xisaabinta isbarbar-dhigga ee dhammaan kombuyuutarrada la heli karo iyo hagaajinta waxqabadka iyadoo laga shaqeynayo blocks xogta ee la geliyo kaydka processor-ka.

VictoriaMetrics waxa ay bixisa isku-buufin xog ka fiican marka loo eego xog-ururinta wakhtiyada kale.

Waxay u miisaamaysaa si toos ah - taas oo ah, waxaad ku dari kartaa processor-ka badan, RAM dheeraad ah hal kumbuyuutar. VictoriaMetrics waxay si guul leh uga faa'iidaysan doontaa agabkan la heli karo waxayna horumarin doontaa wax soo saarka toosan.

VictoriaMetrics sidoo kale waxay u miisaamaysaa si siman - taas oo ah, waxaad ku dari kartaa noodhadhka VictoriaMetrics cluster, waxqabadkeeduna wuxuu u kordhayaa si toos ah.

Sidaad qiyaastay, VictoriaMetrics waa xog-ururin degdeg ah, sababtoo ah anigu ma qori karo kuwa kale. Oo waxay ku qoran tahay Go, markaa waxaan ka hadlayaa kulankaan.

Tag hagaajinta VictoriaMetrics. Alexander Vallykin

Yaa garanaya waxa uu yahay taxanaha waqtigu? Wuxuu kaloo yaqaan dad badan. Taxane waqtigu waa taxane lammaane (timestamp, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅), halkaas oo lammaanahan lagu kala soocayo waqti. Qiimuhu waa nambarka dul sabeynaya - float64.

Waqti kasta oo taxane ah si gaar ah ayaa lagu gartaa furaha. Muxuu ka kooban yahay furahani? Waxa ay ka kooban tahay lamaanayaal qiimo leh oo aan faaruq ahayn.

Halkan waxaa ah tusaale taxane wakhti ah. Furaha taxanahan waa liiska lammaane: __name__="cpu_usage" waa magaca mitirka, instance="my-server" - Kani waa kombuyuutarka lagu ururiyo mitirkan, datacenter="us-east" - kani waa xarunta xogta uu kumbiyuutarkani yaallo.

Waxaan ku soo afjarnay magac taxane ah oo ka kooban saddex lamaane oo qiimo leh. Furahani wuxuu u dhigmaa liiska lammaanaha (timestamp, value). t1, t3, t3, ..., tN - kuwani waa waqtiyo, 10, 20, 12, ..., 15 - qiimaha u dhigma. Kani waa isticmaalka cpu-isticmaalka wakhti go'an oo taxane ah.

Tag hagaajinta VictoriaMetrics. Alexander Vallykin

Xagee loo isticmaali karaa taxanaha waqtiga? Ma jiraa qof wax fikrad ah ka haysta?

  • Gudaha DevOps, waxaad ku cabbiri kartaa CPU, RAM, network, rps, tirada khaladaadka, iwm.
  • IoT - waxaan cabbiri karnaa heerkulka, cadaadiska, isku-duwayaasha geo iyo wax kale.
  • Sidoo kale maaliyadda - waxaan la socon karnaa qiimaha dhammaan noocyada saamiyada iyo lacagaha.
  • Intaa waxaa dheer, taxanaha waqtiga waxaa loo isticmaali karaa la socodka hababka wax soo saarka ee warshadaha. Waxaan leenahay isticmaalayaal u isticmaala VictoriaMetrics si ay ula socdaan marawaxadaha dabaysha, ee robots-ka.
  • Taxanaha wakhtiga ayaa sidoo kale faa'iido u leh ururinta macluumaadka dareemayaasha aaladaha kala duwan. Tusaale ahaan, mishiinka; si loo cabbiro cadaadiska taayirka; si loo cabbiro xawaaraha, masaafada; si loo cabbiro isticmaalka shidaalka, iwm.
  • Taxanaha wakhtiga waxa kale oo loo isticmaali karaa in lagula socdo diyaaradaha. Diyaarad kastaa waxay leedahay sanduuq madow kaas oo ururinaya taxane waqtiyo kala duwan oo ku saabsan caafimaadka diyaaradda. Taxanaha waqtiga ayaa sidoo kale loo isticmaalaa warshadaha hawada sare.
  • Daryeelka caafimaadku waa cadaadiska dhiigga, garaaca wadnaha, iwm.

Waxaa laga yaabaa inay jiraan codsiyo badan oo aan ilaaway, laakiin waxaan rajeynayaa inaad fahantay in taxanaha waqtiga si firfircoon loo isticmaalo adduunka casriga ah. Iyo mugga isticmaalkooda ayaa sii kordhaya sannad kasta.

Tag hagaajinta VictoriaMetrics. Alexander Vallykin

Maxaad ugu baahan tahay xog-ururin waqti-xilliyeed? Maxaad u isticmaali kari la'dahay xog-ururinta xidhiidhka caadiga ah si aad u kaydiso taxanaha wakhtiga?

Sababtoo ah taxanaha wakhtigu wuxuu ka kooban yahay tiro badan oo macluumaad ah, taas oo ay adagtahay in la kaydiyo lagana shaqeeyo kaydadka caadiga ah. Sidaa darteed, xog-ururin khaas ah oo loogu talagalay taxanaha wakhtiga ayaa soo muuqday. Saldhigyadani waxay si wax ku ool ah u kaydiyaan dhibcaha (timestamp, value) oo leh furaha la siiyay. Waxay bixiyaan API si loogu akhriyo xogta kaydsan ee furaha, hal lamaane-qiimihiisu yahay, ama lammaane-qiimo badan, ama regexp. Tusaale ahaan, waxaad doonaysaa inaad ka hesho culayska CPU ee dhammaan adeegyadaada xarun xogeed oo ku taal Ameerika, ka dib waxaad u baahan tahay inaad isticmaasho su'aashan been abuurka ah.

Caadi ahaan xog-ururinta waqtiyadu waxay bixiyaan luqado su'aal gaar ah sababtoo ah SQL oo taxana ah aad uguma habboona. Inkasta oo ay jiraan xog ururin taageeraya SQL, maahan mid ku habboon. Luuqadaha waydiinta sida PromQL, InfluxQL, qulquli, Q. Waxaan rajeynayaa in qof maqlay ugu yaraan mid ka mid ah luqadahan. Dad badan ayaa laga yaabaa inay maqleen wax ku saabsan PromQL. Kani waa luqadda weydiinta Prometheus.

Tag hagaajinta VictoriaMetrics. Alexander Vallykin

Tani waa waxa qaab-dhismeedka xogta taxanaha wakhtiga casriga ah u eg yahay iyadoo la isticmaalayo VictoriaMetrics tusaale ahaan.

Waxay ka kooban tahay laba qaybood. Tani waa kaydinta tusmada rogan iyo kaydinta qiyamka taxanaha wakhtiga. Kaydadkan waa la kala saaray.

Marka uu diiwaan cusub yimaado kaydka, waxaan marka hore gal galnaa tusmada rogan si aan u helno tilmaanta taxanaha wakhtiga ee go'an label=value mitir la siiyay. Waxaan helnaa tilmaantan oo waxaan ku kaydinay qiimaha kaydka xogta.

Marka codsi yimaaddo soo celinta xogta TSDB, waxaan marka hore aadnaa tusmada leexsan. Aynu helno wax walba timeseries_ids diiwaanada ku habboon setkan label=value. Ka dibna waxaan ka helnaa dhammaan xogta lagama maarmaanka ah ee bakhaarka xogta, oo lagu tilmaamay timeseries_ids.

Tag hagaajinta VictoriaMetrics. Alexander Vallykin

Aynu eegno tusaale ahaan sida xog-wareedka wakhtiyada taxanaha ahi u hawl galo su'aal xul ah oo soo socda.

  • Marka hore wax walba way heshaa timeseries_ids laga soo bilaabo tusmada rogan oo ka kooban lamaanaha la bixiyay label=value, ama qanci odhaah joogto ah oo la bixiyay.
  • Kadibna waxay dib u soo ceshataa dhammaan dhibcaha xogta kaydinta xogta wakhti go'an oo kuwa la helay timeseries_ids.
  • Taas ka dib, xog-ururintu waxay ku fulisaa qaar ka mid ah xisaabaadka dhibcaha xogtan, iyadoo loo eegayo codsiga isticmaalaha. Kadibna waxay soo celinaysaa jawaabta.

Bandhigan waxaan kaaga sheekayn doonaa qaybta koowaad. Tani waa raadin timeseries_ids by index rogay. Waxaad la socon kartaa qaybta labaad iyo qaybta saddexaad ee danbe Ilaha VictoriaMetrics, ama sug inta aan ka diyaarinayo warbixino kale :)

Tag hagaajinta VictoriaMetrics. Alexander Vallykin

Aan u gudubno tusmada leexsan. Qaar badan ayaa laga yaabaa inay u maleynayaan in tani ay tahay mid fudud. Yaa garanaya waxa uu yahay tusmada leexsan iyo sida ay u shaqeyso? Oh, ma aha dad aad u badan. Aan isku dayno inaan fahanno waxa ay tahay.

Runtii way fududahay. Si fudud waa qaamuus khariidado fure u ah qiimaha. Waa maxay furaha? Lamaanahan label=valuehalkaas oo label ΠΈ value - kuwani waa khadadka. Oo qiyamku waa go'an timeseries_ids, oo ay ku jiraan lamaanaha la siiyay label=value.

Tusmada la rogay ayaa kuu ogolaanaysa inaad si dhakhso ah u hesho wax walba timeseries_ids, kuwaas oo bixiyay label=value.

Waxay sidoo kale kuu ogolaaneysaa inaad si degdeg ah u hesho timeseries_ids taxane waqti dhowr lamaane label=value, ama lamaanaha label=regexp. Sidee tani u dhacdaa? Adigoo helaya isgoyska go'an timeseries_ids lammaane kasta label=value.

Tag hagaajinta VictoriaMetrics. Alexander Vallykin

Aynu eegno fulinta kala duwan ee tusmada rogan. Aan ku bilowno hirgelinta ugu fudud ee fudud. Waxay u egtahay sidan.

function getMetricIDs wuxuu helayaa liiska xargaha. Xariiq kastaa wuxuu ka kooban yahay label=value. Shaqadani waxay soo celinaysaa liis metricIDs.

Sidee u shaqeysaa? Halkan waxaan ku haynaa doorsoome caalami ah oo la yiraahdo invertedIndex. Kani waa qaamuus joogto ah (map), kaas oo khariidad doona xadhigga si loo gooyo ints. Khadka ayaa ka kooban label=value.

Hirgelinta shaqada: hel metricIDs marka hore label=value, ka dibna wax kasta oo kale ayaan maraynaa label=value, waan helnaa metricIDs iyaga. Oo wac shaqada intersectInts, kaas oo lagaga hadli doono hoos. Waxayna shaqadani soo celinaysaa is-goysyada liisaskan.

Tag hagaajinta VictoriaMetrics. Alexander Vallykin

Sida aad arki karto, hirgelinta tusmada leexsan ma aha mid aad u adag. Laakin kani waa hirgalin naafo ah. Waa maxay khasaaraha ay leedahay? Khasaaraha ugu weyn ee hirgelinta nafiska ayaa ah in tusaha rogan ee noocan oo kale ah lagu kaydiyo RAM. Ka dib markii aan dib u bilaabo codsiga waxaan lumin doonaa tusmada. Ma jiraan wax kayd ah oo tusahan saxan ku jira. Tusmada rogan ee noocan oo kale ah uma badna inay ku habboonaato kaydka xogta.

Dhibaatada labaad waxay sidoo kale la xiriirtaa xusuusta. Tusmada rogan waa in ay ku habboonaato RAM. Haddii ay ka badan tahay cabbirka RAM, markaa sida cad waxaan ka heli doonnaa - qaladka xusuusta. Barnaamijkuna ma shaqayn doono.

Tag hagaajinta VictoriaMetrics. Alexander Vallykin

Dhibaatadan waxaa lagu xallin karaa iyadoo la isticmaalayo xalal diyaarsan sida HeerkaDB, ama RocksDB.

Marka la soo koobo, waxaan u baahanahay xog-ururin noo ogolaanaysa inaan si degdeg ah u samayno saddex hawlgal.

  • Hawlgalka ugu horreeya waa duubis ΠΊΠ»ΡŽΡ‡-Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ database this. Waxay tan si dhakhso ah u qabataa, halkee ΠΊΠ»ΡŽΡ‡-Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ waa xadhig gardaran.
  • Hawlgalka labaad waa raadinta degdeg ah ee qiimaha iyadoo la isticmaalayo fure la bixiyay.
  • Hawlgalka saddexaadna waa raadinta degdega ah ee dhammaan qiyamka iyadoo la adeegsanayo horgale la bixiyay.

LevelDB iyo RocksDB - xog ururintan waxaa sameeyay Google iyo Facebook. Markii ugu horeysay waxaa yimid LevelDB. Kadib nimankii Facebook-ga waxay qaateen LevelDB waxayna bilaabeen inay hagaajiyaan, waxay sameeyeen RocksDB. Hadda ku dhawaad ​​​​dhammaan xogta gudaha waxay ka shaqeeyaan RocksDB gudaha Facebook, oo ay ku jiraan kuwa loo wareejiyay RocksDB iyo MySQL. Waxay u bixiyeen magaca MyRocks.

Tusmada rogan ayaa lagu hirgelin karaa iyadoo la isticmaalayo LevelDB. Sidee loo sameeyaa? Waxaan u kaydinay furaha ahaan label=value. qiimuhuna waa tilmaanta wakhtiga taxanaha ah ee ay lammaanuhu joogaan label=value.

Haddii aan haysano taxane wakhti badan oo lammaane la bixiyay label=value, ka dib waxaa jiri doona safaf badan oo ku jira xogtan oo leh fure isku mid ah oo kala duwan timeseries_ids. Si aad u hesho liis dhan timeseries_ids, kuwaas oo ka bilaabma tan label=prefix, waxaanu samaynaa iskaanka kala duwan kaas oo xogtan la hagaajiyay. Taasi waa, waxaan dooraneynaa dhammaan xariiqyada ka bilaabma label=prefix oo hel waxyaabaha lagama maarmaanka ah timeseries_ids.

Tag hagaajinta VictoriaMetrics. Alexander Vallykin

Halkan waxaa ah muunad fulinta waxa ay u ekaan doonto Go. Waxaan haynaa tilmaame rogan. Tani waa LevelDB.

Shaqadu waxay la mid tahay hirgelinta nafiska. Waxa ay ku soo celisaa hirgelinta nafiska ah in ku dhow xariiq. Qodobka kaliya ayaa ah in halkii loo soo jeesan lahaa map waxaan galeynaa tusmada leexsan. Waxaan helnaa dhammaan qiyamka marka ugu horeysa label=value. Kadibna waxaan mareynaa dhammaan lammaanaha soo haray label=value oo u hel qaybaha u dhigma ee metricIDs. Kadibna waxaan helnaa isgoyska.

Tag hagaajinta VictoriaMetrics. Alexander Vallykin

Wax walba waxay u muuqdaan inay fiican yihiin, laakiin waxaa jira cillado xalkan. VictoriaMetrics waxay markii hore hirgelisay tilmaame rogan oo ku salaysan LevelDB. Laakin ugu danbeyn waa inaan ka tanaasulaa.

Waa maxay sababtu? Sababtoo ah LevelDB wuu ka gaabiyaa hirgelinta nafiska. Dhaqan-gal caqli-gal ah, oo la siiyay fure la bixiyay, waxaanu isla markiiba soo saarnay jeexii oo dhan metricIDs. Kani waa hawlgal aad u degdeg badan - dhammaan jeexan ayaa diyaar u ah in la isticmaalo.

Gudaha LevelDB, mar kasta oo shaqo la yiraahdo GetValues waxaad u baahan tahay inaad dhex marto dhammaan khadadka ka bilaabma label=value. Oo hel qiimaha sadar kasta timeseries_ids. Kuwaas oo kale timeseries_ids ururiyo jeex kuwan ah timeseries_ids. Sida cad, tani aad ayay uga gaabis tahay marka loo eego furaha khariidadda caadiga ah.

Cilladda labaad waa in LevelDB ku qoran C. U yeerida hawlaha C ee Go ma aha mid aad u degdeg badan. Waxay qaadataa boqolaal nanoseconds. Tani ma aha mid aad u dhakhso badan, sababtoo ah marka la barbardhigo wicitaanka shaqada caadiga ah ee ku qoran go, kaas oo qaata 1-5 nanoseconds, farqiga u dhexeeya waxqabadka waa tobanaan jeer. VictoriaMetrics tani waxay ahayd cilad halis ah :)

Tag hagaajinta VictoriaMetrics. Alexander Vallykin

Markaa waxaan qoray hirgelinta tusmada la rogay. Markaasuu u yeedhay isku biirid.

Mergeset waxay ku salaysan tahay qaabka xogta MergeTree. Qaab dhismeedka xogtan waxa laga soo amaahday ClickHouse. Sida cad, isku-dhafka waa in loo hagaajiyaa raadinta degdega ah timeseries_ids sida ku cad furaha la siiyay. Mergeset waxay ku qoran tahay gebi ahaanba Go. Waad arki kartaa Ilaha VictoriaMetrics ee GitHub. Hirgelinta isku darka waxay ku jirtaa galka /lib/ku biir. Waxaad isku dayi kartaa inaad ogaato waxa halkaas ka socda.

Isku-dhafka API wuxuu aad ugu eg yahay LevelDB iyo RocksDB. Taasi waa, waxay kuu ogolaaneysaa inaad si dhakhso ah u kaydiso diiwaannada cusub halkaas oo aad si dhakhso ah u doorato diiwaanada horgale la bixiyay.

Tag hagaajinta VictoriaMetrics. Alexander Vallykin

Waxaan ka hadli doonaa faa'iido darrada ku biirista mar dambe. Hadda aan ka hadalno dhibaatooyinka ka dhashay VictoriaMetrics ee wax soo saarka marka la hirgelinayo tusmaynta leexsan.

Maxay u kaceen?

Sababta ugu horeysa waa heerka qulqulka sare. Waxaa loo turjumay Ruushka, tani waa isbeddel joogto ah oo ku yimaada taxanaha wakhtiga. Tani waa marka taxanaha wakhtigu dhammaado oo uu taxanayaal cusub bilaabmo, ama wakhtiyo badan oo taxane cusub bilaabmaa. Waxayna tani dhacdaa marar badan.

Sababta labaad waa tirada badan ee taxanaha waqtiga. Bilowgii, markii kormeerku uu ahaa mid caan ah, tirada wakhtiyada taxanaha ahi way yaraayeen. Tusaale ahaan, kumbiyuutar kasta waxaad u baahan tahay inaad la socoto CPU, memory, network iyo load disk. 4 jeer oo taxane ah kumbiyuutarkiiba. Aynu nidhaahno waxaad haysataa 100 kombiyuutar iyo 400 oo taxane ah. Tani waa mid aad u yar.

Waqti ka dib, dadku waxay ogaadeen in ay cabbiri karaan macluumaad fara badan. Tusaale ahaan, culeyska ha cabbirin processor-ka oo dhan, laakiin si gooni ah u cabbir processor kasta. Haddii aad leedahay 40 cores, markaa waxaad haysataa 40 jeer oo dheeraad ah oo taxane ah si aad u cabbirto culeyska processor-ka.

Laakiin intaas kuma koobna. Xudunta Processor kastaa waxay yeelan kartaa dhawr gobol, sida shaqo-la'aan, marka ay shaqaynayso. Iyo sidoo kale ka shaqeyso booska isticmaalaha, ka shaqeyso booska kernel iyo gobolada kale. Iyo xaalad kasta oo noocaas ah sidoo kale waxaa lagu qiyaasi karaa waqti taxane ah oo gooni ah. Tani waxay sidoo kale kordhisaa tirada safafka 7-8 jeer.

Hal metric waxaan ka helnay 40 x 8 = 320 metrik hal kombuyuutar. Ku dhufo 100, waxaan helnaa 32 halkii 000.

Kadib Kubernetes ayaa soo raacay. Wayna ka sii dartay sababtoo ah Kubernetes waxay martigelin kartaa adeegyo badan oo kala duwan. Adeeg kasta oo ku yaal Kubernetes wuxuu ka kooban yahay qaybo badan. Waxaas oo dhan waxay u baahan yihiin in lala socdo. Intaa waxaa dheer, waxaan haynaa diritaan joogto ah oo ah noocyada cusub ee adeegyadaaga. Nooc kasta oo cusub, waa in la abuuraa waqti taxane cusub. Taasina waxay keentay in tirada wakhtigu si xawli ah u korodho, waxaana ina soo food saartay dhibaato tiro badan oo taxane ah, taas oo loo yaqaan High-Cardinality. VictoriaMetrics si guul leh ayey ula qabsataa marka la barbar dhigo xog-ururinta waqtiyada kale.

Tag hagaajinta VictoriaMetrics. Alexander Vallykin

Aan si dhow u eegno heerka sare u kaca. Maxaa sababa hoos u dhac sare oo wax soo saarka? Sababtoo ah macnayaasha qaar ee calaamadaha iyo summada ayaa si joogto ah isu beddelaya.

Tusaale ahaan, soo qaado Kubernetes, oo leh fikradda deployment, tusaale ahaan marka nooc cusub oo codsigaga ah la soo saaro. Sababaha qaar, horumarinta Kubernetes waxay go'aansadeen inay ku daraan aqoonsiga geynta sumadda.

Maxay tani keentay? Intaa waxaa dheer, hawlgal kasta oo cusub, dhammaan taxanihii hore waa la hakiyaa, beddelkoodana, taxanaha waqtiyada cusub waxay ku bilaabmaan qiime calaamad cusub deployment_id. Waxaa jiri kara boqolaal kun iyo xitaa malaayiin saf oo noocaas ah.

Waxa ugu muhiimsan ee ku saabsan waxaas oo dhan waa in tirada guud ee taxanaha wakhti ay koraan, laakiin tirada wakhtiga taxanaha ah ee hadda firfircoon iyo helitaanka xogta ayaa ah mid joogto ah. Gobolkan waxaa loo yaqaan heerka churn heerka sare.

Dhibaatada ugu weyn ee heerka sare u kaca waa in la hubiyo xawaaraha raadinta joogtada ah ee dhammaan wakhtiyada taxanaha ah ee calaamado la bixiyay in ka badan waqti go'an. Caadi ahaan tani waa wakhtiga u dhexeeya saacadda u dambaysa ama maalinta u dambaysa.

Tag hagaajinta VictoriaMetrics. Alexander Vallykin

Sidee loo xalin karaa dhibaatadan? Waa kan doorashada koowaad. Tani waa in loo qaybiyo tusmada rogan qaybo madax bannaan muddo ka dib. Taasi waa, wakhti badhkii baa dhaafa, waxaanu dhammaynaynaa la shaqaynta tusmada rogan ee hadda. Oo samee tusmo cusub oo rogan. Waqti kale ayaa dhaafa, waxaan abuurnaa mid kale iyo mid kale.

Oo markaan muunad ka soo qaadanno tusmooyin rogan, waxaan helnaa tiro tusmooyin rogan oo ku dhacaya muddada la bixiyay. Oo, si waafaqsan, waxaan ka dooran id ee taxanaha time ka halkaas.

Tani waxay badbaadinaysaa kheyraadka sababtoo ah ma ahan inaan eegno qaybo aan ku dhicin muddada u dhaxaysa. Taasi waa, sida caadiga ah, haddii aan dooranno xogta saacadda ugu dambeysa, ka dibna wakhtiyadii hore waxaan ka boodaa weydiimaha.

Tag hagaajinta VictoriaMetrics. Alexander Vallykin

Waxaa jira ikhtiyaar kale oo lagu xallinayo dhibaatadan. Tani waa in lagu kaydiyo maalin kasta liis gaar ah oo ids waqti taxane ah oo dhacay maalintaas.

Faa'iidada uu xalkani ku leeyahay xalkii hore ayaa ah in aynaan soo koobin xogta waqtiyada taxanaha ah ee aan waqti ka dib baaba'in. Waxay si joogto ah u joogaan oo ma isbeddelaan.

Khasaaraha ayaa ah in xalkan oo kale uu aad u adag yahay in la fuliyo oo ay aad u adag tahay in la saxo. VictoriaMetrics ayaana dooratay xalkan. Sidan ayay u dhacday taariikh ahaan. Xalkani wuxuu sidoo kale si fiican u shaqeeyaa marka la barbardhigo kii hore. Sababtoo ah xalkan lama hirgelin sababtoo ah xaqiiqda ah in ay lagama maarmaan tahay in la nuqulo xogta qayb kasta si taxane ah oo aan isbeddelin, i. VictoriaMetrics ayaa ugu horrayn loogu hagaajiyay isticmaalka booska diskka, iyo hirgelintii hore waxay ka dhigtay isticmaalka booska diskka. Laakiin hirgelintani waxay ku habboon tahay in la yareeyo isticmaalka booska diskka, sidaas awgeed waa la doortay.

Waa inaan la dagaallamo iyada. Halganku wuxuu ahaa in hirgelintan aad weli u baahan tahay inaad doorato tiro aad u weyn timeseries_ids xogta marka loo eego marka tusmada rogan ay tahay waqti qaybsan.

Tag hagaajinta VictoriaMetrics. Alexander Vallykin

Sideen ku xalinay dhibaatadan? Waxaan u xalinay si asal ah - anagoo ku kaydinayna tilmaameyaal dhowr jeer oo taxane ah mid kasta oo tusmayn rogan ah bedelkii hal aqoonsi. Taasi waa, waxaan leenahay fure label=value, kaas oo dhaca wakhti kasta oo taxane ah. Oo hadda waxaan badbaadin dhowr timeseries_ids hal gelid.

Waa kan tusaale Markii hore waxaan haysanay gelinta N, laakiin hadda waxaan haysanaa hal gelis kaas oo horgale uu la mid yahay kuwa kale oo dhan. Gelitaankii hore, qiimuhu wuxuu ka kooban yahay dhammaan ids taxane waqti ah.

Tani waxay suurtogal ka dhigtay in la kordhiyo xawaaraha iskaanka ee tusaha rogan ilaa 10 jeer. Oo waxay noo ogolaatay inaan hoos u dhigno isticmaalka xusuusta ee kaydka, sababtoo ah hadda waxaan ku kaydineynaa xadhigga label=value hal mar oo kaliya ee kaydka wada N times. Oo xariiqdani waxay noqon kartaa mid weyn haddii aad ku kaydiso khadadka dhaadheer calaamadahaaga iyo calaamadahaaga, kuwaas oo Kubernetes uu jecel yahay inuu halkaas ku tuuro.

Tag hagaajinta VictoriaMetrics. Alexander Vallykin

Ikhtiyaarka kale ee lagu dardargelinayo raadinta tusmada leexsan waa jeexjeexid. Abuuritaanka tusmooyin badan oo rogan halkii hal laga lahaan lahaa iyo kala qaybinta xogta dhexdooda iyaga oo fure ah. Tani waa go'an key=value uumi. Taasi waa, waxaan helnaa dhowr tilmaame oo madax-bannaan oo rogan, kuwaas oo aan weydiin karno si barbar socda dhowr processor. Hirgelintii hore waxay oggolaatay kaliya in lagu shaqeeyo hab hal-processor-ka-hal ah, tusaale ahaan, xogta iskaanka ee hal xudunta kaliya ah. Xalkani wuxuu kuu ogolaanayaa inaad sawirto xogta dhowr qaybood oo isku mar ah, sida ClickHouse uu jecel yahay inuu sameeyo. Tani waa waxa aan qorsheynay inaan fulino.

Tag hagaajinta VictoriaMetrics. Alexander Vallykin

Hadda aan ku soo noqonno idahayaga - shaqada isgoyska timeseries_ids. Aynu ka fiirsanno waxa fulinta jiri kara. Shaqadani waxay kuu ogolaanaysaa inaad hesho timeseries_ids go'an la siiyey label=value.

Tag hagaajinta VictoriaMetrics. Alexander Vallykin

Doorashada ugu horreysa waa hirgelinta nafiska ah. Laba siddo oo buul leh. Halkan waxaan ku helnaa gelinta shaqada intersectInts laba qaybood - a ΠΈ b. Marka la soo saaro, waa in ay nagu soo celisaa isgoyska jeexan.

Hirgelinta nafiska ah waxay u egtahay sidan. Waxaan ku celcelineynaa dhammaan qiyamka laga soo bilaabo jeex a, gudaha loop-kan waxaan ku maraynaa dhammaan qiyamka jeexan b. Waanan is barbar dhigeynaa. Hadday iswaafaqaan, markaas waxaan helnay isgoys. Oo ku badbaadi result.

Tag hagaajinta VictoriaMetrics. Alexander Vallykin

Waa maxay khasaaraha? Kakanaanta afar-geesoodka ah waa cilladdeeda ugu weyn. Tusaale ahaan, haddii cabbiradaadu yihiin jeex a ΠΈ b hal milyan markiiba, markaa shaqadani weligeed kuuguma soo celin doonto jawaab. Sababtoo ah waxay u baahan doontaa in la sameeyo hal trillion, taas oo aad u badan xitaa kombiyuutarada casriga ah.

Tag hagaajinta VictoriaMetrics. Alexander Vallykin

Hirgelinta labaad waxay ku salaysan tahay khariidad. Waxaan abuurnaa khariidad. Waxaan ka dhignay dhammaan qiyamka jeex khariidadan a. Kadibna waxaan u mareynaa jeexan siddo gooni ah b. Oo waxaan hubinaynaa in qiimahani uu ka yimid jeex b khariidada. Haddii ay jirto, ka dibna ku dar natiijada.

Tag hagaajinta VictoriaMetrics. Alexander Vallykin

Waa maxay faa'iidooyinka? Faa'iidada ayaa ah in ay jirto kakanaanta toosan oo kaliya. Taasi waa, shaqadu waxay si dhakhso ah u fulin doontaa xaleefyo waaweyn. Hal milyan oo xajmi ah, shaqadani waxay ku fulin doontaa 2 milyan oo taxan, oo ka soo horjeeda trillion-ka ku celcelinta hawshii hore.

Dhinaca hoose ayaa ah in shaqadani ay u baahan tahay xasuus badan si loo abuuro khariidadan.

Cilladda labaad waa dusha sare ee xashiishka. Caqabaddani aad uma muuqato. Annaga sidoo kale ma ahayn mid aad u cad, markaa markii ugu horeysay ee VictoriaMetrics hirgelinta isgoysyadu waxay ahayd maabka. Laakin dabadeed xog-ururintu waxay muujisay in wakhtiga processor-ka ugu weyn uu ku qaato qoraal khariidada iyo hubinta joogitaanka qiimaha khariidadan.

Maxay tahay sababta waqtiga CPU loogu luminayo meelahan? Sababtoo ah Go waxay ku qabataa qalliin xashiish ah khadadkan. Taasi waa, waxay xisaabinaysaa xadhkaha furaha si markaas loo galo tusmada la bixiyay ee HashMapka. Hawlgalka xisaabinta xashiishku waxa lagu dhammeeyaa tobanaan nanoseconds. Tani waa mid gaabis u ah VictoriaMetrics.

Tag hagaajinta VictoriaMetrics. Alexander Vallykin

Waxaan go'aansaday inaan hirgeliyo bitset loo hagaajiyay gaar ahaan kiiskan. Tani waa sida ay hadda u egtahay is-goysyada labada jeex. Halkan waxaan ku abuurnaa xoogaa yar. Waxaan ku darnaa curiyeyaasha jeexjeexa ugu horreeya. Kadibna waxaan hubineynaa joogitaanka walxahan jeexjeexa labaad. Oo ku dar iyaga natiijada. Taasi waa, ku dhawaad ​​kama duwana tusaalihii hore. Waxa kaliya ee halkan waa in aan ku beddelnay marin u helidda khariidadda oo leh hawlo gaar ah add ΠΈ has.

Tag hagaajinta VictoriaMetrics. Alexander Vallykin

Jaleecada hore, waxay u muuqataa in tani ay tahay inay si tartiib tartiib ah u shaqeyso, haddii hore loo isticmaalay khariidad caadi ah, ka dibna qaar ka mid ah hawlaha kale ayaa loo yaqaan, laakiin muujinta waxay muujinaysaa in shaygani uu 10 jeer ka dhakhso badan yahay khariidadda caadiga ah ee kiiska VictoriaMetrics.

Intaa waxaa dheer, waxay isticmaashaa xusuusta aad uga yar marka loo eego hirgelinta khariidadda. Sababtoo ah waxaanu halkan ku kaydinaynaa jajabyo halkii ay ka ahaan lahaayeen qiyamka siddeed-byte.

Khasaaraha ka dhalanaya hirgelintan ayaa ah in aanu si cad u muuqan, ee aanu ahayn mid fudud.

Cilad kale oo laga yaabo in dad badani aanay dareemin ayaa ah in hirgelintani aanu si fiican u shaqaynayn xaaladaha qaarkood. Taasi waa, waxaa loo habeeyay kiis gaar ah, kiiskan isgoysyada wakhtiga VictoriaMetrics ids taxane ah. Tani macnaheedu maaha inay ku habboon tahay dhammaan kiisaska. Haddii si khaldan loo isticmaalo, ma heli doonno kor u kaca waxqabadka, laakiin ka baxsan qaladka xusuusta iyo hoos u dhaca waxqabadka.

Tag hagaajinta VictoriaMetrics. Alexander Vallykin

Aynu tixgelinno hirgelinta dhismahan. Haddii aad rabto inaad eegto, waxay ku taal ilaha VictoriaMetrics, ee galka lib/uint64set. Waxaa si gaar ah loogu hagaajiyay kiiska VictoriaMetrics, halkaas oo timeseries_id waa qiime 64-bit ah, halkaasoo 32-bit ee ugu horreeya ay asal ahaan joogto yihiin oo kaliya 32-bit ee ugu dambeeya ay isbeddelaan.

Qaab dhismeedka xogtan laguma kaydiyo saxanka, kaliya waxa uu ku shaqeeyaa xusuusta.

Tag hagaajinta VictoriaMetrics. Alexander Vallykin

Waa kan API-giisa. Ma aha mid aad u adag. API waxa si gaar ah loogu habeeyey tusaale gaar ah oo la isticmaalayo VictoriaMetrics. Taasi waa, ma jiraan hawlo aan loo baahnayn halkan. Waa kuwan shaqooyinka ay si cad u adeegsato VictoriaMetrics.

Waxaa jira shaqooyin add, kaas oo soo kordhinaya qiyam cusub. Waxaa jira shaqo has, kaas oo hubinaya qiyamka cusub. Waxaana jirta shaqo del, kaas oo meesha ka saaraya qiyamka. Waxaa jira shaqo caawiye len, kaas oo soo celinaya cabbirka cabbirka. Shaqada clone clones badan. Iyo shaqada appendto waxay u rogtaa setkan in uu jeexjeexo timeseries_ids.

Tag hagaajinta VictoriaMetrics. Alexander Vallykin

Tani waa sida uu u eg yahay hirgelinta qaab dhismeedka xogtan. set waxay ka kooban tahay laba qaybood:

  • ItemsCount waa goob caawiye si degdeg ah loogu soo celiyo tirada curiyayaasha ee go'an. Way suurtogal noqon lahayd in la sameeyo la'aanteed goobtan kaaliyaha ah, laakiin waa in lagu daro halkan sababtoo ah VictoriaMetrics waxay badanaa waydiisaa dhererka bitset algorithms-keeda.

  • Goobta labaad waa buckets. Tani waa qayb ka mid ah qaabka bucket32. Dhisme kastaa wuu kaydiyaa hi beerta. Kuwani waa 32-bit ee sare. Iyo laba qaybood - b16his ΠΈ buckets ka bucket16 dhismayaasha.

16-bit ee ugu sarreeya qaybta labaad ee qaab-dhismeedka 64-bit ayaa halkan lagu kaydiyaa. Oo halkan waxa loo kaydiyaa 16-bit ee hoose ee byte kasta.

Bucket64 waxay ka kooban tahay habayn uint64. Dhererka waxaa lagu xisaabiyaa iyadoo la isticmaalayo kuwan joogtada ah. Mid ka mid ah bucket16 ugu badnaan waa la kaydin karaa 2^16=65536 xoogaa. Haddii aad tan u qaybiso 8, markaa waa 8 kilobytes. Haddii aad u qaybiso 8 mar kale, waa 1000 uint64 macnaha. Taasi waa Bucket16 - kani waa qaab-dhismeedkayaga 8-kilobayt ah.

Tag hagaajinta VictoriaMetrics. Alexander Vallykin

Aynu eegno sida mid ka mid ah hababka qaab-dhismeedkan loogu daro qiime cusub loo fuliyo.

Wax walba waxay ka bilaabmaan uint64 macnaha. Waxaan xisaabineynaa 32-bit ee sare, waxaan xisaabineynaa 32-bit ee hoose. Aan soo marno wax walba buckets. Waxaan is barbar dhignaa 32-bit ee ugu sarreeya baaldi kasta iyo qiimaha lagu daray. Oo haddii ay ku habboon yihiin, markaa waxaan u yeernaa shaqada add qaab dhismeedka b32 buckets. Oo ku dar 32-bit ee hoose halkaas. Oo hadday soo noqotay true, markaas tani waxay ka dhigan tahay in qiimahaas oo kale aan ku darnay halkaas oo aannaan haysan qiimahaas. Haday soo noqoto false, ka dibna macnaha noocan oo kale ah ayaa hore u jiray. Kadibna waxaan kordhineynaa tirada walxaha ku jira qaabdhismeedka.

Haddii aanaan helin midka aad u baahan tahay bucket oo leh hi-qiimaha loo baahan yahay, ka dibna waxaan ugu yeernaa shaqada addAlloc, kaas oo soo saari doona mid cusub bucket, oo lagu daro qaab dhismeedka baaldiga.

Tag hagaajinta VictoriaMetrics. Alexander Vallykin

Tani waa fulinta shaqada b32.add. Waxay la mid tahay hirgelintii hore. Waxaan xisaabineynaa 16-bit ee ugu muhiimsan, ugu yaraan 16 bits.

Kadibna waxaan mareynaa dhammaan 16-bit ee sare. Waxaan helnaa taraq. Oo haddii ay jirto ciyaar, waxaan u yeernaa habka add, kaas oo aan ka fiirsan doono bogga xiga bucket16.

Tag hagaajinta VictoriaMetrics. Alexander Vallykin

Oo halkan waa heerka ugu hooseeya, kaas oo ah in la hagaajiyo intii suurtagal ah. Waxaan xisaabineynaa uint64 qiimaha id ee jajab yar iyo sidoo kale bitmask. Tani waa maaskaro loogu talagalay qiimaha 64-bit ee la bixiyay, kaas oo loo isticmaali karo in lagu hubiyo joogitaanka waxoogaakan, ama la dejiyo. Waanu hubinaa si aanu u aragno in yarkan la dhigay oo aanu dejinnay, oo aanu soo celinay joogitaanka. Tani waa hirgelinteena, taas oo noo ogolaatay in aan dedejinno hawlgalka ids-ka is-goysyada wakhtiga taxanaha ah 10 jeer marka loo eego maabyada caadiga ah.

Tag hagaajinta VictoriaMetrics. Alexander Vallykin

Ka sokow wanaajintan, VictoriaMetrics waxay leedahay wanaajinno kale oo badan. Inta badan wanaajintan ayaa lagu daray sabab, laakiin ka dib markii la soo bandhigo koodhka wax soo saarka.

Tani waa qaanuunka ugu weyn ee hagaajinta - ha ku darin hagaajinta adiga oo u maleynaya inay jiri doonto cilad halkan, sababtoo ah waxaa laga yaabaa inay soo baxdo inaysan jiri doonin cilad. Hagaajinta badiyaa waxay hoos u dhigtaa tayada koodka. Sidaa darteed, waxaa habboon in la wanaajiyo kaliya ka dib marka la soo bandhigo oo la doorbido wax soo saarka, si tani ay tahay xogta dhabta ah. Haddii qof uu danaynayo, waxaad eegi kartaa koodka isha ee VictoriaMetrics oo aad sahamin kartaa wanaajinta kale ee halkaas ku jira.

Tag hagaajinta VictoriaMetrics. Alexander Vallykin

Waxaan qabaa su'aal ku saabsan bitset. Aad ula mid ah hirgelinta C++ vector bool, bitset la hagaajiyay. Halkaa ma ka qaaday fulinta?

Maya, halkaas kama iman. Markii aan hirgelinayey bitset-kan, waxa i hagaya aqoonta qaab-dhismeedka wakhtiyada ids-ka, kuwaas oo lagu isticmaalo VictoriaMetrics. Oo qaabdhismeedkoodu waa sida in 32-bits sare asal ahaan joogto ah. 32-bit ee hoose waa la bedeli karaa Inta yar ee yar, inta badan way isbedeli kartaa. Sidaa darteed, hirgelintan ayaa si gaar ah loogu hagaajiyay qaab-dhismeedka xogtan. Hirgelinta C++, inta aan ogahay, waxaa loo habeeyay kiiska guud. Haddii aad u wanaajiso kiiska guud, tani waxay la macno tahay inaysan noqon doonin tan ugu wanaagsan kiis gaar ah.

Waxaan sidoo kale kugula talinayaa inaad daawato warbixinta Alexey Milovid. Qiyaastii hal bil ka hor, wuxuu ka hadlay hagaajinta ClickHouse ee takhasusyada gaarka ah. Waxa uu kaliya sheegay in kiiska guud, fulinta C++ ama qaar ka mid ah fulinta kale ayaa loogu talagalay inay si fiican ugu shaqeeyaan celcelis ahaan isbitaalka. Waxaa laga yaabaa inay ka sii xumaato hirgelinta aqoonta gaarka ah sida kuweena, halkaas oo aan ognahay in 32-bit ee ugu sarreeya ay yihiin kuwo joogto ah.

Waxaan qabaa su'aal labaad. Waa maxay farqiga aasaasiga ah ee InfluxDB?

Waxaa jira faraqyo badan oo aasaasi ah. Marka la eego waxqabadka iyo isticmaalka xusuusta, InfluxDB ee imtixaannada waxay muujinayaan 10 jeer ka badan isticmaalka xusuusta ee taxanaha wakhtiga kardinnimada, marka aad haysato wax badan oo iyaga ka mid ah, tusaale ahaan, malaayiin. Tusaale ahaan, VictoriaMetrics waxay isticmaashaa 1 GB halkii milyan oo saf oo firfircoon, halka InfluxDB ay isticmaasho 10 GB. Taasina waa farqi weyn.

Farqiga labaad ee aasaasiga ah ayaa ah in InfluxDB leeyahay luqado su'aal qalaad - Flux iyo InfluxQL. Aad uguma habboona inay ku shaqeeyaan taxane wakhti marka la barbar dhigo PromQL, oo ay taageerto VictoriaMetrics. PromQL waa luuqad su'aal ah oo ka timid Prometheus.

Mid ka mid ah farqi kale ayaa ah in InfluxDB uu leeyahay qaab xog yar oo qariib ah, halkaas oo khad kasta uu ku kaydin karo dhowr goobood oo leh calaamado kala duwan. Xariiqyadani waxay u sii kala qaybsan yihiin miisas kala duwan. Dhibaatooyinkan dheeraadka ah waxay ku adkeeyaan shaqada dambe ee xogtan. Way adag tahay in la taageero oo la fahmo.

VictoriaMetrics wax walba aad bay uga fudud yihiin. Halkaa, taxane wakhti kastaa waa qiimaha-furaha. Qiimuhu waa qodobbo go'an - (timestamp, value), furuhuna waa set label=value. Ma jiraan wax kala sooc ah oo u dhexeeya beeraha iyo cabbirada. Waxay kuu ogolaanaysaa inaad doorato xog kasta ka dibna isku-dar, ku-dar, kala-goys, dhufo, qaybiso, si ka duwan InfluxDB halkaasoo xisaabinta safafka kala duwan aan weli la hirgelin inta aan ogahay. Xitaa haddii la fuliyo, way adag tahay, waa inaad qortaa kood badan.

Waxaan qabaa su'aal caddaynaysa. Si sax ah ma u fahmay in ay jirto nooc dhibaato ah oo aad ka hadashay, in tilmaantan rogan aanay ku habboonayn xusuusta, sidaa awgeed ay halkaas ka jirto qaybin?

Marka hore, waxaan tusay hirgelinta tusmada leexsan ee khariidadda Go ee caadiga ah. Hirgelintani kuma habboona kaydinta macluumaadka sababtoo ah tusmada rogan laguma kaydiyo saxanka, kaydkuna waa inuu ku kaydiyaa saxanka si xogtani ay u ahaato mid la heli karo marka dib loo bilaabo. Hirgelintan, marka aad dib u bilowdo codsiga, tusahaaga rogan ayaa meesha ka baxaya. Oo waxaad waayi doontaa helitaanka dhammaan xogta sababtoo ah ma awoodid inaad hesho.

Hello! Waad ku mahadsan tahay warbixinta! Magacaygu waa Pavel. Waxaan ka imid Wildberries Waxaan ku hayaa dhawr su'aalood. Su'aasha koowaad. Ma u malaynaysaa in haddii aad dooratay mabda' ka duwan marka aad dhisayso naqshadaynta codsigaaga oo aad qaybin lahayd xogta wakhti ka dib, markaa laga yaabee inaad awood u yeelan lahayd inaad xogta dhex dhigto markaad raadinayso, iyada oo ku saleysan xaqiiqda ah in qayb ka mid ah ay ka kooban tahay xogta hal. muddo wakhti ah, taas oo ah, hal wakhti oo kala badh ah oo aanad ka welwelin xaqiiqda ah in qaybahaagu u kala firdhisan yihiin si kala duwan? Su'aasha nambarka 2 - maadaama aad fulinayso algorithm la mid ah oo leh bitset iyo wax kasta oo kale, markaa ma laga yaabaa inaad isku dayday inaad isticmaasho tilmaamaha processor? Ma laga yaabaa inaad isku dayday wanaajintan oo kale?

Midka labaad ayaan isla markiiba ka jawaabi doonaa. Halkaa weli maanu gaadhin. Laakiin haddii loo baahdo, waan gaari doonaa halkaas. Midda horese su’aashu maxay ahayd?

Waxaad ka hadashay laba xaaladood. Waxayna sheegeen inay ku doorteen tii labaad oo fulintoodu ka adag tahay. Oo ma ay door bideen kii ugu horreeyay, halkaas oo xogta lagu qaybiyo waqti.

Haa Xaaladda kowaad, wadarta guud ee tusmuhu way ka weynaan doontaa, sababtoo ah qayb kasta waa inaan ku kaydinnaa xogta nuqulka ah ee wakhtigaas oo sii socda dhammaan qaybahaas. Oo haddii heerkaaga taxanaha wakhtiga uu yar yahay, i.e. taxane isku mid ah ayaa si joogto ah loo isticmaalaa, markaa kiiska ugu horreeya waxaan lumin doonnaa wax badan oo ka mid ah qaddarka booska diskka ee lagu hayo marka la barbardhigo kiiska labaad.

Oo sidaas daraaddeed - haa, qaybinta wakhtiga waa doorasho wanaagsan. Prometheus ayaa isticmaala. Laakiin Prometheus wuxuu leeyahay cillad kale. Marka la isku darayo qaybahan xogta, waxa ay u baahan tahay in lagu hayo xogta meta ee dhammaan calaamadaha iyo taxanaha wakhtiyada. Sidaa darteed, haddii qaybaha xogta ay isku darayso ay weyn yihiin, markaa isticmaalka xusuusta ayaa aad u kordheysa marka la isku daro, si ka duwan VictoriaMetrics. Marka la isku daro, VictoriaMetrics gabi ahaanba ma isticmaasho xusuusta, kaliya dhowr kilobytes ayaa la isticmaalaa, iyadoon loo eegin xajmiga qaybaha xogta la isku daray.

Algorithm-ka aad isticmaalayso waxa uu isticmaalaa xusuusta. Waxay calaamadisaa summada taxanaha waqtiyada ee ka kooban qiyamka. Oo sidan ayaad ku hubinaysaa joogitaanka lammaane ee hal xog ururin iyo mid kale. Oo waad fahantay in isgoysku dhacay iyo in kale. Caadi ahaan, xog-ururintu waxay hirgeliyaan cursors iyo titerators kuwaas oo kaydiya waxa ay hadda ku jiraan oo dhex mara xogta la soocay sababtoo ah kakanaanta fudud ee hawlgalladan.

Maxaynaan u isticmaalin cursors si aan xogta u marno?

Haa.

Waxaan ku kaydinay safafka la soocay ee LevelDB ama isku darka. Waxaan dhaqaajin karnaa cursorka oo waxaan helnaa isgoyska. Maxaynu u isticmaali waynay? Sababtoo ah waa gaabis. Sababtoo ah cursors waxay ka dhigan tahay inaad u baahan tahay inaad wacdo shaqo khad kasta. Wicitaan hawleedku waa 5 nanose seconds. Oo haddii aad haysato 100 khadadka, ka dibna waxaa soo baxday in aan ku qaadanno nus ilbiriqsi kaliya wac shaqada.

Waxaa jira wax noocaas ah, haa. Iyo su'aashaydii ugu dambaysay. Su'aashu waxay u ekaan kartaa wax yar oo la yaab leh. Maxay tahay sababta aysan suurtogal u ahayn in la akhriyo dhammaan isku-darka lagama maarmaanka ah xilligan xaadirka ah xogtu timaaddo oo lagu keydiyo foomka loo baahan yahay? Waa maxay sababta loo kaydiyo tiro aad u badan hababka qaar sida VictoriaMetrics, ClickHouse, iwm., ka dibna wakhti badan ku qaataan iyaga?

Waxaan siinayaa tusaale si aan u caddeeyo. Aynu nidhaahno sidee buu u shaqeeyaa cabbirka-xawaaraha toy-ga yar? Waxay diiwaangelisaa masaafada aad safartay, mar walba waxay ku daraysaa hal qiime, iyo kan labaad -waqtiga. Oo kala qaybiya. Oo wuxuu helayaa xawaare celcelis ah. Waxaad samayn kartaa oo ku saabsan wax la mid ah. Isku-dar dhammaan xaqiiqooyinka lagama maarmaanka ah ee duulista.

Hagaag, waan fahmay su'aasha. Tusaalahaagu wuxuu leeyahay booskiisa. Haddii aad ogtahay waxa isku-darka ah ee aad u baahan tahay, markaa tani waa hirgelinta ugu fiican. Laakiin dhibaatadu waxay tahay in dadku ay badbaadiyaan jaangooyooyinkan, xogta qaar ee ClickHouse oo aysan weli garanayn sida ay isu geyn doonaan oo ay u shaandheyn doonaan mustaqbalka, markaa waa inay badbaadiyaan dhammaan xogta ceeriin. Laakiin haddii aad ogtahay inaad u baahan tahay inaad xisaabiso shay celcelis ahaan, markaa maxaad u xisaabin weyday halkii aad ku kaydin lahayd farabadan qiimaha cayriin ee halkaas? Laakiin tani waa kaliya haddii aad si sax ah u garanayso waxaad u baahan tahay.

Jid ahaan, xog ururinta kaydinta wakhtiga taxanaha ah waxay taageertaa tirinta isu geynta. Tusaale ahaan, Prometheus wuu taageersan yahay xeerarka duubista. Taasi waa, tan waxaa la samayn karaa haddii aad ogtahay cutubyada aad u baahan doonto. VictoriaMetrics ma haysato tan weli, laakiin badanaa waxaa ka horreeya Prometheus, taas oo tan lagu samayn karo sharciyada dib u habeynta.

Tusaale ahaan, shaqadeydii hore waxaan u baahday in aan xisaabiyo tirada dhacdooyinka ee daaqada simbiriirrada leh saacadii ugu dambeysay. Dhibaatadu waxay tahay in aan sameeyo dhaqan-galin gaar ah gudaha Go, tusaale ahaan adeegga tirinta shaygan. Adeegani wuxuu ahaa ugu dambeyntii wax fudud, sababtoo ah way adagtahay in la xisaabiyo. Hirgelintu waxay noqon kartaa mid fudud haddii aad u baahan tahay inaad tiriso qaar ka mid ah isku-darka waqtiyo go'an. Haddii aad rabto inaad tiriso dhacdooyinka daaqada simbiriirrada leh, markaa ma fududa sida ay u muuqato. Waxaan u maleynayaa in tan aan weli laga hirgelin ClickHouse ama xog-ururinta waqtiyada, sababtoo ah way adagtahay in la hirgeliyo.

Iyo hal su'aal oo kale. Waxaan ka hadlaynay celcelis ahaan, waxaanan xusuustay inay mar jirtay wax la mid ah Graphite oo leh dhabarka Carbon. Oo wuxuu ogaa sida loo khafiifiyo xogta duugga ah, taas oo ah, ka tag hal dhibic daqiiqadii, hal dhibic saacaddii, iwm. Mabda 'ahaan, tani waa wax ku habboon haddii aan u baahanno xog ceeriin ah, qiyaas ahaan, muddo bil ah, iyo wax kasta oo kale la khafiifiyo . Laakin Prometheus iyo VictoriaMetrics ma taageeraan shaqeyntan. Ma la qorsheeyay in la taageero? Haddii kale, maxaa diidaya?

Waad ku mahadsan tahay su'aasha. Isticmaalayaashayadu waxay waydiiyaan su'aashan waqtiyo kala duwan. Waxay weydiiyaan goorta aan ku dari doono taageerada hoos u dhigista. Waxaa jira dhibaatooyin dhowr ah halkan. Marka hore, isticmaale kastaa wuu fahmayaa downsampling wax ka duwan: qof ayaa raba in uu helo dhibic kasta oo aan sabab lahayn muddada u dhaxaysa, qof doonayo ugu badnaan, ugu yar, celceliska qiyamka. Haddii nidaamyo badan ay u qoraan xogta xogtaada, markaa ma wada soo ururin kartid dhammaanba. Waxaa laga yaabaa in nidaam kastaa u baahan yahay khafiifin kala duwan. Taasna waa ay adagtahay in la fuliyo.

Midda labaadna waa in VictoriaMetrics, sida ClickHouse, loo habeeyay ka shaqaynta tiro badan oo xog cayriin ah, si ay majarafad bilyan oo xariiqyo ah wax ka yar ilbidhiqsigu ku hayso haddii aad leedahay qaybo badan oo nidaamkaaga ah. Sawirka dhibcaha taxanaha wakhtiga ee VictoriaMetrics - 50 dhibcood ilbiriqsi kasta xuduntiiba. Wax qabadkuna wuxuu cabbiraa xudunta jirta. Taasi waa, haddii aad leedahay 000 cores, tusaale ahaan, waxaad sawiri doontaa bilyan dhibcood ilbiriqsikiiba. Iyo hantida VictoriaMetrics iyo ClickHouse waxay yaraynaysaa baahida hoos u dhigista.

Sifada kale ayaa ah in VictoriaMetrics ay si wax ku ool ah u cadaadiso xogtan. Isku celceliska wax soo saarku waa 0,4 ilaa 0,8 bytes halkii dhibic. Dhibic kastaa waa shaambad wakhti + qiime ah. Waxaana lagu cadaadiyaa in ka yar hal byte celcelis ahaan.

Sergey. su'aal baan qabaa Waa maxay tirada wakhtiga duubista ugu yar?

Hal milyan ilbiriqsi. Waxa aanu dhawaan wada hadal la yeelanay soosaarayaasha xogta taxanaha wakhtiyada kale. Wakhtigooda ugu yar waa hal ilbiriqsi. Iyo Graphite, tusaale ahaan, sidoo kale waa hal ilbiriqsi. Gudaha OpenTSDB sidoo kale waa hal ilbiriqsi. InfluxDB waxay leedahay saxnaansho nanosecond. VictoriaMetrics waa hal millisecond, sababtoo ah Prometheus waa hal millisecond. VictoriaMetrics waxaa markii hore loo sameeyay kayd fog oo loogu talagalay Prometheus. Laakiin hadda waxay badbaadin kartaa xogta nidaamyada kale.

Qofka aan la hadlay wuxuu sheegay inay haystaan ​​saxnaanta labaad ilaa ilbiriqsi - taas ayaa ku filan iyaga sababtoo ah waxay kuxirantahay nooca xogta ee lagu kaydiyo xogta wakhtiga. Haddii tani ay tahay xogta DevOps ama xogta kaabayaasha, halkaas oo aad ku soo ururiso inta u dhaxaysa 30 ilbiriqsi, daqiiqaddii, markaa saxnaanta labaad ayaa ku filan, uma baahnid wax ka yar. Oo haddii aad xogtan ka soo ururiso nidaamka ganacsiga ee soo noqnoqda sare, ka dibna waxaad u baahan tahay saxnaanta nanosecond.

Saxnaanta Millisecond ee VictoriaMetrics sidoo kale waxay ku habboon tahay kiiska DevOps, waxayna ku habboonaan kartaa inta badan kiisaska aan ku sheegay bilawga warbixinta. Waxa kaliya ee laga yaabo inaysan ku habboonayn waa nidaamyada ganacsiga ee soo noqnoqda.

Mahadsanid! Iyo su'aal kale. Waa maxay ku waafaqid PromQL?

Waafaqid buuxda oo gadaal u socota. VictoriaMetrics waxay si buuxda u taageertaa PromQL. Intaa waxaa dheer, waxay ku darsataa shaqeyn dheeraad ah oo horumarsan PromQL, oo ​​loo yaqaan MetricsQL. Waxa jira hadal ku saabsan shaqadan la fidiyey YouTube-ka. Waxaan ka hadlay Kulankii Kormeerka ee gu'ga ee St. Petersburg.

Telegram channel VictoriaMetrics.

Isticmaalayaasha diiwaangashan oo keliya ayaa ka qaybqaadan kara sahanka. Soo gal, soo dhawoow.

Maxaa kaa diidaya inaad u beddesho VictoriaMetrics si ay u noqoto kaydinta muddada dheer ee Prometheus? (ku qor faallooyinka, waxaan ku dari doonaa codbixinta))

  • 71,4%Ma isticmaalo Prometheus5

  • 28,6%Ma garanayn wax ku saabsan VictoriaMetrics2

7 isticmaale ayaa u codeeyay. 12 isticmaale ayaa ka aamusay.

Source: www.habr.com

Add a comment