ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π² Go Π² VictoriaMetrics. ΠΠ»Π΅ΠΊΡΠ°Π½Π΄ΡŠΡ€ Валялкин

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡΠΌ Π²ΠΈ Ρ€Π°Π·ΡˆΠΈΡ„Ρ€ΠΎΠ²ΠΊΠ°Ρ‚Π° Π½Π° Π΄ΠΎΠΊΠ»Π°Π΄Π° ΠΎΡ‚ края Π½Π° 2019 Π³ΠΎΠ΄ΠΈΠ½Π° Π½Π° ΠΠ»Π΅ΠΊΡΠ°Π½Π΄ΡŠΡ€ Валялкин "ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π² Go Π·Π° VictoriaMetrics"

VictoriaMetrics β€” Π±ΡŠΡ€Π·Π° ΠΈ ΠΌΠ°Ρ‰Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠ° Π‘Π£Π‘Π” Π·Π° ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° Π΄Π°Π½Π½ΠΈ ΠΏΠΎΠ΄ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Π½Π° Π²Ρ€Π΅ΠΌΠ΅Π²ΠΈ Ρ€Π΅Π΄ (Π·Π°ΠΏΠΈΡΡŠΡ‚ създава Π²Ρ€Π΅ΠΌΠ΅ ΠΈ Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ стойности, ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈ с Ρ‚ΠΎΠ²Π° Π²Ρ€Π΅ΠΌΠ΅, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈ Ρ‡Ρ€Π΅Π· ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ΠΈΡ‡Π½ΠΎ наблюдСниС Π½Π° ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅Ρ‚ΠΎ Π½Π° сСнзоритС ΠΈΠ»ΠΈ ΡΡŠΠ±ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ).

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π² Go Π² VictoriaMetrics. ΠΠ»Π΅ΠΊΡΠ°Π½Π΄ΡŠΡ€ Валялкин

Π•Ρ‚ΠΎ Π»ΠΈΠ½ΠΊ към Π²ΠΈΠ΄Π΅ΠΎΡ‚ΠΎ Π½Π° Ρ‚ΠΎΠ·ΠΈ Π΄ΠΎΠΊΠ»Π°Π΄ β€” https://youtu.be/MZ5P21j_HLE

Π‘Π»Π°ΠΉΠ΄ΠΎΠ²Π΅

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π² Go Π² VictoriaMetrics. ΠΠ»Π΅ΠΊΡΠ°Π½Π΄ΡŠΡ€ Валялкин

Π©Π΅ Π²ΠΈ Ρ€Π°Π·ΠΊΠ°ΠΆΠ° ΠΌΠ°Π»ΠΊΠΎ Π·Π° сСбС си. Аз съм ΠΠ»Π΅ΠΊΡΠ°Π½Π΄ΡŠΡ€ Валялкин. Π•Ρ‚ΠΎ моят GitHub ΠΏΡ€ΠΎΡ„ΠΈΠ». Π˜Π½Ρ‚Π΅Ρ€Π΅ΡΡƒΠ²Π°ΠΌ сС ΠΎΡ‚ Go ΠΈ оптимизация Π½Π° производитСлността. Написал съм ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΈ ΠΈ Π½Π΅ Ρ‚ΠΎΠ»ΠΊΠΎΠ²Π° ΠΏΠΎΠ»Π΅Π·Π½ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ. Π’Π΅ Π·Π°ΠΏΠΎΡ‡Π²Π°Ρ‚ ΠΈΠ»ΠΈ с fast, ΠΈΠ»ΠΈ с quick прСфикса.

Π’ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° работя Π²ΡŠΡ€Ρ…Ρƒ VictoriaMetrics. Какво Π΅ Ρ‚ΠΎΠ²Π° ΠΈ ΠΊΠ°ΠΊΠ²ΠΎ правя Ρ‚Π°ΠΌ? Π’ΠΎΠ²Π° Ρ‰Π΅ Π²ΠΈ Ρ€Π°Π·ΠΊΠ°ΠΆΠ° Π² Ρ‚Π°Π·ΠΈ прСзСнтация.

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π² Go Π² VictoriaMetrics. ΠΠ»Π΅ΠΊΡΠ°Π½Π΄ΡŠΡ€ Валялкин

ΠŸΠ»Π°Π½ΡŠΡ‚ Π½Π° Π΄ΠΎΠΊΠ»Π°Π΄Π° Π΅ Ρ‚Π°ΠΊΡŠΠ²:

  • ΠŸΡŠΡ€Π²ΠΎ Ρ‰Π΅ Π²ΠΈ Ρ€Π°Π·ΠΊΠ°ΠΆΠ° ΠΊΠ°ΠΊΠ²ΠΎ Π΅ VictoriaMetrics.
  • Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° Ρ‰Π΅ Π²ΠΈ Ρ€Π°Π·ΠΊΠ°ΠΆΠ° ΠΊΠ°ΠΊΠ²ΠΎ са Π²Ρ€Π΅ΠΌΠ΅Π²ΠΈΡ‚Π΅ Ρ€Π΅Π΄ΠΎΠ²Π΅.
  • ПослС Ρ‰Π΅ Π²ΠΈ Ρ€Π°Π·ΠΊΠ°ΠΆΠ° ΠΊΠ°ΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€Π° Π±Π°Π·Π°Ρ‚Π° Π΄Π°Π½Π½ΠΈ Π·Π° Π²Ρ€Π΅ΠΌΠ΅Π²ΠΈ Ρ€Π΅Π΄ΠΎΠ²Π΅.
  • Π‘Π»Π΅Π΄Π²Π°Ρ‰ΠΎΡ‚ΠΎ Π΅ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°Ρ‚Π° Π½Π° Π±Π°Π·Π°Ρ‚Π° Π΄Π°Π½Π½ΠΈ: ΠΎΡ‚ ΠΊΠ°ΠΊΠ²ΠΎ сС ΡΡŠΡΡ‚ΠΎΠΈ.
  • И послС Ρ‰Π΅ ΠΏΡ€Π΅ΠΌΠΈΠ½Π΅ΠΌ към ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈΡ‚Π΅, ΠΊΠΎΠΈΡ‚ΠΎ ΠΈΠΌΠ° Π² VictoriaMetrics. Π’ΠΎΠ²Π° са оптимизация Π½Π° инвСртирания индСкс ΠΈ оптимизация Π·Π° bitset-рСализация Π½Π° Go.

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π² Go Π² VictoriaMetrics. ΠΠ»Π΅ΠΊΡΠ°Π½Π΄ΡŠΡ€ Валялкин

Някой Π² аудиторията Π·Π½Π°Π΅ ΠΊΠ°ΠΊΠ²ΠΎ Π΅ VictoriaMetrics? НСвСроятно, ΠΌΠ½ΠΎΠ³ΠΎ Ρ…ΠΎΡ€Π° знаят. Π’ΠΎΠ²Π° Π΅ Π΄ΠΎΠ±Ρ€Π° Π½ΠΎΠ²ΠΈΠ½Π°. Π—Π° Ρ‚Π΅Π·ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ Π½Π΅ знаят – Ρ‚ΠΎΠ²Π° Π΅ Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ Π·Π° Π²Ρ€Π΅ΠΌΠ΅Π²ΠΈ Ρ€Π΅Π΄ΠΎΠ²Π΅. Вя Π΅ Π±Π°Π·ΠΈΡ€Π°Π½Π° Π½Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°Ρ‚Π° Π½Π° ClickHouse, Π½Π° някои Π΄Π΅Ρ‚Π°ΠΉΠ»ΠΈ ΠΎΡ‚ рСализацията Π½Π° ClickHouse. НапримСр, Π½Π° Ρ‚Π°ΠΊΠΈΠ²Π° ΠΊΠ°Ρ‚ΠΎ: MergeTree, ΠΏΠ°Ρ€Π°Π»Π΅Π»Π½ΠΎ изчислСниС Π½Π° всички Π½Π°Π»ΠΈΡ‡Π½ΠΈ ядра Π½Π° процСсора ΠΈ оптимизация Π½Π° производитСлността Ρ‡Ρ€Π΅Π· Ρ€Π°Π±ΠΎΡ‚Π° Π²ΡŠΡ€Ρ…Ρƒ Π±Π»ΠΎΠΊΠΎΠ²Π΅ Π΄Π°Π½Π½ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ сС поставят Π² кСш ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° Π½Π° процСсора.

VictoriaMetrics ΠΏΡ€Π΅Π΄Π»Π°Π³Π° Π½Π°ΠΉ-Π΄ΠΎΠ±Ρ€Π°Ρ‚Π° компрСсия Π½Π° Π΄Π°Π½Π½ΠΈ Π² сравнСниС с Π΄Ρ€ΡƒΠ³ΠΈ Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ Π·Π° Π²Ρ€Π΅ΠΌΠ΅Π²ΠΈ Ρ€Π΅Π΄ΠΎΠ²Π΅.

Вя сС ΠΌΠ°Ρ‰Π°Π±ΠΈΡ€Π° Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»Π½ΠΎ β€” Ρ‚.Π΅. ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° добавятС ΠΏΠΎΠ²Π΅Ρ‡Π΅ процСсори, ΠΏΠΎΠ²Π΅Ρ‡Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚ Π½Π° Π΅Π΄Π½Π° машина. VictoriaMetrics ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ Ρ‰Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Ρ‚Π΅Π·ΠΈ Π½Π°Π»ΠΈΡ‡Π½ΠΈ рСсурси ΠΈ Ρ‰Π΅ повиши Π»ΠΈΠ½Π΅ΠΉΠ½Π°Ρ‚Π° си производитСлност.

Π‘ΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ°, VictoriaMetrics сС ΠΌΠ°Ρ‰Π°Π±ΠΈΡ€Π° Ρ…ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»Π½ΠΎ β€” Ρ‚.Π΅. ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° добавятС Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈ Π½ΠΎΠ΄ΠΎΠ²Π΅ Π² кластСра Π½Π° VictoriaMetrics, ΠΈ производитСлността Ρ‰Π΅ нараства ΠΏΠΎΡ‡Ρ‚ΠΈ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎ.

ΠšΠ°ΠΊΡ‚ΠΎ Π²ΠΈΠΆΠ΄Π°Ρ‚Π΅, VictoriaMetrics Π΅ Π±ΡŠΡ€Π·Π° Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ, Π·Π°Ρ‰ΠΎΡ‚ΠΎ Π½Π΅ ΠΌΠΎΠ³Π° Π΄Π° пиша Π·Π° Π΄Ρ€ΡƒΠ³ΠΈ. И тя Π΅ написана Π½Π° Go, Π·Π°Ρ‚ΠΎΠ²Π° говоря Π·Π° нСя Π½Π° Ρ‚ΠΎΠ·ΠΈ ΠΌΠΈΡ‚Π°ΠΏ.

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π² Go Π² VictoriaMetrics. ΠΠ»Π΅ΠΊΡΠ°Π½Π΄ΡŠΡ€ Валялкин

Кой Π·Π½Π°Π΅ ΠΊΠ°ΠΊΠ²ΠΎ Π΅ Π²Ρ€Π΅ΠΌΠ΅Π²ΠΈ Ρ€Π΅Π΄? И ΠΌΠ½ΠΎΠ³ΠΎ Ρ…ΠΎΡ€Π° знаят. ВрСмСвият Ρ€Π΅Π΄ Π΅ сСрия ΠΎΡ‚ Π΄Π²ΠΎΠΉΠΊΠΈ (timestamp, стойност), ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ Ρ‚Π΅Π·ΠΈ Π΄Π²ΠΎΠΉΠΊΠΈ са ΠΏΠΎΠ΄Ρ€Π΅Π΄Π΅Π½ΠΈ ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅. Бтойността прСдставлява число с ΠΏΠ»Π°Π²Π°Ρ‰Π° запСтая – float64.

ВсСки Π²Ρ€Π΅ΠΌΠ΅Π²ΠΈ Ρ€Π΅Π΄ Π΅ ΡƒΠ½ΠΈΠΊΠ°Π»Π½ΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€Π°Π½ с ΠΊΠ»ΡŽΡ‡. ΠžΡ‚ ΠΊΠ°ΠΊΠ²ΠΎ сС ΡΡŠΡΡ‚ΠΎΠΈ Ρ‚ΠΎΠ·ΠΈ ΠΊΠ»ΡŽΡ‡? Π’ΠΎΠΉ сС ΡΡŠΡΡ‚ΠΎΠΈ ΠΎΡ‚ Π½Π΅ΠΏΡ€Π°Π·Π΅Π½ Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ Π΄Π²ΠΎΠΉΠΊΠΈ ΠΊΠ»ΡŽΡ‡-стойност.

Π•Ρ‚ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π·Π° Π²Ρ€Π΅ΠΌΠ΅Π²ΠΈ Ρ€Π΅Π΄. ΠšΠ»ΡŽΡ‡ΡŠΡ‚ Π½Π° Ρ‚ΠΎΠ·ΠΈ Ρ€Π΅Π΄ Π΅ списък ΠΎΡ‚ Π΄Π²ΠΎΠΉΠΊΠΈ: __name__="cpu_usage" – Ρ‚ΠΎΠ²Π° Π΅ ΠΈΠΌΠ΅Ρ‚ΠΎ Π½Π° ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠ°Ρ‚Π°, instance="my-server" β€” Ρ‚ΠΎΠ²Π° Π΅ ΠΊΠΎΠΌΠΏΡŽΡ‚ΡŠΡ€ΡŠΡ‚, Π½Π° ΠΊΠΎΠΉΡ‚ΠΎ Π΅ ΡΡŠΠ±Ρ€Π°Π½Π° Ρ‚Π°Π·ΠΈ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠ°, datacenter="us-east" β€” Ρ‚ΠΎΠ²Π° Π΅ Π΄Π°Ρ‚Π°Ρ†Π΅Π½Ρ‚ΡŠΡ€ΡŠΡ‚, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ сС Π½Π°ΠΌΠΈΡ€Π° Ρ‚ΠΎΠ·ΠΈ ΠΊΠΎΠΌΠΏΡŽΡ‚ΡŠΡ€.

И Ρ‚Π°ΠΊΠ°, ΠΈΠΌΠ°ΠΌΠ΅ ΠΈΠΌΠ΅ Π½Π° Π²Ρ€Π΅ΠΌΠ΅Π²ΠΈ Ρ€Π΅Π΄, ΡΡŠΡΡ‚ΠΎΡΡ‰ΠΎ сС ΠΎΡ‚ Ρ‚Ρ€ΠΈ Π΄Π²ΠΎΠΉΠΊΠΈ ΠΊΠ»ΡŽΡ‡-стойност. На Ρ‚ΠΎΠ·ΠΈ ΠΊΠ»ΡŽΡ‡ отговаря списък ΠΎΡ‚ Π΄Π²ΠΎΠΉΠΊΠΈ (timestamp, стойност). t1, t3, t3, ..., tN β€” Ρ‚ΠΎΠ²Π° са Π²Ρ€Π΅ΠΌΠ΅Π²ΠΈΡ‚Π΅ ΠΏΠ΅Ρ‡Π°Ρ‚ΠΈ, 10, 20, 12, ..., 15 β€” ΡΡŠΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²Π°Ρ‰ΠΈΡ‚Π΅ стойности. Π’ΠΎΠ²Π° Π΅ cpu-usage Π² тСкущия ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π·Π° Ρ‚ΠΎΠ·ΠΈ Ρ€Π΅Π΄.

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π² Go Π² VictoriaMetrics. ΠΠ»Π΅ΠΊΡΠ°Π½Π΄ΡŠΡ€ Валялкин

КъдС ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π²ΠΈΡ‚Π΅ Ρ€Π΅Π΄ΠΎΠ²Π΅? Някой ΠΈΠΌΠ° Π»ΠΈ ΠΈΠ΄Π΅ΠΈ?

  • Π’ DevOps ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° сС ΠΈΠ·ΠΌΠ΅Ρ€Π²Π°Ρ‚ показанията Π½Π° CPU, RAM, ΠΌΡ€Π΅ΠΆΠ°, rps, Π±Ρ€ΠΎΠΉ Π³Ρ€Π΅ΡˆΠΊΠΈ ΠΈ Ρ‚.Π½.
  • IoT – ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΈΠ·ΠΌΠ΅Ρ€Π²Π°ΠΌΠ΅ Ρ‚Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Π°, наляганС, гСографски ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ΠΈ ΠΈ ΠΎΡ‰Π΅ Π½Π΅Ρ‰ΠΎ.
  • Π‘ΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° финанси – ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° наблюдавамС Ρ†Π΅Π½ΠΈΡ‚Π΅ Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Π°ΠΊΡ†ΠΈΠΈ ΠΈ Π²Π°Π»ΡƒΡ‚ΠΈ.
  • ОсвСн Ρ‚ΠΎΠ²Π°, Π²Ρ€Π΅ΠΌΠ΅Π²ΠΈΡ‚Π΅ Ρ€Π΅Π΄ΠΎΠ²Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ Π² ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° Π½Π° производствСни процСси Π² Π·Π°Π²ΠΎΠ΄ΠΈΡ‚Π΅. ИмамС ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ VictoriaMetrics Π·Π° ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ Π½Π° Π²ΡΡ‚ΡŠΡ€Π½ΠΈ Ρ‚ΡƒΡ€Π±ΠΈΠ½ΠΈ, Π·Π° Ρ€ΠΎΠ±ΠΎΡ‚ΠΈ.
  • Π‘ΡŠΡ‰ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π²ΠΈΡ‚Π΅ Ρ€Π΅Π΄ΠΎΠ²Π΅ са ΠΏΠΎΠ»Π΅Π·Π½ΠΈ Π·Π° ΡΡŠΠ±ΠΈΡ€Π°Π½Π΅ Π½Π° информация ΠΎΡ‚ сСнзори Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ устройства. НапримСр, Π·Π° двигатСля; Π·Π° ΠΈΠ·ΠΌΠ΅Ρ€Π²Π°Π½Π΅ Π½Π° наляганСто Π² Π³ΡƒΠΌΠΈΡ‚Π΅; Π·Π° ΠΈΠ·ΠΌΠ΅Ρ€Π²Π°Π½Π΅ Π½Π° скоростта, разстояниСто; Π·Π° ΠΈΠ·ΠΌΠ΅Ρ€Π²Π°Π½Π΅ Π½Π° Ρ€Π°Π·Ρ…ΠΎΠ΄Π° Π½Π° Π±Π΅Π½Π·ΠΈΠ½ ΠΈ Ρ‚.Π½.
  • Π’Ρ€Π΅ΠΌΠ΅Π²ΠΈΡ‚Π΅ Ρ€Π΅Π΄ΠΎΠ²Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ ΠΈ Π·Π° ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ Π½Π° самолСти. Π’ΡŠΠ² всСки самолСт ΠΈΠΌΠ° Ρ‡Π΅Ρ€Π½Π° кутия, която ΡΡŠΠ±ΠΈΡ€Π° Π²Ρ€Π΅ΠΌΠ΅Π²ΠΈ Ρ€Π΅Π΄ΠΎΠ²Π΅ ΠΏΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ Π½Π° Π·Π΄Ρ€Π°Π²Π΅Ρ‚ΠΎ Π½Π° самолСта. Π’Ρ€Π΅ΠΌΠ΅Π²ΠΈΡ‚Π΅ Ρ€Π΅Π΄ΠΎΠ²Π΅ ΡΡŠΡ‰ΠΎ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ Π² аСрокосмичСската ΠΏΡ€ΠΎΠΌΠΈΡˆΠ»Π΅Π½ΠΎΡΡ‚.
  • Π—Π΄Ρ€Π°Π²Π΅ΠΎΠΏΠ°Π·Π²Π°Π½Π΅ – Ρ‚ΠΎΠ²Π° Π΅ ΠΊΡ€ΡŠΠ²Π½ΠΎΡ‚ΠΎ наляганС, пулс ΠΈ Ρ‚.Π½.

МоТС Π±ΠΈ ΠΈΠΌΠ° ΠΎΡ‰Π΅ прилоТСния, Π·Π° ΠΊΠΎΠΈΡ‚ΠΎ съм Π·Π°Π±Ρ€Π°Π²ΠΈΠ», Π½ΠΎ сС надявам, Ρ‡Π΅ Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚Π΅, Ρ‡Π΅ Π²Ρ€Π΅ΠΌΠ΅Π²ΠΈΡ‚Π΅ Ρ€Π΅Π΄ΠΎΠ²Π΅ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ Π² ΡΡŠΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΈΡ свят. А ΠΎΠ±Π΅ΠΌΡŠΡ‚ Π½Π° тяхното ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ нараства с всяка ΠΈΠ·ΠΌΠΈΠ½Π°Π»Π° Π³ΠΎΠ΄ΠΈΠ½Π°.

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π² Go Π² VictoriaMetrics. ΠΠ»Π΅ΠΊΡΠ°Π½Π΄ΡŠΡ€ Валялкин

Π—Π° ΠΊΠ°ΠΊΠ²ΠΎ Π΅ Π½ΡƒΠΆΠ½Π° Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ Π·Π° Π²Ρ€Π΅ΠΌΠ΅Π²ΠΈ Ρ€Π΅Π΄ΠΎΠ²Π΅? Π—Π°Ρ‰ΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½Π° Ρ€Π΅Π»Π°Ρ†ΠΈΠΎΠ½Π½Π° Π±Π°Π·Π° Π·Π° ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π½Π° Π²Ρ€Π΅ΠΌΠ΅Π²ΠΈ Ρ€Π΅Π΄ΠΎΠ²Π΅?

Π—Π°Ρ‰ΠΎΡ‚ΠΎ Π² Π²Ρ€Π΅ΠΌΠ΅Π²ΠΈΡ‚Π΅ Ρ€Π΅Π΄ΠΈΡ†ΠΈ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ ΠΈΠΌΠ° голямо количСство информация, която Π΅ Ρ‚Ρ€ΡƒΠ΄Π½Π° Π·Π° ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π² ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈ Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ. Π—Π°Ρ‚ΠΎΠ²Π° Π²ΡŠΠ·Π½ΠΈΠΊΠ½Π°Ρ…Π° спСциализирани Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ Π·Π° Π²Ρ€Π΅ΠΌΠ΅Π²ΠΈ Ρ€Π΅Π΄ΠΈΡ†ΠΈ. Π’Π΅Π·ΠΈ Π±Π°Π·ΠΈ Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎ ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°Ρ‚ Ρ‚ΠΎΡ‡ΠΊΠΈ (timestamp, стойност) с Π·Π°Π΄Π°Π΄Π΅Π½ ΠΊΠ»ΡŽΡ‡. Π’Π΅ прСдоставят API Π·Π° Ρ‡Π΅Ρ‚Π΅Π½Π΅ Π½Π° Π·Π°ΠΏΠ°Π·Π΅Π½ΠΈΡ‚Π΅ Π΄Π°Π½Π½ΠΈ ΠΏΠΎ ΠΊΠ»ΡŽΡ‡, ΠΏΠΎ Π΅Π΄Π½Π° Π΄Π²ΠΎΠΉΠΊΠ° ΠΊΠ»ΡŽΡ‡-стойност, ΠΈΠ»ΠΈ ΠΏΠΎ няколко ΠΎΡ‚ Ρ‚Π΅Π·ΠΈ Π΄Π²ΠΎΠΉΠΊΠΈ, ΠΈΠ»ΠΈ ΠΏΠΎ regexp. НапримСр, Π°ΠΊΠΎ искатС Π΄Π° Π½Π°ΠΌΠ΅Ρ€ΠΈΡ‚Π΅ Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° процСсора Π½Π° всички ваши услуги Π² Ρ†Π΅Π½Ρ‚ΡŠΡ€Π° Π·Π° Π΄Π°Π½Π½ΠΈ Π² АмСрика, трябва Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ Ρ‚Π°ΠΊΡŠΠ² псСвдозапрос.

ОбикновСно Π±Π°Π·ΠΈΡ‚Π΅ Π΄Π°Π½Π½ΠΈ Π·Π° Π²Ρ€Π΅ΠΌΠ΅Π²ΠΈ Ρ€Π΅Π΄ΠΈΡ†ΠΈ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Ρ‚ спСциализирани Π΅Π·ΠΈΡ†ΠΈ Π·Π° запитвания, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ SQL Π½Π΅ Π΅ ΠΌΠ½ΠΎΠ³ΠΎ подходящ Π·Π° Π²Ρ€Π΅ΠΌΠ΅Π²ΠΈ Ρ€Π΅Π΄ΠΈΡ†ΠΈ. Π’ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‡Π΅ ΠΈΠΌΠ° Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Ρ‚ SQL, Ρ‚ΠΎΠΉ Π½Π΅ Π΅ ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΠΎΠ±Ρ€Π΅ ΠΏΡ€ΠΈΠ³ΠΎΠ΄Π΅Π½. По-подходящи са Π΅Π·ΠΈΡ†ΠΈ Π·Π° запитвания ΠΊΠ°Ρ‚ΠΎ PromQL, InfluxQL, Flux, Q. Надявам сС, Ρ‡Π΅ някой Π΅ Ρ‡ΡƒΠ²Π°Π» ΠΏΠΎΠ½Π΅ Π·Π° Π΅Π΄ΠΈΠ½ ΠΎΡ‚ Ρ‚Π΅Π·ΠΈ Π΅Π·ΠΈΡ†ΠΈ. Π—Π° PromQL вСроятно ΠΌΠ½ΠΎΠ³ΠΎ Ρ…ΠΎΡ€Π° са Ρ‡ΡƒΠ²Π°Π»ΠΈ. Π’ΠΎΠ²Π° Π΅ Π΅Π·ΠΈΠΊΡŠΡ‚ Π·Π° запитвания Π½Π° Prometheus.

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π² Go Π² VictoriaMetrics. ΠΠ»Π΅ΠΊΡΠ°Π½Π΄ΡŠΡ€ Валялкин

Π•Ρ‚ΠΎ ΠΊΠ°ΠΊ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°Ρ‚Π° Π½Π° ΡΡŠΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ‚Π° Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ Π·Π° Π²Ρ€Π΅ΠΌΠ΅Π²ΠΈ Ρ€Π΅Π΄ΠΈΡ†ΠΈ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Π½Π° VictoriaMetrics.

Вя сС ΡΡŠΡΡ‚ΠΎΠΈ ΠΎΡ‚ Π΄Π²Π΅ части. Π’ΠΎΠ²Π° Π΅ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Π·Π° ΠΈΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€Π°Π½ индСкс ΠΈ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Π·Π° стойности Π½Π° Π²Ρ€Π΅ΠΌΠ΅Π²ΠΈ Ρ€Π΅Π΄ΠΈΡ†ΠΈ. Π’Π΅Π·ΠΈ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° са Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈ.

ΠšΠΎΠ³Π°Ρ‚ΠΎ ΠΏΠΎΡΡ‚ΡŠΠΏΠ²Π° Π½ΠΎΠ²Π° запис Π² Π±Π°Π·Π°Ρ‚Π° Π΄Π°Π½Π½ΠΈ, ΠΏΡŠΡ€Π²ΠΎ сС ΠΎΠ±Ρ€ΡŠΡ‰Π°ΠΌΠ΅ към инвСртирания индСкс, Π·Π° Π΄Π° Π½Π°ΠΌΠ΅Ρ€ΠΈΠΌ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° Π½Π° врСмСвия Ρ€Π΅Π΄ ΠΏΠΎ Π·Π°Π΄Π°Π΄Π΅Π½ Π½Π°Π±ΠΎΡ€ label=value Π·Π° Π΄Π°Π΄Π΅Π½Π°Ρ‚Π° ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠ°. НамирамС Ρ‚ΠΎΠ·ΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΈ записвамС стойността Π² Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅Ρ‚ΠΎ Π½Π° Π΄Π°Π½Π½ΠΈ.

ΠšΠΎΠ³Π°Ρ‚ΠΎ ΠΏΠΎΡΡ‚ΡŠΠΏΠΈ Π·Π°ΠΏΠΈΡ‚Π²Π°Π½Π΅ Π·Π° ΠΈΠ·Π²Π»ΠΈΡ‡Π°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ ΠΎΡ‚ TSDB, ΠΏΡŠΡ€Π²ΠΎ сС насочвамС към инвСртирания индСкс. ИзваТдамС всички timeseries_ids записи, ΠΊΠΎΠΈΡ‚ΠΎ отговарят Π½Π° зададСния Π½Π°Π±ΠΎΡ€. label=valueΠ‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° ΠΈΠ·Π²Π»ΠΈΡ‡Π°ΠΌΠ΅ всички Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΈ Π΄Π°Π½Π½ΠΈ ΠΎΡ‚ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅Ρ‚ΠΎ Π½Π° Π΄Π°Π½Π½ΠΈ, индСксирано ΠΏΠΎ timeseries_ids.

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π² Go Π² VictoriaMetrics. ΠΠ»Π΅ΠΊΡΠ°Π½Π΄ΡŠΡ€ Валялкин

НСка Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠ°ΠΊ Π±Π°Π·Π°Ρ‚Π° Π΄Π°Π½Π½ΠΈ Π·Π° Π²Ρ€Π΅ΠΌΠ΅Π²ΠΈ Ρ€Π΅Π΄ΠΈΡ†ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π° входящо select-Π·Π°ΠΏΠΈΡ‚Π²Π°Π½Π΅.

  • ΠŸΡŠΡ€Π²ΠΎ тя ΠΈΠ·Π²Π°ΠΆΠ΄Π° всички timeseries_ids ΠΎΡ‚ инвСртирания индСкс, ΠΊΠΎΠΈΡ‚ΠΎ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Ρ‚ Π·Π°Π΄Π°Π΄Π΅Π½ΠΈΡ‚Π΅ Π΄Π²ΠΎΠΉΠΊΠΈ label=value, ΠΈΠ»ΠΈ отговарят Π½Π° Π·Π°Π΄Π°Π΄Π΅Π½ΠΎΡ‚ΠΎ рСгулярното изразяванС.
  • Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° ΠΈΠ·Π²Π»ΠΈΡ‡Π° всички Ρ‚ΠΎΡ‡ΠΊΠΈ Π½Π° Π΄Π°Π½Π½ΠΈ ΠΎΡ‚ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅Ρ‚ΠΎ Π½Π° Π΄Π°Π½Π½ΠΈ Π½Π° зададСния Π²Ρ€Π΅ΠΌΠ΅Π²ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π» Π·Π° Π½Π°ΠΌΠ΅Ρ€Π΅Π½ΠΈΡ‚Π΅ timeseries_ids.
  • Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° Π±Π°Π·Π°Ρ‚Π° Π΄Π°Π½Π½ΠΈ ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈ изчислСния Π½Π°Π΄ Ρ‚Π΅Π·ΠΈ Ρ‚ΠΎΡ‡ΠΊΠΈ Π½Π° Π΄Π°Π½Π½ΠΈ, Π² ΡΡŠΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΈΠ΅ с исканСто Π½Π° потрСбитСля. И слСд Ρ‚ΠΎΠ²Π° Π²Ρ€ΡŠΡ‰Π° ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€Π°.

Π’ Ρ‚Π°Π·ΠΈ прСзСнтация Ρ‰Π΅ Π²ΠΈ Ρ€Π°Π·ΠΊΠ°ΠΆΠ° Π·Π° ΠΏΡŠΡ€Π²Π°Ρ‚Π° част. Π’ΠΎΠ²Π° Π΅ Ρ‚ΡŠΡ€ΡΠ΅Π½Π΅ timeseries_ids ΠΏΠΎ инвСртирания индСкс. Π—Π° Π²Ρ‚ΠΎΡ€Π° ΠΈ Ρ‚Ρ€Π΅Ρ‚Π° част ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π²ΠΈΠ΄ΠΈΡ‚Π΅ ΠΏΠΎ-късно изходния ΠΊΠΎΠ΄ Π½Π° VictoriaMetrics, ΠΈΠ»ΠΈ Π΄Π° ΠΈΠ·Ρ‡Π°ΠΊΠ°Ρ‚Π΅, Π΄ΠΎΠΊΠ°Ρ‚ΠΎ подготвя Π΄Ρ€ΡƒΠ³ΠΈ Π΄ΠΎΠΊΠ»Π°Π΄ΠΈ πŸ™‚

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π² Go Π² VictoriaMetrics. ΠΠ»Π΅ΠΊΡΠ°Π½Π΄ΡŠΡ€ Валялкин

НСка Π΄Π° Π·Π°ΠΏΠΎΡ‡Π½Π΅ΠΌ с инвСртирания индСкс. Много Ρ…ΠΎΡ€Π° ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° помислят, Ρ‡Π΅ Ρ‚ΠΎΠ²Π° Π΅ просто. Кой Π·Π½Π°Π΅ ΠΊΠ°ΠΊΠ²ΠΎ Π΅ ΠΈΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€Π°Π½ индСкс ΠΈ ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚ΠΈ? О, Π²Π΅Ρ‡Π΅ Π½Π΅ Π΅ Ρ‚ΠΎΠ»ΠΊΠΎΠ²Π° ΠΌΠ½ΠΎΠ³ΠΎ Ρ…ΠΎΡ€Π°. НСка сС ΠΎΠΏΠΈΡ‚Π°ΠΌΠ΅ Π΄Π° Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ ΠΊΠ°ΠΊΠ²ΠΎ Π΅ Ρ‚ΠΎΠ²Π°.

Π’ΡΡŠΡ‰Π½ΠΎΡΡ‚ всичко Π΅ просто. Π’ΠΎΠ²Π° Π΅ просто Ρ€Π΅Ρ‡Π½ΠΈΠΊ, ΠΊΠΎΠΉΡ‚ΠΎ ΡΡŠΠΏΠΎΡΡ‚Π°Π²Ρ ΠΊΠ»ΡŽΡ‡ с Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Какво Π΅ ΠΊΠ»ΡŽΡ‡? Π’Π°Π·ΠΈ Π΄Π²ΠΎΠΉΠΊΠ° label=value, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ label ΠΈ стойност β€” Π΅ стринг. А стойноститС са Π½Π°Π±ΠΎΡ€ timeseries_ids, ΠΊΠΎΠΉΡ‚ΠΎ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ° Π·Π°Π΄Π°Π΄Π΅Π½Π° Π΄Π²ΠΎΠΉΠΊΠ° label=value.

Π˜Π½Π²Π΅Ρ€Ρ‚ΠΈΡ€Π°Π½ΠΈΡ индСкс позволява Π±ΡŠΡ€Π·ΠΎ Π½Π°ΠΌΠΈΡ€Π°Π½Π΅ Π½Π° всички timeseries_ids, ΠΊΠΎΠΈΡ‚ΠΎ ΠΈΠΌΠ°Ρ‚ Π·Π°Π΄Π°Π΄Π΅Π½ΠΈ label=value.

Π’ΠΎΠΉ ΡΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° позволява Π±ΡŠΡ€Π·ΠΎ Π½Π°ΠΌΠΈΡ€Π°Π½Π΅ Π½Π° timeseries_ids Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΈ Ρ€Π΅Π΄ΠΎΠ²Π΅ Π·Π° няколко Π΄Π²ΠΎΠΉΠΊΠΈ label=value, ΠΈΠ»ΠΈ Π·Π° Π΄Π²ΠΎΠΉΠΊΠΈ label=regexp. Как сС случва Ρ‚ΠΎΠ²Π°? Π§Ρ€Π΅Π· Π½Π°ΠΌΠΈΡ€Π°Π½Π΅ Π½Π° прСсСчСниСто Π½Π° мноТСство timeseries_ids Π·Π° всяка Π΄Π²ΠΎΠΉΠΊΠ° label=value.

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π² Go Π² VictoriaMetrics. ΠΠ»Π΅ΠΊΡΠ°Π½Π΄ΡŠΡ€ Валялкин

НСка Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π° инвСртирания индСкс. НСка Π·Π°ΠΏΠΎΡ‡Π½Π΅ΠΌ с Π½Π°ΠΉ-простата Π½Π°ΠΈΠ²Π½Π° рСализация. Вя ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° Ρ‚Π°ΠΊΠ°.

Ѐункция getMetricIDs Π²Ρ€ΡŠΡ‰Π° списък ΠΎΡ‚ стринговС. ВсСки стринг ΡΡŠΠ΄ΡŠΡ€ΠΆΠ° label=value. Π’Π°Π·ΠΈ функция Π²Ρ€ΡŠΡ‰Π° списък metricIDs.

Как Ρ€Π°Π±ΠΎΡ‚ΠΈ? ИмамС Π³Π»ΠΎΠ±Π°Π»Π½Π° ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π°, Π½Π°Ρ€Π΅Ρ‡Π΅Π½Π° invertedIndex. Π’ΠΎΠ²Π° Π΅ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ Ρ€Π΅Ρ‡Π½ΠΈΠΊ (map), ΠΊΠΎΠΉΡ‚ΠΎ ΡΡŠΠΏΠΎΡΡ‚Π°Π²Ρ стринг Π½Π° slice int-ΠΎΠ²Π΅. Π‘Ρ‚Ρ€ΠΈΠ½Π³ΡŠΡ‚ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ° label=value.

РСализацията Π½Π° функцията: ΠΈΠ·Π²Π»ΠΈΡ‡Π°ΠΌΠ΅ metricIDs Π·Π° ΠΏΡŠΡ€Π²ΠΈΡ label=value, слСд Ρ‚ΠΎΠ²Π° ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Π²Π°ΠΌΠ΅ ΠΏΡ€Π΅Π· всички останали label=value, ΠΈΠ·Π²Π»ΠΈΡ‡Π°ΠΌΠ΅ metricIDs Π·Π° тях. И ΠΈΠ·Π²ΠΈΠΊΠ²Π°ΠΌΠ΅ функцията intersectInts, Π·Π° която Ρ‰Π΅ станС Π΄ΡƒΠΌΠ° ΠΏΠΎ-късно. И Ρ‚Π°Π·ΠΈ функция Π²Ρ€ΡŠΡ‰Π° прСсСчСниСто Π½Π° Ρ‚Π΅Π·ΠΈ ΡΠΏΠΈΡΡŠΡ†ΠΈ.

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π² Go Π² VictoriaMetrics. ΠΠ»Π΅ΠΊΡΠ°Π½Π΄ΡŠΡ€ Валялкин

ΠšΠ°ΠΊΡ‚ΠΎ Π²ΠΈΠΆΠ΄Π°Ρ‚Π΅, рСализацията Π½Π° инвСртирания индСкс Π½Π΅ Π΅ особСно слоТна. Но Ρ‚ΠΎΠ²Π° Π΅ Π½Π°ΠΈΠ²Π½Π° рСализация. Какви Π½Π΅Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ†ΠΈ ΠΈΠΌΠ°? Главният Π½Π΅Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΠΊ Π½Π° Π½Π°ΠΈΠ²Π½Π°Ρ‚Π° рСализация Π΅, Ρ‡Π΅ Ρ‚Π°ΠΊΡŠΠ² ΠΈΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€Π°Π½ индСкс сС ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π° Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½Π°Ρ‚Π° ΠΏΠ°ΠΌΠ΅Ρ‚. Π‘Π»Π΅Π΄ рСстартиранС Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π³ΡƒΠ±ΠΈΠΌ Ρ‚ΠΎΠ·ΠΈ индСкс. Няма Π·Π°ΠΏΠ°Π·Π²Π°Π½Π΅ Π½Π° Ρ‚ΠΎΠ·ΠΈ индСкс Π½Π° диск. Π—Π° Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ Ρ‚Π°ΠΊΡŠΠ² ΠΈΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€Π°Π½ индСкс Π΅Π΄Π²Π° Π»ΠΈ Π΅ подходящ.

Вторият Π½Π΅Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΠΊ ΡΡŠΡ‰ΠΎ Π΅ ΡΠ²ΡŠΡ€Π·Π°Π½ с ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π°. Π˜Π½Π²Π΅Ρ€Ρ‚ΠΈΡ€Π°Π½ΠΈΡ индСкс трябва Π΄Π° сС помСсти Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½Π°Ρ‚Π° ΠΏΠ°ΠΌΠ΅Ρ‚. Ако ΠΏΡ€Π΅Π²ΠΈΡˆΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½Π°Ρ‚Π° ΠΏΠ°ΠΌΠ΅Ρ‚, ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ Ρ‰Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ – out of memory error. И ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ°Ρ‚Π° няма Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ.

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π² Go Π² VictoriaMetrics. ΠΠ»Π΅ΠΊΡΠ°Π½Π΄ΡŠΡ€ Валялкин

Π’Π°Π·ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС Ρ€Π΅ΡˆΠ΅Π½Π° с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Π³ΠΎΡ‚ΠΎΠ²ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΊΠ°Ρ‚ΠΎ LevelDB, ΠΈΠ»ΠΈ RocksDB.

Ако Π½Π°ΠΊΡ€Π°Ρ‚ΠΊΠΎ, Π½ΠΈ Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ° Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ, която позволява Π±ΡŠΡ€Π·ΠΎ ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π°Π½Π΅ Π½Π° Ρ‚Ρ€ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ.

  • ΠŸΡŠΡ€Π²Π°Ρ‚Π° опСрация Π΅ записванСто ΠΊΠ»ΡŽΡ‡-стойност Π² Ρ‚Π°Π·ΠΈ Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ. Вя Π³ΠΎ ΠΏΡ€Π°Π²ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ Π±ΡŠΡ€Π·ΠΎ, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ ΠΊΠ»ΡŽΡ‡-стойност са ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»Π½ΠΈ стринговС.
  • Π’Ρ‚ΠΎΡ€Π°Ρ‚Π° опСрация Π΅ Π±ΡŠΡ€Π·ΠΎ Ρ‚ΡŠΡ€ΡΠ΅Π½Π΅ Π½Π° стойност ΠΏΠΎ Π·Π°Π΄Π°Π΄Π΅Π½ ΠΊΠ»ΡŽΡ‡.
  • Π’Ρ€Π΅Ρ‚Π°Ρ‚Π° опСрация Π΅ Π±ΡŠΡ€Π·ΠΎ Ρ‚ΡŠΡ€ΡΠ΅Π½Π΅ Π½Π° всички стойности ΠΏΠΎ Π·Π°Π΄Π°Π΄Π΅Π½ прСфикс.

LevelDB ΠΈ RocksDB са Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π΅Π½ΠΈ ΠΎΡ‚ Google ΠΈ Facebook. ΠŸΡŠΡ€Π²ΠΎΠ½Π°Ρ‡Π°Π»Π½ΠΎ сС появи LevelDB. Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° Ρ…ΠΎΡ€Π°Ρ‚Π° ΠΎΡ‚ Facebook Π²Π·Π΅Ρ…Π° LevelDB ΠΈ Π·Π°ΠΏΠΎΡ‡Π½Π°Ρ…Π° Π΄Π° Π³ΠΎ подобряват, създавайки RocksDB. Π’ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° ΠΏΠΎΡ‡Ρ‚ΠΈ всички Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½ΠΈ Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ Π½Π° Facebook работят Π½Π° RocksDB, Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ ΠΈ ΠΏΡ€Π΅Π²Π΅Π΄ΠΎΡ…Π° MySQL Π½Π° RocksDB. Π’Π΅ Π³ΠΎ Π½Π°Ρ€Π΅ΠΊΠΎΡ…Π° MyRocks.

Π˜Π½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ индСкс ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° LevelDB. Как? Π—Π°ΠΏΠ°Π·Π²Π°ΠΌΠ΅ ΠΊΠ°Ρ‚ΠΎ ΠΊΠ»ΡŽΡ‡ label=value. А ΠΊΠ°Ρ‚ΠΎ стойност - ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Π½Π° врСмСвия Ρ€Π΅Π΄, Π² ΠΊΠΎΠΉΡ‚ΠΎ ΠΏΡ€ΠΈΡΡŠΡΡ‚Π²Π° Π΄Π²ΠΎΠΉΠΊΠ°Ρ‚Π° label=value.

Ако ΠΈΠΌΠ°ΠΌΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π²ΠΈ Ρ€Π΅Π΄ΠΈΡ†ΠΈ с Ρ‚Π°Π·ΠΈ Π΄Π²ΠΎΠΉΠΊΠ° label=value, Ρ‰Π΅ ΠΈΠΌΠ° ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π΅Π΄ΠΎΠ²Π΅ Π² Ρ‚Π°Π·ΠΈ Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ с Π΅Π΄ΠΈΠ½ ΠΈ ΡΡŠΡ‰ΠΈ ΠΊΠ»ΡŽΡ‡ ΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ timeseries_ids. Π—Π° Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ списък Π½Π° всички timeseries_ids, ΠΊΠΎΠΈΡ‚ΠΎ Π·Π°ΠΏΠΎΡ‡Π²Π°Ρ‚ с Ρ‚ΠΎΠ·ΠΈ label=prefix, ΠΏΡ€Π°Π²ΠΈΠΌ range scan, Π·Π° ΠΊΠΎΠΉΡ‚ΠΎ Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€Π°Π½Π° Ρ‚Π°Π·ΠΈ Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ. Π’.Π΅. ΠΈΠ·Π±ΠΈΡ€Π°ΠΌΠ΅ всички Ρ€Π΅Π΄ΠΎΠ²Π΅, ΠΊΠΎΠΈΡ‚ΠΎ Π·Π°ΠΏΠΎΡ‡Π²Π°Ρ‚ с label=prefix ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°ΠΌΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΈΡ‚Π΅ timeseries_ids.

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π² Go Π² VictoriaMetrics. ΠΠ»Π΅ΠΊΡΠ°Π½Π΄ΡŠΡ€ Валялкин

Π•Ρ‚ΠΎ Π΅Π΄ΠΈΠ½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅Π½ ΠΊΠΎΠ΄, ΠΊΠ°ΠΊ Π±ΠΈ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π°Π» Π½Π° Go. ИмамС ΠΈΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€Π°Π½ индСкс. Π’ΠΎΠ²Π° Π΅ LevelDB.

Ѐункцията Π΅ ΡΡŠΡ‰Π°Ρ‚Π°, ΠΊΠ°ΠΊΡ‚ΠΎ Π·Π° Π½Π°ΠΈΠ²Π½Π°Ρ‚Π° рСализация. Вя ΠΏΠΎΡ‡Ρ‚ΠΈ Ρ€Π΅Π΄ ΠΏΠΎ Ρ€Π΅Π΄ повтаря Π½Π°ΠΈΠ²Π½Π°Ρ‚Π° рСализация. ЕдинствСното Π½Π΅Ρ‰ΠΎ Π΅, Ρ‡Π΅ вмСсто Π΄Π° сС ΠΎΠ±ΡŠΡ€Π½Π΅ΠΌ към map , сС ΠΎΠ±Ρ€ΡŠΡ‰Π°ΠΌΠ΅ към инвСртирания индСкс. ΠŸΠΎΠ»ΡƒΡ‡Π°Π²Π°ΠΌΠ΅ всички стойности Π·Π° ΠΏΡŠΡ€Π²Π°Ρ‚Π° label=value. Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Π²Π°ΠΌΠ΅ ΠΏΡ€Π΅Π· всички останали Π΄Π²ΠΎΠΉΠΊΠΈ label=value ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°ΠΌΠ΅ ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½ΠΈΡ‚Π΅ Π½Π°Π±ΠΎΡ€ΠΈ metricIDs Π·Π° тях. Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° Π½Π°ΠΌΠΈΡ€Π°ΠΌΠ΅ прСсСчСниСто.

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π² Go Π² VictoriaMetrics. ΠΠ»Π΅ΠΊΡΠ°Π½Π΄ΡŠΡ€ Валялкин

Π’ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‡Π΅ всичко ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° Π΄ΠΎΠ±Ρ€Π΅, Π² Ρ‚ΠΎΠ²Π° Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΈΠΌΠ° Π½Π΅Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ†ΠΈ. VictoriaMetrics ΠΏΡŠΡ€Π²ΠΎΠ½Π°Ρ‡Π°Π»Π½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°ΡˆΠ΅ инвСртирания индСкс Π½Π° Π±Π°Π·Π°Ρ‚Π° Π½Π° LevelDB. Но Π² ΠΊΡ€Π°ΠΉΠ½Π° смСтка сС Π½Π°Π»ΠΎΠΆΠΈ Π΄Π° сС ΠΎΡ‚ΠΊΠ°ΠΆΠ΅ ΠΎΡ‚ Π½Π΅Π³ΠΎ.

Π—Π°Ρ‰ΠΎ? Π—Π°Ρ‰ΠΎΡ‚ΠΎ LevelDB Π΅ ΠΏΠΎ-Π±Π°Π²Π΅Π½ ΠΎΡ‚ Π½Π°ΠΈΠ²Π½Π°Ρ‚Π° рСализация. Π’ Π½Π°ΠΈΠ²Π½Π°Ρ‚Π° рСализация ΠΏΠΎ Π·Π°Π΄Π°Π΄Π΅Π½ ΠΊΠ»ΡŽΡ‡ Π²Π΅Π΄Π½Π°Π³Π° ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°ΠΌΠ΅ цСлия slice metricIDs. Π’Π°Π·ΠΈ опСрация Π΅ ΠΌΠ½ΠΎΠ³ΠΎ Π±ΡŠΡ€Π·Π° - цСлият slice Π΅ Π³ΠΎΡ‚ΠΎΠ² Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅.

ΠŸΡ€ΠΈ LevelDB ΠΎΠ±Π°Ρ‡Π΅ ΠΏΡ€ΠΈ всяко ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° функцията GetValues трябва Π΄Π° ΠΏΡ€Π΅ΠΌΠΈΠ½Π΅ΠΌ ΠΏΡ€Π΅Π· всички Ρ€Π΅Π΄ΠΎΠ²Π΅, ΠΊΠΎΠΈΡ‚ΠΎ Π·Π°ΠΏΠΎΡ‡Π²Π°Ρ‚ с label=value. И Π·Π° всСки Ρ€Π΅Π΄ Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ стойността timeseries_ids. ΠžΡ‚ Ρ‚Π΅Π·ΠΈ timeseries_ids ΡΡŠΠ±ΠΈΡ€Π°ΠΌΠ΅ slice Π½Π° Ρ‚Π΅Π·ΠΈ timeseries_ids. ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ Π΅, Ρ‡Π΅ Ρ‚ΠΎΠ²Π° Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎ-Π±Π°Π²Π½ΠΎ ΠΎΡ‚ просто ΠΎΠ±Ρ€ΡŠΡ‰Π΅Π½ΠΈΠ΅ към ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ ΠΌΠ°ΠΏ ΠΏΠΎ ΠΊΠ»ΡŽΡ‡.

Вторият Π½Π΅Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΠΊ Π΅, Ρ‡Π΅ LevelDB Π΅ написан Π½Π° C. ΠžΠ±Π°ΠΆΠ΄Π°Π½Π΅Ρ‚ΠΎ Π½Π° C Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΡ‚ Go Π½Π΅ Π΅ ΠΌΠ½ΠΎΠ³ΠΎ Π±ΡŠΡ€Π·ΠΎ. Π’ΠΎΠ²Π° ΠΎΡ‚Π½Π΅ΠΌΠ° стотици наносСкунди. НС Π΅ ΠΌΠ½ΠΎΠ³ΠΎ Π±ΡŠΡ€Π·ΠΎ, Π·Π°Ρ‰ΠΎΡ‚ΠΎ Π² сравнСниС с ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎΡ‚ΠΎ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° функция, написана Π½Π° Go, която ΠΎΡ‚Π½Π΅ΠΌΠ° 1-5 наносСкунди, Ρ€Π°Π·Π»ΠΈΠΊΠ°Ρ‚Π° Π² производитСлността Π΅ дСсСтократно. Π—Π° VictoriaMetrics Ρ‚ΠΎΠ²Π° бСшС Ρ„Π°Ρ‚Π°Π»Π΅Π½ Π½Π΅Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΠΊ πŸ™‚

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π² Go Π² VictoriaMetrics. ΠΠ»Π΅ΠΊΡΠ°Π½Π΄ΡŠΡ€ Валялкин

Π—Π°Ρ‚ΠΎΠ²Π° написах собствСна рСализация Π½Π° инвСртирания индСкс. И я Π½Π°Ρ€Π΅ΠΊΠΎΡ… mergeset.

Mergeset Π΅ Π±Π°Π·ΠΈΡ€Π°Π½ Π½Π° структурата ΠΎΡ‚ Π΄Π°Π½Π½ΠΈ MergeTree. Π’Π°Π·ΠΈ структура ΠΎΡ‚ Π΄Π°Π½Π½ΠΈ Π΅ заимствана ΠΎΡ‚ ClickHouse. ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ Π΅, Ρ‡Π΅ mergeset трябва Π΄Π° бъдС ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€Π°Π½ Π·Π° Π±ΡŠΡ€Π·ΠΎ Ρ‚ΡŠΡ€ΡΠ΅Π½Π΅ timeseries_ids ΠΏΠΎ Π·Π°Π΄Π°Π΄Π΅Π½ ΠΊΠ»ΡŽΡ‡. Mergeset Π΅ написан изцяло Π½Π° Go. ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π²ΠΈΠ΄ΠΈΡ‚Π΅ изходния ΠΊΠΎΠ΄ Π½Π° VictoriaMetrics Π² GitHub. РСализацията Π½Π° mergeset сС Π½Π°ΠΌΠΈΡ€Π° Π² ΠΏΠ°ΠΏΠΊΠ°Ρ‚Π° /lib/mergeset. ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° сС ΠΎΠΏΠΈΡ‚Π°Ρ‚Π΅ Π΄Π° Ρ€Π°Π·Π±Π΅Ρ€Π΅Ρ‚Π΅ ΠΊΠ°ΠΊΠ²ΠΎ сС случва Ρ‚Π°ΠΌ.

API-Ρ‚ΠΎ Π½Π° mergeset Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ Π½Π° Ρ‚ΠΎΠ²Π° Π½Π° LevelDB ΠΈ RocksDB. ВоСст, позволява Π±ΡŠΡ€Π·ΠΎ записванС Π½Π° Π½ΠΎΠ²ΠΈ записи ΠΈ Π±ΡŠΡ€Π·ΠΎ ΠΈΠ·Π²Π»ΠΈΡ‡Π°Π½Π΅ Π½Π° записи ΠΏΠΎ Π·Π°Π΄Π°Π΄Π΅Π½ прСфикс.

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π² Go Π² VictoriaMetrics. ΠΠ»Π΅ΠΊΡΠ°Π½Π΄ΡŠΡ€ Валялкин

Π—Π° Π½Π΅Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ†ΠΈΡ‚Π΅ Π½Π° mergeset Ρ‰Π΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΏΠΎ-късно. Π‘Π΅Π³Π° Ρ‰Π΅ обсъдим ΠΊΠ°ΠΊΠ²ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ Π²ΡŠΠ·Π½ΠΈΠΊΠ½Π°Ρ…Π° с VictoriaMetrics Π² производствСна срСда ΠΏΡ€ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° инвСртирания индСкс.

Π—Π°Ρ‰ΠΎ Π²ΡŠΠ·Π½ΠΈΠΊΠ½Π°Ρ…Π°?

ΠŸΡŠΡ€Π²Π°Ρ‚Π° ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π° Π΅ високият churn rate. Π’ ΠΏΡ€Π΅Π²ΠΎΠ΄ Π½Π° Π±ΡŠΠ»Π³Π°Ρ€ΡΠΊΠΈ – Ρ‚ΠΎΠ²Π° Π΅ чСста смяна Π½Π° Π²Ρ€Π΅ΠΌΠ΅Π²ΠΈΡ‚Π΅ Ρ€Π΅Π΄ΠΎΠ²Π΅. Π’ΠΎΠ²Π° сС случва, ΠΊΠΎΠ³Π°Ρ‚ΠΎ врСмСвият Ρ€Π΅Π΄ ΡΠ²ΡŠΡ€ΡˆΠ²Π° ΠΈ Π·Π°ΠΏΠΎΡ‡Π²Π° Π½ΠΎΠ² Ρ€Π΅Π΄, ΠΈΠ»ΠΈ Π·Π°ΠΏΠΎΡ‡Π²Π°Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎ Π½ΠΎΠ²ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π²ΠΈ Ρ€Π΅Π΄ΠΎΠ²Π΅. И Ρ‚ΠΎΠ²Π° сС случва доста чСсто.

Π’Ρ‚ΠΎΡ€Π°Ρ‚Π° ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π° Π΅ голямото количСство Π²Ρ€Π΅ΠΌΠ΅Π²ΠΈ Ρ€Π΅Π΄ΠΎΠ²Π΅. Π’ Π½Π°Ρ‡Π°Π»ΠΎΡ‚ΠΎ, ΠΊΠΎΠ³Π°Ρ‚ΠΎ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ΡŠΡ‚ Π·Π°ΠΏΠΎΡ‡Π²Π°ΡˆΠ΅ Π΄Π° Π½Π°Π±ΠΈΡ€Π° популярност, количСството Π²Ρ€Π΅ΠΌΠ΅Π²ΠΈ Ρ€Π΅Π΄ΠΎΠ²Π΅ Π±Π΅ ΠΌΠ°Π»ΠΊΠΎ. НапримСр, Π·Π° всяка машина Ρ‚Ρ€ΡΠ±Π²Π°ΡˆΠ΅ Π΄Π° сС слСди Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° процСсора, ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π°, ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π° ΠΈ диска. 4 Π²Ρ€Π΅ΠΌΠ΅Π²ΠΈ Ρ€Π΅Π΄Π° Π½Π° машина. Π”Π° ΠΊΠ°ΠΆΠ΅ΠΌ, Ρ‡Π΅ ΠΈΠΌΠ°Ρ‚Π΅ 100 машини ΠΈ 400 Π²Ρ€Π΅ΠΌΠ΅Π²ΠΈ Ρ€Π΅Π΄Π°. Π’ΠΎΠ²Π° Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠ°Π»ΠΊΠΎ.

Π‘ Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ Π½Π° Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ Ρ…ΠΎΡ€Π°Ρ‚Π° измислиха, Ρ‡Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΈΠ·ΠΌΠ΅Ρ€Π²Π° ΠΏΠΎ-ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π° информация. НапримСр, Π΄Π° сС ΠΈΠ·ΠΌΠ΅Ρ€Π²Π° Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π΅ Π½Π° цСлия процСсор, Π° Π½Π° ΠΎΡ‚Π΄Π΅Π»Π½ΠΈΡ‚Π΅ ядра Π½Π° процСсора. Ако ΠΈΠΌΠ°Ρ‚Π΅ 40 ядра Π½Π° процСсора, Ρ‚ΠΎ ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½ΠΎ ΠΈΠΌΠ°Ρ‚Π΅ 40 ΠΏΡŠΡ‚ΠΈ ΠΏΠΎΠ²Π΅Ρ‡Π΅ Π²Ρ€Π΅ΠΌΠ΅Π²ΠΈ Ρ€Π΅Π΄ΠΎΠ²Π΅ Π·Π° ΠΈΠ·ΠΌΠ΅Ρ€Π²Π°Π½Π΅ Π½Π° Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° процСсора.

Но Ρ‚ΠΎΠ²Π° Π½Π΅ Π΅ всичко. Всяко ядро Π½Π° процСсора ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠΌΠ° няколко ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΡ, ΠΊΠ°Ρ‚ΠΎ idle, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π΅ Π² Ρ€Π΅ΠΆΠΈΠΌ Π½Π° ΠΈΠ·Ρ‡Π°ΠΊΠ²Π°Π½Π΅. ОсвСн Ρ‚ΠΎΠ²Π° ΠΈΠΌΠ° Ρ€Π°Π±ΠΎΡ‚Π° Π² user space, Ρ€Π°Π±ΠΎΡ‚Π° Π² kernel space ΠΈ Π΄Ρ€ΡƒΠ³ΠΈ ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΡ. И всяко Ρ‚Π°ΠΊΠΎΠ²Π° ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅ ΡΡŠΡ‰ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС ΠΈΠ·ΠΌΠ΅Ρ€Π²Π°Π½ΠΎ ΠΊΠ°Ρ‚ΠΎ ΠΎΡ‚Π΄Π΅Π»Π½Π° Π²Ρ€Π΅ΠΌΠ΅Π²Π° сСрия. Π’ΠΎΠ²Π° Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡Π°Π²Π° броя Π½Π° сСриитС 7-8 ΠΏΡŠΡ‚ΠΈ.

ΠžΡ‚ Π΅Π΄Π½Π° ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠ° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ…ΠΌΠ΅ 40 Ρ… 8 = 320 ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ само Π·Π° Π΅Π΄ΠΈΠ½ ΠΊΠΎΠΌΠΏΡŽΡ‚ΡŠΡ€. Π£ΠΌΠ½ΠΎΠΆΠ°Π²Π°ΠΌΠ΅ ΠΏΠΎ 100, ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°ΠΌΠ΅ 32 000 вмСсто 400.

Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° сС появи Kubernetes. И всС ΠΎΡ‰Π΅ влоши ситуацията, Π·Π°Ρ‰ΠΎΡ‚ΠΎ Π² Kubernetes ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° хостват ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ услуги. Всяка услуга Π² Kubernetes сС ΡΡŠΡΡ‚ΠΎΠΈ ΠΎΡ‚ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Π°. И всичко Ρ‚ΠΎΠ²Π° трябва Π΄Π° бъдС наблюдавано. ОсвСн Ρ‚ΠΎΠ²Π° ΠΈΠΌΠ°ΠΌΠ΅ постоянСн Π΄Π΅ΠΏΠ»ΠΎΠΉΠΌΡŠΠ½Ρ‚ Π½Π° Π½ΠΎΠ²ΠΈ вСрсии Π½Π° Π²Π°ΡˆΠΈΡ‚Π΅ услуги. Π—Π° всяка Π½ΠΎΠ²Π° вСрсия трябва Π΄Π° сС ΡΡŠΠ·Π΄Π°Π΄Π°Ρ‚ Π½ΠΎΠ²ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π²ΠΈ сСрии. Π’ ΠΊΡ€Π°ΠΉΠ½Π° смСтка броят Π½Π° Π²Ρ€Π΅ΠΌΠ΅Π²ΠΈΡ‚Π΅ сСрии нараства СкспонСнциално ΠΈ сС сблъсквамС с ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° с голямото количСство Π²Ρ€Π΅ΠΌΠ΅Π²ΠΈ сСрии, Π½Π°Ρ€Π΅Ρ‡Π΅Π½ high-cardinality. VictoriaMetrics ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ сС справя с Π½Π΅Π³ΠΎ Π² сравнСниС с Π΄Ρ€ΡƒΠ³ΠΈ Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ Π·Π° Π²Ρ€Π΅ΠΌΠ΅Π²ΠΈ сСрии.

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π² Go Π² VictoriaMetrics. ΠΠ»Π΅ΠΊΡΠ°Π½Π΄ΡŠΡ€ Валялкин

НСка Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΠΏΠΎ-ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ high churn rate. Какво причинява high churn rate Π½Π° продукция? Π—Π°Ρ‰ΠΎΡ‚ΠΎ някои стойности Π½Π° Π΅Ρ‚ΠΈΠΊΠ΅Ρ‚ΠΈΡ‚Π΅ ΠΈ Ρ‚Π°Π³ΠΎΠ²Π΅Ρ‚Π΅ постоянно сС промСнят.

НапримСр, Π΄Π° Π²Π·Π΅ΠΌΠ΅ΠΌ Kubernetes, Π² ΠΊΠΎΠΉΡ‚ΠΎ ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π° концСпция deployment, Ρ‚.Π΅. ΠΊΠΎΠ³Π°Ρ‚ΠΎ сС ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π° Π½ΠΎΠ²Π° вСрсия Π½Π° Π²Π°ΡˆΠ΅Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈΡ‚Π΅ Π½Π° Kubernetes ΠΏΠΎ нСизвСстна ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π° Ρ€Π΅ΡˆΠΈΡ…Π° Π΄Π° добавят id Π½Π° Π΄Π΅ΠΏΠ»ΠΎΠΉΠΌΠ΅Π½Ρ‚Π° Π² Π΅Ρ‚ΠΈΠΊΠ΅Ρ‚Π°.

Какво Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ Ρ‚ΠΎΠ²Π°? Π”ΠΎ Ρ‚ΠΎΠ²Π°, Ρ‡Π΅ ΠΏΡ€ΠΈ всСки Π½ΠΎΠ² Π΄Π΅ΠΏΠ»ΠΎΠΉΠΌΠ΅Π½Ρ‚ всички стари Π²Ρ€Π΅ΠΌΠ΅Π²ΠΈ сСрии ΠΏΡ€Π΅ΠΊΡŠΡΠ²Π°Ρ‚, Π° вмСсто тях Π·Π°ΠΏΠΎΡ‡Π²Π°Ρ‚ Π½ΠΎΠ²ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π²ΠΈ сСрии с Π½ΠΎΠ²Π° стойност Π½Π° Π΅Ρ‚ΠΈΠΊΠ΅Ρ‚Π° deployment_id. Π’Π°ΠΊΠΈΠ²Π° сСрии ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ стотици хиляди ΠΈ Π΄ΠΎΡ€ΠΈ ΠΌΠΈΠ»ΠΈΠΎΠ½ΠΈ.

Π’Π°ΠΆΠ½Π° особСност Π½Π° всичко Ρ‚ΠΎΠ²Π° Π΅, Ρ‡Π΅ общият Π±Ρ€ΠΎΠΉ Π²Ρ€Π΅ΠΌΠ΅Π²ΠΈ сСрии нараства, Π½ΠΎ броят Π½Π° Π²Ρ€Π΅ΠΌΠ΅Π²ΠΈΡ‚Π΅ сСрии, ΠΊΠΎΠΈΡ‚ΠΎ Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° са Π°ΠΊΡ‚ΠΈΠ²Π½ΠΈ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°Ρ‚ Π΄Π°Π½Π½ΠΈ, остава постоянСн. Π’Π°ΠΊΠΎΠ²Π° ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅ сС Π½Π°Ρ€ΠΈΡ‡Π° – high churn rate.

ΠžΡΠ½ΠΎΠ²Π½ΠΈΡΡ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ с high churn rate Π΅ Π΄Π° сС осигури постоянна скорост Π½Π° Ρ‚ΡŠΡ€ΡΠ΅Π½Π΅ Π½Π° всички Π²Ρ€Π΅ΠΌΠ΅Π²ΠΈ сСрии ΠΏΠΎ Π·Π°Π΄Π°Π΄Π΅Π½ Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ Π΅Ρ‚ΠΈΠΊΠ΅Ρ‚ΠΈ Π·Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ ΠΎΡ‚ Π²Ρ€Π΅ΠΌΠ΅. ОбикновСно Ρ‚ΠΎΠ²Π° Π΅ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ ΠΎΡ‚ Π²Ρ€Π΅ΠΌΠ΅ Π·Π° послСдния час ΠΈΠ»ΠΈ послСдния Π΄Π΅Π½.

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π² Go Π² VictoriaMetrics. ΠΠ»Π΅ΠΊΡΠ°Π½Π΄ΡŠΡ€ Валялкин

Как Π΄Π° Ρ€Π΅ΡˆΠΈΠΌ Ρ‚ΠΎΠ·ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ? Π•Ρ‚ΠΎ ΠΏΡŠΡ€Π²ΠΈΡ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚. Π”Π° Ρ€Π°Π·Π΄Π΅Π»ΠΈΠΌ инвСртирания индСкс Π½Π° нСзависими части ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅. Π’.Π΅. ΠΈΠ·ΠΌΠΈΠ½Π°Π²Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π» ΠΎΡ‚ Π²Ρ€Π΅ΠΌΠ΅, ΠΏΡ€ΠΈΠΊΠ»ΡŽΡ‡Π²Π°ΠΌΠ΅ с тСкущия ΠΈΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€Π°Π½ индСкс. И създавамС Π½ΠΎΠ² ΠΈΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€Π°Π½ индСкс. Изминава ΠΎΡ‰Π΅ Π΅Π΄ΠΈΠ½ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π» ΠΎΡ‚ Π²Ρ€Π΅ΠΌΠ΅, създавамС ΠΎΡ‰Π΅ Π΅Π΄ΠΈΠ½ ΠΈ Ρ‚Π°ΠΊΠ° Π½Π°Ρ‚Π°Ρ‚ΡŠΠΊ.

И ΠΏΡ€ΠΈ ΠΈΠ·Π²Π»ΠΈΡ‡Π°Π½Π΅ ΠΎΡ‚ Ρ‚Π΅Π·ΠΈ ΠΈΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€Π°Π½ΠΈ индСкси Π½Π°ΠΌΠΈΡ€Π°ΠΌΠ΅ Π½Π°Π±ΠΎΡ€ ΠΈΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€Π°Π½ΠΈ индСкси, ΠΊΠΎΠΈΡ‚ΠΎ ΠΏΠΎΠΏΠ°Π΄Π°Ρ‚ Π² зададСния ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π». И ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½ΠΎ ΠΈΠ·Π±ΠΈΡ€Π°ΠΌΠ΅ ΠΎΡ‚Ρ‚Π°ΠΌ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΈΡ‚Π΅ Π½Π° Π²Ρ€Π΅ΠΌΠ΅Π²ΠΈΡ‚Π΅ Ρ€Π΅Π΄ΠΈΡ†ΠΈ.

Π’ΠΎΠ²Π° позволява Π΄Π° спСстим рСсурси, Π·Π°Ρ‰ΠΎΡ‚ΠΎ Π½Π΅ Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° ΠΏΡ€Π΅Π³Π»Π΅ΠΆΠ΄Π°ΠΌΠ΅ части, ΠΊΠΎΠΈΡ‚ΠΎ Π½Π΅ ΠΏΠΎΠΏΠ°Π΄Π° Π² опрСдСлСния ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π». Π’.Π΅. ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ, Π°ΠΊΠΎ ΠΈΠ·Π±ΠΈΡ€Π°ΠΌΠ΅ Π΄Π°Π½Π½ΠΈ Π·Π° послСдния час, Ρ‚ΠΎ Π·Π° ΠΏΡ€Π΅Π΄Ρ…ΠΎΠ΄Π½ΠΈΡ‚Π΅ Π²Ρ€Π΅ΠΌΠ΅Π²ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»ΠΈ пропускамС заявкитС.

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π² Go Π² VictoriaMetrics. ΠΠ»Π΅ΠΊΡΠ°Π½Π΄ΡŠΡ€ Валялкин

Има ΠΎΡ‰Π΅ Π΅Π΄ΠΈΠ½ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Π·Π° Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π½Π° Ρ‚ΠΎΠ·ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ. Π”Π° ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°ΠΌΠ΅ Π·Π° всСки Π΄Π΅Π½ ΠΎΡ‚Π΄Π΅Π»Π΅Π½ списък с ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΈ Π½Π° Π²Ρ€Π΅ΠΌΠ΅Π²ΠΈΡ‚Π΅ Ρ€Π΅Π΄ΠΈΡ†ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ са сС появили ΠΏΡ€Π΅Π· Ρ‚ΠΎΠ·ΠΈ Π΄Π΅Π½.

ΠŸΡ€Π΅Π΄ΠΈΠΌΡΡ‚Π²ΠΎΡ‚ΠΎ Π½Π° Ρ‚ΠΎΠ²Π° Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π² сравнСниС с ΠΏΡ€Π΅Π΄ΠΈΡˆΠ½ΠΎΡ‚ΠΎ Π΅, Ρ‡Π΅ Π½Π΅ Π΄ΡƒΠ±Π»ΠΈΡ€Π°ΠΌΠ΅ информацията Π·Π° Π²Ρ€Π΅ΠΌΠ΅Π²ΠΈΡ‚Π΅ Ρ€Π΅Π΄ΠΈΡ†ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ Π½Π΅ ΠΈΠ·Ρ‡Π΅Π·Π²Π°Ρ‚ с Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ. Π’Π΅ постоянно ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Ρ‚ ΠΈ Π½Π΅ сС промСнят.

ΠΠ΅Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΠΊΡŠΡ‚ Π΅, Ρ‡Π΅ Ρ‚Π°ΠΊΠΎΠ²Π° Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π΅ ΠΏΠΎ-слоТно Π·Π° Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π΅ ΠΈ ΠΏΠΎ-Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ Π·Π° отстраняванС Π½Π° Π³Ρ€Π΅ΡˆΠΊΠΈ. И VictoriaMetrics ΠΈΠ·Π±Ρ€Π° Ρ‚ΠΎΠ²Π° Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅. Π’Π°ΠΊΠ° сС Π΅ ΠΎΡ„ΠΎΡ€ΠΌΠΈΠ»ΠΎ историчСски. Π’Π°ΠΊΠΎΠ²Π° Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΡΡŠΡ‰ΠΎ ΠΏΠΎΠΊΠ°Π·Π²Π° Π΄ΠΎΠ±Ρ€ΠΈ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈ Π² сравнСниС с ΠΏΡ€Π΅Π΄ΠΈΡˆΠ½ΠΎΡ‚ΠΎ. Π—Π°Ρ‰ΠΎΡ‚ΠΎ Ρ‚ΠΎΠ²Π° Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π½Π΅ Π΅ Π±ΠΈΠ»ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½ΠΎ Π·Π°Ρ€Π°Π΄ΠΈ нСобходимостта ΠΎΡ‚ Π΄ΡƒΠ±Π»ΠΈΡ€Π°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ във всяко Ρ€Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π·Π° Π²Ρ€Π΅ΠΌΠ΅Π²ΠΈΡ‚Π΅ Ρ€Π΅Π΄ΠΈΡ†ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ Π½Π΅ сС промСнят, Ρ‚.Π΅. ΠΊΠΎΠΈΡ‚ΠΎ Π½Π΅ ΠΈΠ·Ρ‡Π΅Π·Π²Π°Ρ‚ с Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ. VictoriaMetrics Π΅ Π±ΠΈΠ»Π° ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€Π°Π½Π° ΠΏΡ€Π΅Π΄ΠΈΠΌΠ½ΠΎ ΠΏΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ Π½Π° консумацията Π½Π° дисково пространство ΠΈ ΠΏΡ€Π΅Π΄ΠΈΡˆΠ½Π°Ρ‚Π° рСализация Π΅ влошавала консумацията Π½Π° дисково пространство. А ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π°Π·ΠΈ рСализация Π΅ ΠΏΠΎ-подходяща Π·Π° ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° консумацията Π½Π° дисково пространство, Π·Π°Ρ‚ΠΎΠ²Π° Π΅ Π±ΠΈΠ»Π° ΠΈΠ·Π±Ρ€Π°Π½Π°.

ΠŸΡ€ΠΈΡˆΠ»ΠΎ сС Π΅ Π΄Π° сС Π±ΠΎΡ€ΠΈΠΌ с Π½Π΅Π³ΠΎ. Π‘ΠΎΡ€Π±Π°Ρ‚Π° сС ΡΡŠΡΡ‚ΠΎΠ΅ΡˆΠ΅ Π² Ρ‚ΠΎΠ²Π°, Ρ‡Π΅ Π² Ρ‚Π°Π·ΠΈ рСализация всС ΠΏΠ°ΠΊ трябва Π΄Π° сС ΠΈΠ·Π±ΠΈΡ€Π°Ρ‚ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ ΠΏΠΎ-голямо количСство timeseries_ids Π·Π° Π΄Π°Π½Π½ΠΈ, ΠΎΡ‚ΠΊΠΎΠ»ΠΊΠΎΡ‚ΠΎ, ΠΊΠΎΠ³Π°Ρ‚ΠΎ инвСртираният индСкс Π΅ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅.

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π² Go Π² VictoriaMetrics. ΠΠ»Π΅ΠΊΡΠ°Π½Π΄ΡŠΡ€ Валялкин

Как Ρ€Π΅ΡˆΠΈΡ…ΠΌΠ΅ Ρ‚ΠΎΠ·ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ? Π Π΅ΡˆΠΈΡ…ΠΌΠ΅ Π³ΠΎ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»Π½ΠΎ – Ρ‡Ρ€Π΅Π· ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π½Π° няколко ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° Π½Π° Π²Ρ€Π΅ΠΌΠ΅Π²ΠΈ Ρ€Π΅Π΄ΠΈΡ†ΠΈ Π² всяка записка Π½Π° инвСртирания индСкс вмСсто Π΅Π΄ΠΈΠ½ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€. Π’.Π΅. ΠΈΠΌΠ°ΠΌΠ΅ ΠΊΠ»ΡŽΡ‡ label=value, ΠΊΠΎΠΉΡ‚ΠΎ сС срСща във всяка Π²Ρ€Π΅ΠΌΠ΅Π²Π° ΠΏΠΎΡ€Π΅Π΄ΠΈΡ†Π°. И сСга Π·Π°ΠΏΠ°Π·Π²Π°ΠΌΠ΅ няколко timeseries_ids Π² Π΅Π΄Π½Π° запис.

Π•Ρ‚ΠΎ Π΅Π΄ΠΈΠ½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€. ΠŸΡ€Π΅Π΄ΠΈ ΠΈΠΌΠ°Ρ…ΠΌΠ΅ N записа, Π° сСга ΠΈΠΌΠ°ΠΌΠ΅ Π΅Π΄ΠΈΠ½ запис, Ρ‡ΠΈΠΉΡ‚ΠΎ прСфикс Π΅ ΡΡŠΡ‰ΠΈΡΡ‚ ΠΊΠ°Ρ‚ΠΎ Π½Π° всички останали. ΠŸΡ€Π΅Π΄ΠΈΡˆΠ½ΠΈΡΡ‚ запис ΡΡŠΠ΄ΡŠΡ€ΠΆΠ° всички id Π½Π° Π²Ρ€Π΅ΠΌΠ΅Π²ΠΈΡ‚Π΅ сСрии.

Π’ΠΎΠ²Π° Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡Π°Π²Π°Π½Π΅ Π½Π° скоростта Π½Π° сканиранС Π½Π° Ρ‚ΠΎΠ·ΠΈ ΠΎΠ±ΡŠΡ€Π½Π°Ρ‚ индСкс Π΄ΠΎ 10 ΠΏΡŠΡ‚ΠΈ. И Π½Π°ΠΌΠ°Π»ΠΈ ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚ Π·Π° кСша, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ сСга ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°ΠΌΠ΅ стринга label=value само вСднъТ Π² кСша, вмСсто N ΠΏΡŠΡ‚ΠΈ. И Ρ‚ΠΎΠ·ΠΈ стринг ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС голям, Π°ΠΊΠΎ Π² Ρ‚Π°Π³ΠΎΠ²Π΅Ρ‚Π΅ ΠΈ Π΅Ρ‚ΠΈΠΊΠ΅Ρ‚ΠΈΡ‚Π΅ ΠΈΠΌΠ°Ρ‚Π΅ дълги Π½ΠΈΠ·ΠΎΠ²Π΅, ΠΊΠΎΠΈΡ‚ΠΎ Kubernetes ΠΎΠ±ΠΈΡ‡Π° Π΄Π° добавя.

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π² Go Π² VictoriaMetrics. ΠΠ»Π΅ΠΊΡΠ°Π½Π΄ΡŠΡ€ Валялкин

ΠžΡ‰Π΅ Π΅Π΄ΠΈΠ½ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Π·Π° ускоряванС Π½Π° Ρ‚ΡŠΡ€ΡΠ΅Π½Π΅Ρ‚ΠΎ Π² ΠΎΠ±ΡŠΡ€Π½Π°Ρ‚ΠΈΡ индСкс Π΅ ΡˆΠ°Ρ€Π΄ΠΈΡ€Π²Π°Π½Π΅Ρ‚ΠΎ. БъздаванС Π½Π° няколко ΠΎΠ±ΡŠΡ€Π½Π°Ρ‚ΠΈ индСкса вмСсто Π΅Π΄ΠΈΠ½ ΠΈ ΡˆΠ°Ρ€Π΄ΠΈΡ€Π²Π°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈΡ‚Π΅ ΠΌΠ΅ΠΆΠ΄Ρƒ тях ΠΏΠΎ ΠΊΠ»ΡŽΡ‡. Π’ΠΎΠ²Π° Π΅ Π½Π°Π±ΠΎΡ€ key=value ΠΎΡ‚ Π΄Π²ΠΎΠΉΠΊΠΈ. Π’.Π΅. ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°ΠΌΠ΅ няколко нСзависими ΠΎΠ±ΡŠΡ€Π½Π°Ρ‚ΠΈ индСкса, ΠΊΠΎΠΈΡ‚ΠΎ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π·Π°ΠΏΠΈΡ‚Π²Π°ΠΌΠ΅ ΠΏΠ°Ρ€Π°Π»Π΅Π»Π½ΠΎ Π½Π° няколко процСсора. ΠŸΡ€Π΅Π΄ΠΈΡˆΠ½ΠΈΡ‚Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ позволяваха Ρ€Π°Π±ΠΎΡ‚Π° само Π² СднопроцСсорСн Ρ€Π΅ΠΆΠΈΠΌ, Ρ‚.Π΅. сканиранС Π½Π° Π΄Π°Π½Π½ΠΈΡ‚Π΅ само Π½Π° Π΅Π΄Π½ΠΎ ядро. Π’ΠΎΠ²Π° Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ позволява сканиранС Π½Π° Π΄Π°Π½Π½ΠΈΡ‚Π΅ Π΅Π΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π½Π° няколко ядра, ΠΊΠ°ΠΊΡ‚ΠΎ ΠΎΠ±ΠΈΡ‡Π° Π΄Π° ΠΏΡ€Π°Π²ΠΈ ClickHouse. Π’ΠΎΠ²Π° ΠΏΠ»Π°Π½ΠΈΡ€Π°ΠΌΠ΅ Π΄Π° Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°ΠΌΠ΅.

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π² Go Π² VictoriaMetrics. ΠΠ»Π΅ΠΊΡΠ°Π½Π΄ΡŠΡ€ Валялкин

А сСга Π΄Π° сС Π²ΡŠΡ€Π½Π΅ΠΌ Π½Π° Ρ‚Π΅ΠΌΠ°Ρ‚Π° – Π·Π° функцията Π½Π° прСсичанС timeseries_ids. НСка Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΠΊΠ°ΠΊΠ²ΠΈ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ рСализацията. Π’Π°Π·ΠΈ функция позволява Π΄Π° сС Π½Π°ΠΌΠΈΡ€Π°Ρ‚ timeseries_ids Π·Π° Π·Π°Π΄Π°Π΄Π΅Π½ Π½Π°Π±ΠΎΡ€ label=value.

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π² Go Π² VictoriaMetrics. ΠΠ»Π΅ΠΊΡΠ°Π½Π΄ΡŠΡ€ Валялкин

ΠŸΡŠΡ€Π²ΠΈΡΡ‚ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ – Ρ‚ΠΎΠ²Π° Π΅ Π½Π°ΠΈΠ²Π½Π°Ρ‚Π° рСализация. Π”Π²Π° Π²Π»ΠΎΠΆΠ΅Π½ΠΈ Ρ†ΠΈΠΊΡŠΠ»Π°. Π’Ρ…ΠΎΠ΄ΡŠΡ‚ Π½Π° функцията intersectInts са Π΄Π²Π° slices β€” a ΠΈ b. На ΠΈΠ·Ρ…ΠΎΠ΄Π° тя трябва Π΄Π° Π½ΠΈ Π²ΡŠΡ€Π½Π΅ прСсСчСниСто Π½Π° Ρ‚Π΅Π·ΠΈ slices.

Наивната рСализация ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° ΠΏΠΎ слСдния Π½Π°Ρ‡ΠΈΠ½. ИзминавамС всички стойности ΠΎΡ‚ slice a, Π² Ρ€Π°ΠΌΠΊΠΈΡ‚Π΅ Π½Π° Ρ‚ΠΎΠ·ΠΈ Ρ†ΠΈΠΊΡŠΠ» ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Π²Π°ΠΌΠ΅ ΠΏΡ€Π΅Π· всички стойности Π½Π° slice b. И Π³ΠΈ сравнявамС. Ако ΡΡŠΠ²ΠΏΠ°Π΄Π°Ρ‚, Π·Π½Π°Ρ‡ΠΈ смС Π½Π°ΠΌΠ΅Ρ€ΠΈΠ»ΠΈ прСсСчСниСто. И Π³ΠΎ Π·Π°ΠΏΠ°Π·Π²Π°ΠΌΠ΅ Π² Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈ.

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π² Go Π² VictoriaMetrics. ΠΠ»Π΅ΠΊΡΠ°Π½Π΄ΡŠΡ€ Валялкин

Какви са Π½Π΅Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ†ΠΈΡ‚Π΅? ΠšΠ²Π°Π΄Ρ€Π°Ρ‚Π½Π° слоТност β€” Ρ‚ΠΎΠ²Π° Π΅ основният ΠΉ Π½Π΅Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΠΊ. НапримСр, Π°ΠΊΠΎ ΠΈΠΌΠ°Ρ‚Π΅ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΈ Π½Π° slice a ΠΈ b ΠΎΡ‚ ΠΏΠΎ Π΅Π΄ΠΈΠ½ ΠΌΠΈΠ»ΠΈΠΎΠ½, Ρ‚ΠΎ Ρ‚Π°Π·ΠΈ функция Π½ΠΈΠΊΠΎΠ³Π° няма Π΄Π° Π²ΠΈ Π²ΡŠΡ€Π½Π΅ ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€. Π—Π°Ρ‰ΠΎΡ‚ΠΎ Ρ‰Π΅ трябва Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈ Π΅Π΄ΠΈΠ½ Ρ‚Ρ€ΠΈΠ»ΠΈΠΎΠ½ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ, ΠΊΠΎΠ΅Ρ‚ΠΎ Π΅ ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΠΎΡ€ΠΈ Π·Π° ΡΡŠΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΈ ΠΊΠΎΠΌΠΏΡŽΡ‚Ρ€ΠΈ.

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π² Go Π² VictoriaMetrics. ΠΠ»Π΅ΠΊΡΠ°Π½Π΄ΡŠΡ€ Валялкин

Π’Ρ‚ΠΎΡ€Π°Ρ‚Π° рСализация Π΅ Π±Π°Π·ΠΈΡ€Π°Π½Π° Π½Π° map. БъздавамС map. ΠŸΠΎΡΡ‚Π°Π²ΡΠΌΠ΅ Π² Ρ‚ΠΎΠ·ΠΈ map всички стойности ΠΎΡ‚ slice a. Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Π²Π°ΠΌΠ΅ с ΠΎΡ‚Π΄Π΅Π»Π΅Π½ Ρ†ΠΈΠΊΡŠΠ» ΠΏΡ€Π΅Π· slice b. И провСрявамС – Π΄Π°Π»ΠΈ ΠΈΠΌΠ° Ρ‚Π°Π·ΠΈ стойност ΠΎΡ‚ slice b Π² map. Ако ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°, добавямС Π³ΠΎ Π² Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚Π°.

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π² Go Π² VictoriaMetrics. ΠΠ»Π΅ΠΊΡΠ°Π½Π΄ΡŠΡ€ Валялкин

Какви са прСдимствата? ΠŸΡ€Π΅Π΄ΠΈΠΌΡΡ‚Π²ΠΎΡ‚ΠΎ Π΅, Ρ‡Π΅ Ρ‚ΡƒΠΊ Π΅ само Π»ΠΈΠ½Π΅ΠΉΠ½Π° слоТност. Π’.Π΅. функцията Ρ‰Π΅ изпълни ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎ-Π±ΡŠΡ€Π·ΠΎ Π·Π° Π³ΠΎΠ»Π΅ΠΌΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΈ Π½Π° slices. Π—Π° ΠΌΠΈΠ»ΠΈΠΎΠ½Π΅Π½ Ρ€Π°Π·ΠΌΠ΅Ρ€ slice, Ρ‚Π°Π·ΠΈ функция Ρ‰Π΅ сС изпълни Π·Π° 2 ΠΌΠΈΠ»ΠΈΠΎΠ½Π° ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Ρ‚Ρ€ΠΈΠ»ΠΈΠΎΠ½ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ, ΠΊΠ°ΠΊΡ‚ΠΎ Π² ΠΏΡ€Π΅Π΄ΠΈΡˆΠ½Π°Ρ‚Π° функция.

Но Π½Π΅Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΠΊΡŠΡ‚ Π΅, Ρ‡Π΅ Ρ‚Π°Π·ΠΈ функция изисква ΠΏΠΎΠ²Π΅Ρ‡Π΅ ΠΏΠ°ΠΌΠ΅Ρ‚, Π·Π° Π΄Π° създадС Ρ‚Π°Π·ΠΈ map.

Вторият Π½Π΅Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΠΊ – Π΅ голямото overhead Π½Π° Ρ…Π΅ΡˆΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ. Π’ΠΎΠ·ΠΈ Π½Π΅Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΠΊ Π½Π΅ Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π΅Π½. И Π·Π° нас Ρ‚ΠΎΠΉ ΡΡŠΡ‰ΠΎ Π½Π΅ бСшС ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π΅Π½, Π·Π°Ρ‚ΠΎΠ²Π° Π² Π½Π°Ρ‡Π°Π»ΠΎΡ‚ΠΎ Π² VictoriaMetrics рСализацията Π½Π° intersection бСшС Ρ‡Ρ€Π΅Π· map. Но послС ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ ΠΏΠΎΠΊΠ°Π·Π°, Ρ‡Π΅ основното процСсорно Π²Ρ€Π΅ΠΌΠ΅ сС ΠΈΠ·Ρ€Π°Π·Ρ…ΠΎΠ΄Π²Π° Π·Π° запис Π² map ΠΈ Π·Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π·Π° Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Π½Π° стойност Π² Ρ‚Π°Π·ΠΈ map.

Π—Π°Ρ‰ΠΎ Π² Ρ‚Π΅Π·ΠΈ мСста сС ΠΈΠ·Ρ€Π°Π·Ρ…ΠΎΠ΄Π²Π° процСсорно Π²Ρ€Π΅ΠΌΠ΅? Π—Π°Ρ‰ΠΎΡ‚ΠΎ Π² Ρ‚Π΅Π·ΠΈ Ρ€Π΅Π΄ΠΎΠ²Π΅ Go ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π° опСрация ΠΏΠΎ Ρ…Π΅ΡˆΠΈΡ€Π°Π½Π΅. Π’.Π΅. Ρ‚ΠΎΠΉ изчислява Ρ…Π΅Ρˆ ΠΎΡ‚ ΠΊΠ»ΡŽΡ‡Π°, Π·Π° Π΄Π° сС ΠΎΠ±ΡŠΡ€Π½Π΅ ΠΏΠΎ зададСния индСкс Π² HashMap. ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡΡ‚Π° ΠΏΠΎ изчисляванС Π½Π° Ρ…Π΅ΡˆΠ° сС изпълнява Π·Π° дСсСтки наносСкунди. Π’ΠΎΠ²Π° Π΅ Π±Π°Π²Π½ΠΎ Π·Π° VictoriaMetrics.

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π² Go Π² VictoriaMetrics. ΠΠ»Π΅ΠΊΡΠ°Π½Π΄ΡŠΡ€ Валялкин

Π Π΅ΡˆΠΈΡ… Π΄Π° Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°ΠΌ bitset, ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€Π°Π½ спСциално Π·Π° Ρ‚ΠΎΠ·ΠΈ случай. Π•Ρ‚ΠΎ ΠΊΠ°ΠΊ сСга ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° прСсСчСниСто Π½Π° Π΄Π²Π° slices. БъздавамС bitset. ДобавямС Π² Π½Π΅Π³ΠΎ Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ΠΈ ΠΎΡ‚ ΠΏΡŠΡ€Π²ΠΈΡ slice. ПослС провСрявамС Π½Π°Π»ΠΈΡ‡ΠΈΠ΅Ρ‚ΠΎ Π½Π° Ρ‚Π΅Π·ΠΈ Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ΠΈ във втория slice. И добавямС Π³ΠΈ Π² Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚Π°. Π’.Π΅. ΠΏΠΎΡ‡Ρ‚ΠΈ Π½Π΅ сС Ρ€Π°Π·Π»ΠΈΡ‡Π°Π²Π° ΠΎΡ‚ ΠΏΡ€Π΅Π΄ΠΈΡˆΠ½ΠΈΡ ΠΏΡ€ΠΈΠΌΠ΅Ρ€. ЕдинствСното, ΠΊΠΎΠ΅Ρ‚ΠΎ смС Π·Π°ΠΌΠ΅Π½ΠΈΠ»ΠΈ Π΅ Π΄ΠΎΡΡ‚ΡŠΠΏΠ° Π΄ΠΎ map с кастомни Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. add ΠΈ has.

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π² Go Π² VictoriaMetrics. ΠΠ»Π΅ΠΊΡΠ°Π½Π΄ΡŠΡ€ Валялкин

На ΠΏΡ€ΡŠΠ² ΠΏΠΎΠ³Π»Π΅Π΄ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π°, Ρ‡Π΅ Ρ‚ΠΎΠ²Π° трябва Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ ΠΏΠΎ-Π±Π°Π²Π½ΠΎ, Π°ΠΊΠΎ ΠΏΡ€Π΅Π΄ΠΈ Ρ‚ΠΎΠ²Π° Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π° стандартна map, Π° Ρ‚ΡƒΠΊ сС ΠΈΠ·Π²ΠΈΠΊΠ²Π°Ρ‚ ΠΎΡ‰Π΅ някакви Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π½ΠΎ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ ΠΏΠΎΠΊΠ°Π·Π²Π°, Ρ‡Π΅ Ρ‚Π°Π·ΠΈ Ρ€Π°Π±ΠΎΡ‚Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€Π° 10 ΠΏΡŠΡ‚ΠΈ ΠΏΠΎ-Π±ΡŠΡ€Π·ΠΎ ΠΎΡ‚ стандартната map Π·Π° случая с VictoriaMetrics.

ОсвСн Ρ‚ΠΎΠ²Π°, тя ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ ΠΏΠ°ΠΌΠ΅Ρ‚ Π² сравнСниС с рСализацията Π½Π° map. Π—Π°Ρ‰ΠΎΡ‚ΠΎ Ρ‚ΡƒΠΊ ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°ΠΌΠ΅ Π±ΠΈΡ‚ΠΎΠ²Π΅ вмСсто осСмбайтови стойности.

ΠΠ΅Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΠΊΡŠΡ‚ Π½Π° Ρ‚Π°Π·ΠΈ рСализация Π΅, Ρ‡Π΅ Π½Π΅ Π΅ Ρ‚ΠΎΠ»ΠΊΠΎΠ²Π° ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Π°, Π½Π΅ Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»Π½Π°.

ΠžΡ‰Π΅ Π΅Π΄ΠΈΠ½ Π½Π΅Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΠΊ, ΠΊΠΎΠΉΡ‚ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ Ρ…ΠΎΡ€Π° ΠΌΠΎΠΆΠ΅ Π΄Π° Π½Π΅ Π·Π°Π±Π΅Π»Π΅ΠΆΠ°Ρ‚, Π΅, Ρ‡Π΅ Ρ‚Π°Π·ΠΈ рСализация ΠΌΠΎΠΆΠ΅ Π΄Π° Π½Π΅ Ρ€Π°Π±ΠΎΡ‚ΠΈ Π΄ΠΎΠ±Ρ€Π΅ Π² някои случаи. Π’.Π΅. тя Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€Π°Π½Π° Π·Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π΅Π½ случай, Π·Π° случая Π½Π° прСсичанС Π½Π° ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΈ Π½Π° Π²Ρ€Π΅ΠΌΠ΅Π²ΠΈ Ρ€Π΅Π΄ΠΎΠ²Π΅ Π² VictoriaMetrics. Π’ΠΎΠ²Π° Π½Π΅ ΠΎΠ·Π½Π°Ρ‡Π°Π²Π°, Ρ‡Π΅ тя Π΅ подходяща Π·Π° всички случаи. Ако я ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»Π½ΠΎ, вмСсто Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π½Π° производитСлността, Ρ‰Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ out of memory error ΠΈ забавянС Π½Π° производитСлността.

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π² Go Π² VictoriaMetrics. ΠΠ»Π΅ΠΊΡΠ°Π½Π΄ΡŠΡ€ Валялкин

Π”Π° Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ рСализацията Π½Π° Ρ‚Π°Π·ΠΈ структура. Ако искатС Π΄Π° я Π²ΠΈΠ΄ΠΈΡ‚Π΅, тя сС Π½Π°ΠΌΠΈΡ€Π° Π² изходния ΠΊΠΎΠ΄ Π½Π° VictoriaMetrics, Π² ΠΏΠ°ΠΏΠΊΠ° lib/uint64set. Вя Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€Π°Π½Π° ΠΈΠΌΠ΅Π½Π½ΠΎ Π·Π° случая Π½Π° VictoriaMetrics, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ timeseries_id прСдставлява 64-Π±ΠΈΡ‚ΠΎΠ²Π° стойност, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ ΠΏΡŠΡ€Π²ΠΈΡ‚Π΅ 32 Π±ΠΈΡ‚Π° са основно постоянни ΠΈ сС промСнят само послСднитС 32 Π±ΠΈΡ‚Π°.

Π’Π°Π·ΠΈ структура Π΄Π°Π½Π½ΠΈ Π½Π΅ сС ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π° Π½Π° диска, тя Ρ€Π°Π±ΠΎΡ‚ΠΈ само Π² ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π°.

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π² Go Π² VictoriaMetrics. ΠΠ»Π΅ΠΊΡΠ°Π½Π΄ΡŠΡ€ Валялкин

Π•Ρ‚ΠΎ нСйния API. Π’ΠΎΠΉ Π½Π΅ Π΅ ΠΌΠ½ΠΎΠ³ΠΎ слоТСн. API-Ρ‚ΠΎ Π΅ Π°Π΄Π°ΠΏΡ‚ΠΈΡ€Π°Π½ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ Π·Π° конкрСтния ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π½Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° VictoriaMetrics. Π’.Π΅. Ρ‚ΡƒΠΊ няма излишни Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π’ΡƒΠΊ са Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈΡ‚Π΅, ΠΊΠΎΠΈΡ‚ΠΎ явно сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ ΠΎΡ‚ VictoriaMetrics.

Има функция add, която добавя Π½ΠΎΠ²ΠΈ стойности. Има функция has, която провСрява Π½ΠΎΠ²ΠΈ стойности. И ΠΈΠΌΠ° функция del, която ΠΈΠ·Ρ‚Ρ€ΠΈΠ²Π° стойности. Има ΠΏΠΎΠΌΠΎΡ‰Π½Π° функция len, която Π²Ρ€ΡŠΡ‰Π° Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π½Π° мноТСството. Ѐункцията clone ΠΊΠ»ΠΎΠ½ΠΈΡ€Π° мноТСството. И функцията appendto ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ²Π° Ρ‚ΠΎΠ·ΠΈ сСт Π² slice. timeseries_ids.

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π² Go Π² VictoriaMetrics. ΠΠ»Π΅ΠΊΡΠ°Π½Π΄ΡŠΡ€ Валялкин

Π•Ρ‚ΠΎ ΠΊΠ°ΠΊ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° рСализацията Π½Π° Ρ‚Π°Π·ΠΈ структура Π΄Π°Π½Π½ΠΈ. Π’ сСт ΠΈΠΌΠ° Π΄Π²Π° Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚Π°:

  • ItemsCount – Ρ‚ΠΎΠ²Π° Π΅ ΠΏΠΎΠΌΠΎΡ‰Π½ΠΎ ΠΏΠΎΠ»Π΅, Π·Π° Π΄Π° Π²ΡŠΡ€Π½Π΅Ρ‚Π΅ Π±ΡŠΡ€Π·ΠΎ броя Π½Π° Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ‚Π΅ Π² сСт. МоТС Π΄Π° сС справитС ΠΈ Π±Π΅Π· Ρ‚ΠΎΠ²Π° ΠΏΠΎΠΌΠΎΡ‰Π½ΠΎ ΠΏΠΎΠ»Π΅, Π½ΠΎ Ρ‚Ρ€ΡΠ±Π²Π°ΡˆΠ΅ Π΄Π° Π³ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Ρ‚ΡƒΠΊ, Π·Π°Ρ‰ΠΎΡ‚ΠΎ VictoriaMetrics чСсто Π·Π°ΠΏΠΈΡ‚Π²Π° Π·Π° Π΄ΡŠΠ»ΠΆΠΈΠ½Π°Ρ‚Π° Π½Π° bitset Π² своитС Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΈ.

  • Π’Ρ‚ΠΎΡ€ΠΎΡ‚ΠΎ ΠΏΠΎΠ»Π΅ Π΅ buckets. Π’ΠΎΠ²Π° Π΅ slice ΠΎΡ‚ структурата bucket32. Π’ΡŠΠ² всяка структура сС ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π° hi ΠΏΠΎΠ»Π΅. Π’ΠΎΠ²Π° са Π³ΠΎΡ€Π½ΠΈΡ‚Π΅ 32 Π±ΠΈΡ‚Π°. И Π΄Π²Π° slice β€” b16his ΠΈ buckets ΠΎΡ‚ bucket16 структури.

Π’ΡƒΠΊ сС ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°Ρ‚ Π³ΠΎΡ€Π½ΠΈΡ‚Π΅ 16 Π±ΠΈΡ‚Π° ΠΎΡ‚ Π²Ρ‚ΠΎΡ€Π°Ρ‚Π° част Π½Π° 64-Π±ΠΈΡ‚ΠΎΠ²Π°Ρ‚Π° структура. А Ρ‚ΡƒΠΊ сС ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°Ρ‚ bitsets Π·Π° ΠΌΠ»Π°Π΄ΡˆΠΈΡ‚Π΅ 16 Π±ΠΈΡ‚Π° Π½Π° всСки Π±Π°ΠΉΡ‚.

Bucket64 сС ΡΡŠΡΡ‚ΠΎΠΈ ΠΎΡ‚ масив uint64. Π”ΡŠΠ»ΠΆΠΈΠ½Π°Ρ‚Π° сС изчислява с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Ρ‚Π΅Π·ΠΈ константи. Π’ Π΅Π΄ΠΈΠ½ bucket16 максимум ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π° 2^16=65536 Π±ΠΈΡ‚. Ако Π³ΠΎ Ρ€Π°Π·Π΄Π΅Π»ΠΈΠΌ Π½Π° 8, Ρ‚ΠΎΠ²Π° Π΅ 8 ΠΊΠΈΠ»ΠΎΠ±Π°ΠΉΡ‚Π°. Ако Π³ΠΎ Ρ€Π°Π·Π΄Π΅Π»ΠΈΠΌ ΠΎΡ‚Π½ΠΎΠ²ΠΎ Π½Π° 8, Ρ‚ΠΎΠ²Π° са 1000 uint64 стойности. Π’.Π΅. Bucket16 Π΅ 8-ΠΊΠΈΠ»ΠΎΠ±Π°ΠΉΡ‚Π½Π° структура.

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π² Go Π² VictoriaMetrics. ΠΠ»Π΅ΠΊΡΠ°Π½Π΄ΡŠΡ€ Валялкин

НСка Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΠΊΠ°ΠΊ Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½ Π΅Π΄ΠΈΠ½ ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΡ‚Π΅ Π½Π° Ρ‚Π°Π·ΠΈ структура Π·Π° добавянС Π½Π° Π½ΠΎΠ²Π° стойност.

Всичко Π·Π°ΠΏΠΎΡ‡Π²Π° с uint64 значСния. Π˜Π·Ρ‡ΠΈΡΠ»ΡΠ²Π°ΠΌΠ΅ Π³ΠΎΡ€Π½ΠΈΡ‚Π΅ 32 Π±ΠΈΡ‚Π°, изчислявамС Π΄ΠΎΠ»Π½ΠΈΡ‚Π΅ 32 Π±ΠΈΡ‚Π°. ΠŸΡ€Π΅ΠΌΠΈΠ½Π°Π²Π°ΠΌΠ΅ ΠΏΡ€Π΅Π· всички buckets. БравнявамС Π³ΠΎΡ€Π½ΠΈΡ‚Π΅ 32 Π±ΠΈΡ‚Π° Π² всСки bucket с Π΄ΠΎΠ±Π°Π²Π΅Π½Π°Ρ‚Π° стойност. И Π°ΠΊΠΎ Ρ‚Π΅ ΡΡŠΠ²ΠΏΠ°Π΄Π°Ρ‚, ΠΈΠ·Π²ΠΈΠΊΠ²Π°ΠΌΠ΅ функцията add Π² структурата b32 buckets. И добавямС Π΄ΠΎΠ»Π½ΠΈΡ‚Π΅ 32 Π±ΠΈΡ‚Π°. И Π°ΠΊΠΎ Ρ‚ΠΎΠ²Π° Π΅ Π²ΡŠΡ€Π½Π°Π»ΠΎ true, Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π²Π°, Ρ‡Π΅ смС Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ Ρ‚Π°ΠΊΠ°Π²Π° стойност Ρ‚Π°ΠΌ ΠΈ Ρ‚Π°ΠΊΠΎΠ²Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π΅ Π΅ ΠΈΠΌΠ°Π»ΠΎ. Ако тя Π²ΡŠΡ€Π½Π΅ false, Ρ‚ΠΎ Ρ‚Π°ΠΊΠ°Π²Π° стойност Π²Π΅Ρ‡Π΅ Π΅ ΠΈΠΌΠ°Π»Π°. Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° ΡƒΠ²Π΅Π»ΠΈΡ‡Π°Π²Π°ΠΌΠ΅ броя Π½Π° Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ‚Π΅ Π² структурата.

Ако Π½Π΅ смС Π½Π°ΠΌΠ΅Ρ€ΠΈΠ»ΠΈ нуТния bucket с Π½ΡƒΠΆΠ½ΠΎΡ‚ΠΎ hi-Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Ρ‚ΠΎ ΠΈΠ·Π²ΠΈΠΊΠ²Π°ΠΌΠ΅ функцията addAlloc, която задСля Π½ΠΎΠ² bucket, добавяйки Π³ΠΎ Π² структурата bucket.

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π² Go Π² VictoriaMetrics. ΠΠ»Π΅ΠΊΡΠ°Π½Π΄ΡŠΡ€ Валялкин

Π’ΠΎΠ²Π° Π΅ рСализацията Π½Π° функцията b32.add. Вя Π΅ ΠΏΠΎΠ΄ΠΎΠ±Π½Π° Π½Π° ΠΏΡ€Π΅Π΄ΠΈΡˆΠ½Π°Ρ‚Π° рСализация. Π˜Π·Ρ‡ΠΈΡΠ»ΡΠ²Π°ΠΌΠ΅ ΡΡ‚Π°Ρ€ΡˆΠΈΡ‚Π΅ 16 Π±ΠΈΡ‚Π°, ΠΌΠ»Π°Π΄ΡˆΠΈΡ‚Π΅ 16 Π±ΠΈΡ‚Π°.

Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Π²Π°ΠΌΠ΅ ΠΏΡ€Π΅Π· всички Π³ΠΎΡ€Π½ΠΈ 16 Π±ΠΈΡ‚Π°. НамирамС съвпадСния. И ΠΏΡ€ΠΈ съвпадСниС ΠΈΠ·Π²ΠΈΠΊΠ²Π°ΠΌΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° add, ΠΊΠΎΠΉΡ‚ΠΎ Ρ‰Π΅ Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ Π½Π° слСдващата страница Π·Π° bucket16.

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π² Go Π² VictoriaMetrics. ΠΠ»Π΅ΠΊΡΠ°Π½Π΄ΡŠΡ€ Валялкин

И Π΅Ρ‚ΠΎ Π½Π°ΠΉ-Π΄ΠΎΠ»Π½ΠΎΡ‚ΠΎ Π½ΠΈΠ²ΠΎ, ΠΊΠΎΠ΅Ρ‚ΠΎ трябва Π΄Π° бъдС максимално ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€Π°Π½ΠΎ. Π˜Π·Ρ‡ΠΈΡΠ»ΡΠ²Π°ΠΌΠ΅ Π·Π° uint64 id стойност Π² slice bit, Π° ΡΡŠΡ‰ΠΎ ΠΈ bitmask. Π’ΠΎΠ²Π° Π΅ маска Π·Π° Ρ‚Π°Π·ΠΈ 64-Π±ΠΈΡ‚ΠΎΠ²Π° стойност, ΠΏΠΎ която ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠΌ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅Ρ‚ΠΎ Π½Π° Ρ‚ΠΎΠ·ΠΈ Π±ΠΈΡ‚ ΠΈΠ»ΠΈ Π΄Π° Π³ΠΎ Π·Π°Π΄Π°Π΄Π΅ΠΌ. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ²Π°ΠΌΠ΅ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅Ρ‚ΠΎ Π½Π° Ρ‚ΠΎΠ·ΠΈ Π±ΠΈΡ‚, ΠΊΠΎΠΉΡ‚ΠΎ Π΅ Π·Π°Π΄Π°Π΄Π΅Π½, ΠΈ Π·Π°Π΄Π°Π²Π°ΠΌΠ΅ Π³ΠΎ, ΠΈ Π²Ρ€ΡŠΡ‰Π°ΠΌΠ΅ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅Ρ‚ΠΎ. Π•Ρ‚ΠΎ ΠΊΠ°ΠΊΠ²Π° рСализация ΠΈΠΌΠ°ΠΌΠ΅, която Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»Π° Π΄Π° сС ускори опСрацията Π½Π° прСсичанС Π½Π° ids Π½Π° Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΈ Ρ€Π΅Π΄ΠΈΡ†ΠΈ 10 ΠΏΡŠΡ‚ΠΈ Π² сравнСниС с ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ‚Π΅ maps.

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π² Go Π² VictoriaMetrics. ΠΠ»Π΅ΠΊΡΠ°Π½Π΄ΡŠΡ€ Валялкин

Π’ VictoriaMetrics освСн Ρ‚Π°Π·ΠΈ оптимизация ΠΈΠΌΠ° ΠΌΠ½ΠΎΠ³ΠΎ Π΄Ρ€ΡƒΠ³ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ. ΠŸΠΎΠ²Π΅Ρ‡Π΅Ρ‚ΠΎ ΠΎΡ‚ Ρ‚Π΅Π·ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π΅ са Π΄ΠΎΠ±Π°Π²Π΅Π½ΠΈ просто Ρ‚Π°ΠΊΠ°, Π° слСд ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΊΠΎΠ΄Π° Π² production.

Π’ΠΎΠ²Π° Π΅ основното ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ Π·Π° оптимизация – Π½Π΅ добавяйтС оптимизация, ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Ρ‰Π°, Ρ‡Π΅ Ρ‚ΡƒΠΊ Ρ‰Π΅ ΠΈΠΌΠ° тСсно място, Π·Π°Ρ‰ΠΎΡ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΎΠΊΠ°ΠΆΠ΅, Ρ‡Π΅ Ρ‚Π°ΠΌ няма тСсно място. ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡΡ‚Π° ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ влошава качСството Π½Π° ΠΊΠΎΠ΄Π°. Π—Π°Ρ‚ΠΎΠ²Π° Π΅ Π΄ΠΎΠ±Ρ€Π΅ Π΄Π° сС ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€Π° само слСд ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€Π°Π½Π΅ ΠΈ Π·Π° ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°Π½Π΅ Π² production, Π·Π° Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ истинскитС Π΄Π°Π½Π½ΠΈ. На Ρ‚Π΅Π·ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ сС интСрСсуват, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π²ΠΈΠ΄ΠΈΡ‚Π΅ изходния ΠΊΠΎΠ΄ Π½Π° VictoriaMetrics ΠΈ Π΄Π° ΠΏΡ€ΠΎΡƒΡ‡ΠΈΡ‚Π΅ Π΄Ρ€ΡƒΠ³ΠΈΡ‚Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ ΠΈΠΌΠ° Ρ‚Π°ΠΌ.

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π² Go Π² VictoriaMetrics. ΠΠ»Π΅ΠΊΡΠ°Π½Π΄ΡŠΡ€ Валялкин

Имам Π²ΡŠΠΏΡ€ΠΎΡ Π·Π° bitset. Много наподобява рСализацията Π½Π° C++ vector, ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€Π°Π½ bitset. Π’Π·Π΅Π»ΠΈ Π»ΠΈ стС рСализацията ΠΎΡ‚ Ρ‚Π°ΠΌ?

НС, Π½Π΅ ΠΎΡ‚Ρ‚Π°ΠΌ. ΠŸΡ€ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° Ρ‚ΠΎΠ·ΠΈ bitset сС Ρ€ΡŠΠΊΠΎΠ²ΠΎΠ΄Π΅Ρ… ΠΏΠΎ знанията Π·Π° структурата Π½Π° Ρ‚Π΅Π·ΠΈ ids timeseries, ΠΊΠΎΠΈΡ‚ΠΎ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ Π² VictoriaMetrics. Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π°Ρ‚Π° ΠΈΠΌ Π΅ Ρ‚Π°ΠΊΠ°Π²Π°, Ρ‡Π΅ Π³ΠΎΡ€Π½ΠΈΡ‚Π΅ 32 Π±ΠΈΡ‚Π° ΠΏΠΎ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ са постоянни. Π”ΠΎΠ»Π½ΠΈΡ‚Π΅ 32 Π±ΠΈΡ‚Π° ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° сС промСнят. ΠšΠΎΠ»ΠΊΠΎΡ‚ΠΎ ΠΏΠΎ-нисък Π΅ Π±ΠΈΡ‚ΡŠΡ‚, Ρ‚ΠΎΠ»ΠΊΠΎΠ²Π° ΠΏΠΎ-чСсто ΠΌΠΎΠΆΠ΅ Π΄Π° сС промСня. Π—Π°Ρ‚ΠΎΠ²Π° Ρ‚Π°Π·ΠΈ рСализация Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€Π°Π½Π° Ρ‚ΠΎΡ‡Π½ΠΎ Π·Π° Ρ‚Π°Π·ΠΈ структура ΠΎΡ‚ Π΄Π°Π½Π½ΠΈ. C++ рСализацията, Π΄ΠΎΠΊΠΎΠ»ΠΊΠΎΡ‚ΠΎ Π·Π½Π°ΠΌ, Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€Π°Π½Π° Π·Π° общия случай. Ако сС ΠΏΡ€Π°Π²ΠΈ оптимизация Π·Π° общия случай, Ρ‚ΠΎ Ρ‚ΠΎΠ²Π° ΠΎΠ·Π½Π°Ρ‡Π°Π²Π°, Ρ‡Π΅ тя няма Π΄Π° бъдС Π½Π°ΠΉ-ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»Π½Π°Ρ‚Π° Π·Π° конкрСтния случай.

ΠŸΡ€Π΅ΠΏΠΎΡ€ΡŠΡ‡Π²Π°ΠΌ Π²ΠΈ Π΄Π° ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅Ρ‚Π΅ ΠΈ Π΄ΠΎΠΊΠ»Π°Π΄Π° Π½Π° АлСксСй Миловид. Π’ΠΎΠΉ ΠΏΡ€Π΅Π΄ΠΈ ΠΎΠΊΠΎΠ»ΠΎ мСсСц Ρ€Π°Π·ΠΊΠ°Π·Π²Π°ΡˆΠ΅ Π·Π° ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π² ClickHouse ΠΏΠΎΠ΄ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΈ спСциализации. Π’ΠΎΠΉ Ρ‚ΠΎΡ‡Π½ΠΎ спомСнава, Ρ‡Π΅ Π² общия случай C++ рСализацията ΠΈΠ»ΠΈ някаква Π΄Ρ€ΡƒΠ³Π° рСализация са настроСни Π·Π° Π΄ΠΎΠ±Ρ€Π° Ρ€Π°Π±ΠΎΡ‚Π° Π² срСдното ΠΏΠΎ Π±ΠΎΠ»Π½ΠΈΡ†ΠΈΡ‚Π΅. Вя ΠΌΠΎΠΆΠ΅ Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ ΠΏΠΎ-Π·Π»Π΅ ΠΎΡ‚ спСциализираната рСализация Π·Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΈ знания, ΠΊΠ°ΠΊΠ²ΠΈΡ‚ΠΎ ΠΈΠΌΠ°ΠΌΠ΅ Π½ΠΈΠ΅, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π·Π½Π°Π΅ΠΌ, Ρ‡Π΅ Π³ΠΎΡ€Π½ΠΈΡ‚Π΅ 32 Π±ΠΈΡ‚Π° ΠΏΠΎ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ са постоянни.

Имам Π²Ρ‚ΠΎΡ€ΠΈ Π²ΡŠΠΏΡ€ΠΎΡ. Π’ ΠΊΠ°ΠΊΠ²ΠΎ Π΅ ΠΊΠΎΡ€Π΅Π½Π½ΠΎΡ‚ΠΎ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ InfluxDB?

ΠšΠΎΡ€Π΅Π½Π½ΠΈΡ‚Π΅ отличия са ΠΌΠ½ΠΎΠ³ΠΎ. Ако става Π²ΡŠΠΏΡ€ΠΎΡ Π·Π° производитСлност ΠΈ ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚, Ρ‚ΠΎ InfluxDB Π² тСстовСтС ΠΏΠΎΠΊΠ°Π·Π²Π° 10 ΠΏΡŠΡ‚ΠΈ ΠΏΠΎΠ²Π΅Ρ‡Π΅ ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚ Π·Π° high cardinality Π²Ρ€Π΅ΠΌΠ΅Π²ΠΈ Ρ€Π΅Π΄ΠΎΠ²Π΅, ΠΊΠΎΠ³Π°Ρ‚ΠΎ ΠΈΠΌΠ°Ρ‚Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΡ‚ тях, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΌΠΈΠ»ΠΈΠΎΠ½ΠΈ. НапримСр, VictoriaMetrics консумира 1 GB Π½Π° ΠΌΠΈΠ»ΠΈΠΎΠ½ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΈ Ρ€Π΅Π΄Π°, Π΄ΠΎΠΊΠ°Ρ‚ΠΎ InfluxDB консумира 10 Gb. И Ρ‚ΠΎΠ²Π° Π΅ голяма Ρ€Π°Π·Π»ΠΈΠΊΠ°.

Π’Ρ‚ΠΎΡ€ΠΎΡ‚ΠΎ ΠΊΠΎΡ€Π΅Π½Π½ΠΎ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ Π΅, Ρ‡Π΅ Π² InfluxDB ΠΈΠΌΠ° странни Π΅Π·ΠΈΡ†ΠΈ Π·Π° запитвания – Flux ΠΈ InfluxQL. Π’Π΅ Π½Π΅ са ΠΌΠ½ΠΎΠ³ΠΎ ΡƒΠ΄ΠΎΠ±Π½ΠΈ Π·Π° Ρ€Π°Π±ΠΎΡ‚Π° с Π²Ρ€Π΅ΠΌΠ΅Π²ΠΈ Ρ€Π΅Π΄ΠΎΠ²Π΅ Π² сравнСниС с PromQL, ΠΊΠΎΠΉΡ‚ΠΎ сС ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° Π² VictoriaMetrics. PromQL Π΅ Π΅Π·ΠΈΠΊΡŠΡ‚ Π·Π° запитвания ΠΎΡ‚ Prometheus.

И ΠΎΡ‰Π΅ Π΅Π΄Π½ΠΎ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ – Π² InfluxDB ΠΌΠΎΠ΄Π΅Π»ΡŠΡ‚ Π½Π° Π΄Π°Π½Π½ΠΈ Π΅ ΠΌΠ°Π»ΠΊΠΎ странСн, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ Π² всСки Ρ€Π΅Π΄ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° сС ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°Ρ‚ няколко поля с Ρ€Π°Π·Π»ΠΈΡ‡Π΅Π½ Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ Ρ‚Π°Π³ΠΎΠ²Π΅. Π’Π΅Π·ΠΈ Ρ€Π΅Π΄ΠΎΠ²Π΅ сС раздСлят Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†ΠΈ. Π’Π΅Π·ΠΈ Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈ услоТнСния затрудняват ΠΏΠΎ-ΠΊΡŠΡΠ½Π°Ρ‚Π° Ρ€Π°Π±ΠΎΡ‚Π° с Ρ‚Π°Π·ΠΈ Π±Π°Π·Π°. Вя Π΅ Ρ‚Ρ€ΡƒΠ΄Π½Π° Π·Π° ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Π½Π΅ ΠΈ Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅.

Π’ VictoriaMetrics всичко Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎ-просто. Π’Π°ΠΌ всСки Π²Ρ€Π΅ΠΌΠ΅Π²ΠΈ Ρ€Π΅Π΄ прСдставлява ΠΊΠ»ΡŽΡ‡-стойност. Бтойността Π΅ Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ Ρ‚ΠΎΡ‡ΠΊΠΈ – (timestamp, стойност), Π° ΠΊΠ»ΡŽΡ‡ΡŠΡ‚ Π΅ Π½Π°Π±ΠΎΡ€ label=value. Няма Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° fields ΠΈ measurements. Π’ΠΎΠ²Π° Π²ΠΈ позволява Π΄Π° ΠΈΠ·Π±ΠΈΡ€Π°Ρ‚Π΅ всякакви Π΄Π°Π½Π½ΠΈ ΠΈ слСд Ρ‚ΠΎΠ²Π° Π΄Π° Π³ΠΈ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€Π°Ρ‚Π΅, ΡΡŠΠ±ΠΈΡ€Π°Ρ‚Π΅, ΠΈΠ·Π²Π°ΠΆΠ΄Π°Ρ‚Π΅, ΡƒΠΌΠ½ΠΎΠΆΠ°Π²Π°Ρ‚Π΅, Π΄Π΅Π»ΠΈΡ‚Π΅, Π·Π° Ρ€Π°Π·Π»ΠΈΠΊΠ° ΠΎΡ‚ InfluxDB, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ изчислСнията ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Ρ€Π΅Π΄ΠΎΠ²Π΅ всС ΠΎΡ‰Π΅ Π½Π΅ са Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½ΠΈ, Π΄ΠΎΠΊΠΎΠ»ΠΊΠΎΡ‚ΠΎ Π·Π½Π°ΠΌ. Π”ΠΎΡ€ΠΈ ΠΈ Π΄Π° са Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½ΠΈ, Ρ‚Π΅ са слоТни ΠΈ изискват ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄.

Имам уточняващ Π²ΡŠΠΏΡ€ΠΎΡ. Π Π°Π·Π±Ρ€Π°Ρ… Π»ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»Π½ΠΎ, Ρ‡Π΅ имашС някакъв ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, Π·Π° ΠΊΠΎΠΉΡ‚ΠΎ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ…Ρ‚Π΅, Ρ‡Π΅ Ρ‚ΠΎΠ·ΠΈ ΠΈΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€Π°Π½ индСкс Π½Π΅ сС ΠΏΠΎΠ±ΠΈΡ€Π° Π² ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π°, Π·Π°Ρ‚ΠΎΠ²Π° Ρ‚Π°ΠΌ ΠΈΠΌΠ° ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΠΎΠ½ΠΈΡ€Π°Π½Π΅?

Π’ Π½Π°Ρ‡Π°Π»ΠΎΡ‚ΠΎ ΠΏΠΎΠΊΠ°Π·Π°Ρ… Π½Π°ΠΈΠ²Π½Π° рСализация Π½Π° ΠΈΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€Π°Π½ индСкс Π½Π° стандартна Go map. Π’Π°Π·ΠΈ рСализация Π½Π΅ Π΅ подходяща Π·Π° Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ инвСртираният индСкс Π½Π΅ сС Π·Π°ΠΏΠ°Π·Π²Π° Π½Π° диска, Π° Π±Π°Π·Π°Ρ‚Π° Π΄Π°Π½Π½ΠΈ трябва Π΄Π° Π·Π°ΠΏΠ°Π·Π²Π° Π΄Π°Π½Π½ΠΈΡ‚Π΅ Π½Π° диска, Π·Π° Π΄Π° останат Π΄ΠΎΡΡ‚ΡŠΠΏΠ½ΠΈ ΠΏΡ€ΠΈ рСстарт. Π’ Ρ‚Π°Π·ΠΈ рСализация ΠΏΡ€ΠΈ рСстарт Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ инвСртираният индСкс Ρ‰Π΅ ΠΈΠ·Ρ‡Π΅Π·Π½Π΅. И Ρ‰Π΅ Π·Π°Π³ΡƒΠ±ΠΈΡ‚Π΅ Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ всички Π΄Π°Π½Π½ΠΈ, Π·Π°Ρ‰ΠΎΡ‚ΠΎ няма Π΄Π° ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π³ΠΈ Π½Π°ΠΌΠ΅Ρ€ΠΈΡ‚Π΅.

Π—Π΄Ρ€Π°Π²Π΅ΠΉΡ‚Π΅! Благодаря Π·Π° Π΄ΠΎΠΊΠ»Π°Π΄Π°! Аз съм ПавСл ΠΎΡ‚ компания Wildberries. Имам няколко Π²ΡŠΠΏΡ€ΠΎΡΠ° към вас. ΠŸΡŠΡ€Π²ΠΈΡΡ‚ Π²ΡŠΠΏΡ€ΠΎΡ. Какво мислитС, Π°ΠΊΠΎ бяхтС ΠΈΠ·Π±Ρ€Π°Π»ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ° Π½Π° ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΠΎΠ½ΠΈΡ€Π°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈΡ‚Π΅ ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅, Π±ΠΈ Π»ΠΈ ΠΌΠΎΠ³Π»ΠΎ Π΄Π° станС Ρ‚Π°ΠΊΠ°, Ρ‡Π΅ Π΄Π° ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ прСсСчСни Π΄Π°Π½Π½ΠΈ ΠΏΡ€ΠΈ Ρ‚ΡŠΡ€ΡΠ΅Π½Π΅, основавайки сС само Π½Π° Ρ‚ΠΎΠ²Π°, Ρ‡Π΅ Π² Π΅Π΄Π½Π° партиция сС Π½Π°ΠΌΠΈΡ€Π°Ρ‚ Π΄Π°Π½Π½ΠΈ Π·Π° Π΅Π΄ΠΈΠ½ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ ΠΎΡ‚ Π²Ρ€Π΅ΠΌΠ΅, Ρ‚.Π΅. Π·Π° Π΅Π΄ΠΈΠ½ Π²Ρ€Π΅ΠΌΠ΅Π²ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π» ΠΈ няма Π»ΠΈ Π΄Π° Π²ΠΈ сС Π½Π°Π»ΠΎΠΆΠΈ Π΄Π° сС притСсняватС, Ρ‡Π΅ ΠΏΠ°Ρ€Ρ‡Π΅Ρ‚Π°Ρ‚Π° са Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΎ Ρ€Π°Π·Π±ΡŠΡ€ΠΊΠ°Π½ΠΈ? Вторият Π²ΡŠΠΏΡ€ΠΎΡ β€” Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Ρ‚Π΅ ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΡŠΠΌ с bitset ΠΈ всичко останало, ΠΏΡ€ΠΎΠ±Π²Π°Π»ΠΈ Π»ΠΈ стС Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ инструкции Π½Π° процСсора? МоТС Π±ΠΈ стС ΠΎΠΏΠΈΡ‚Π²Π°Π»ΠΈ Ρ‚Π°ΠΊΠΈΠ²Π° ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ?

На втория Π²Π΅Π΄Π½Π°Π³Π° Ρ‰Π΅ отговоря. ΠžΡ‰Π΅ Π½Π΅ смС стигнали Π΄ΠΎ Ρ‚ΠΎΠ²Π°. Но Π°ΠΊΠΎ Π΅ Π½ΡƒΠΆΠ½ΠΎ, Ρ‰Π΅ стигнСм. А ΠΏΡŠΡ€Π²ΠΈΡΡ‚, какъв бСшС Π²ΡŠΠΏΡ€ΠΎΡΡŠΡ‚?

ΠžΠ±ΡΡŠΠΆΠ΄Π°Ρ…Ρ‚Π΅ Π΄Π²Π° сцСнария. И ΠΊΠ°Π·Π°Ρ…Ρ‚Π΅, Ρ‡Π΅ стС ΠΈΠ·Π±Ρ€Π°Π»ΠΈ втория с ΠΏΠΎ-слоТна имплСмСнтация. И Π½Π΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Π΅Ρ‚ΠΎΡ…Ρ‚Π΅ ΠΏΡŠΡ€Π²ΠΈΡ, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ Π΄Π°Π½Π½ΠΈΡ‚Π΅ са ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΠΎΠ½ΠΈΡ€Π°Π½ΠΈ ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅.

Π”Π°. Π’ ΠΏΡŠΡ€Π²ΠΈΡ случай общият ΠΎΠ±Π΅ΠΌ Π½Π° индСкса Π±ΠΈ Π±ΠΈΠ» ΠΏΠΎ-голям, Π·Π°Ρ‰ΠΎΡ‚ΠΎ Π² всяка партиция трябва Π΄Π° ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°ΠΌΠ΅ Π΄ΡƒΠ±Π»ΠΈΡ€Π°Π½ΠΈ Π΄Π°Π½Π½ΠΈ Π·Π° Ρ‚Π΅Π·ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π²ΠΈ Ρ€Π΅Π΄ΠΎΠ²Π΅, ΠΊΠΎΠΈΡ‚ΠΎ ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Π²Π°Ρ‚ ΠΏΡ€Π΅Π· всички Ρ‚Π΅Π·ΠΈ ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΠΈ. А Π°ΠΊΠΎ Π²Π°ΡˆΠΈΡΡ‚ churn rate Π·Π° Π²Ρ€Π΅ΠΌΠ΅Π²ΠΈΡ‚Π΅ Ρ€Π΅Π΄ΠΎΠ²Π΅ Π΅ малък, Ρ‚.Π΅. постоянно сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ Π΅Π΄Π½ΠΈ ΠΈ ΡΡŠΡ‰ΠΈ Ρ€Π΅Π΄ΠΎΠ²Π΅, Ρ‚ΠΎ Π² ΠΏΡŠΡ€Π²ΠΈΡ случай Π±ΠΈΡ…ΠΌΠ΅ Π·Π°Π³ΡƒΠ±ΠΈΠ»ΠΈ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ ΠΏΠΎΠ²Π΅Ρ‡Π΅ дисково пространство Π² сравнСниС с втория случай.

А Ρ‚Π°ΠΊΠ° – Π΄Π°, ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΠΎΠ½ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π΅ Π΄ΠΎΠ±ΡŠΡ€ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚. Π’ΠΎΠΉ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΎΡ‚ Prometheus. Но Π² Prometheus ΠΈΠΌΠ° ΠΈ Π΄Ρ€ΡƒΠ³ Π½Π΅Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΠΊ. ΠŸΡ€ΠΈ сливанСто Π½Π° Ρ‚Π΅Π·ΠΈ ΠΏΠ°Ρ€Ρ‡Π΅Ρ‚Π° Π΄Π°Π½Π½ΠΈ, Ρ‚ΠΎΠΉ трябва Π΄Π° Π΄ΡŠΡ€ΠΆΠΈ Π² ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° ΠΌΠ΅Ρ‚Π°-информация Π·Π° всички label ΠΈ timeseries. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»Π½ΠΎ, Π°ΠΊΠΎ ΠΏΠ°Ρ€Ρ‡Π΅Ρ‚Π°Ρ‚Π° Π΄Π°Π½Π½ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ слива, са Π³ΠΎΠ»Π΅ΠΌΠΈ, ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° нараства Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° сливанСто, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ VictoriaMetrics. ΠŸΡ€ΠΈ сливанСто VictoriaMetrics Π½Π΅ потрСбява Π½ΠΈΠΊΠ°ΠΊΠ²Π° ΠΏΠ°ΠΌΠ΅Ρ‚, Ρ‚Π°ΠΌ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ няколко ΠΊΠΈΠ»ΠΎΠ±Π°ΠΉΡ‚Π°, нСзависимо ΠΎΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΈΡ‚Π΅ Π½Π° ΠΎΠ±Π΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ‚Π΅ ΠΏΠ°Ρ€Ρ‡Π΅Ρ‚Π° Π΄Π°Π½Π½ΠΈ.

ΠΠ»Π³ΠΎΡ€ΠΈΡ‚ΡŠΠΌΡŠΡ‚, ΠΊΠΎΠΉΡ‚ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅, употрСбява ΠΏΠ°ΠΌΠ΅Ρ‚. Π’ нСя сС ΠΌΠ°Ρ€ΠΊΠΈΡ€Π°Ρ‚ timeseries-Π΅Ρ‚ΠΈΠΊΠ΅Ρ‚ΠΈΡ‚Π΅, Π·Π° ΠΊΠΎΠΈΡ‚ΠΎ ΠΈΠΌΠ° стойности. По Ρ‚ΠΎΠ·ΠΈ Π½Π°Ρ‡ΠΈΠ½ Π²ΠΈΠ΅ провСряватС Π·Π° Π½Π°Π»ΠΈΡ‡ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΏΠ°Ρ€Π½ΠΈ стойности Π² Π΅Π΄ΠΈΠ½ масив Π΄Π°Π½Π½ΠΈ ΠΈ Π² Π΄Ρ€ΡƒΠ³. И Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚Π΅ – ΠΈΠΌΠ° Π»ΠΈ intersect ΠΈΠ»ΠΈ Π½Π΅. ОбикновСно Π² Π±Π°Π·ΠΈΡ‚Π΅ Π΄Π°Π½Π½ΠΈ сС Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Ρ‚ курсори, ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°Ρ‚ Ρ‚Π΅ΠΊΡƒΡ‰ΠΎΡ‚ΠΎ си ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅ ΠΈ ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Π²Π°Ρ‚ ΠΏΡ€Π΅Π· сортиранитС Π΄Π°Π½Π½ΠΈ, Π·Π° Π΄Π° постигнСтС простота Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈΡ‚Π΅.

Π—Π°Ρ‰ΠΎ Π½Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ курсори Π·Π° прСсичанС Π½Π° Π΄Π°Π½Π½ΠΈ?

Π”Π°.

ΠŸΡ€ΠΈ нас Π² LevelDB ΠΈΠ»ΠΈ Π² mergeset сС ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°Ρ‚ Ρ‚ΠΎΡ‡Π½ΠΎ ΠΏΠΎΠ΄Ρ€Π΅Π΄Π΅Π½ΠΈ Ρ€Π΅Π΄ΠΎΠ²Π΅. МоТСм Π΄Π° ΠΏΡ€Π΅ΠΌΠΈΠ½Π΅ΠΌ с курсор ΠΈ Π΄Π° Π½Π°ΠΌΠ΅Ρ€ΠΈΠΌ прСсичанСто. А Π·Π°Ρ‰ΠΎ Π½Π΅ Π³ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅? Π—Π°Ρ‰ΠΎΡ‚ΠΎ – Ρ‚ΠΎΠ²Π° Π΅ Π±Π°Π²Π½ΠΎ. Π—Π°Ρ‰ΠΎΡ‚ΠΎ курсоритС ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚, Ρ‡Π΅ Π·Π° всСки Ρ€Π΅Π΄ трябва Π΄Π° сС ΠΈΠ·Π²ΠΈΠΊΠ° функция. Π˜Π·Π²ΠΈΠΊΠ²Π°Π½Π΅Ρ‚ΠΎ Π½Π° функция – ΠΎΡ‚Π½Π΅ΠΌΠ° 5 наносСкунди. И Π°ΠΊΠΎ ΠΈΠΌΠ°Ρ‚Π΅ 100 000 000 Ρ€Π΅Π΄Π°, Ρ‚ΠΎ сС ΠΎΠΊΠ°Π·Π²Π°, Ρ‡Π΅ ΠΈΠ·Ρ€Π°Π·Ρ…ΠΎΠ΄Π²Π°ΠΌΠ΅ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½ сСкунда само Π·Π° ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅Ρ‚ΠΎ Π½Π° функцията.

Π’Π°ΠΊΠΎΠ²Π° Π½Π΅Ρ‰ΠΎ ΠΈΠΌΠ°, Π΄Π°. И послСдният ΠΌΠΈ Π²ΡŠΠΏΡ€ΠΎΡ. Π’ΡŠΠΏΡ€ΠΎΡΡŠΡ‚ ΠΌΠΎΠΆΠ΅ Π±ΠΈ Π·Π²ΡƒΡ‡ΠΈ ΠΌΠ°Π»ΠΊΠΎ странно. Π—Π°Ρ‰ΠΎ Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° Π½Π° ΠΏΠΎΡΡ‚ΡŠΠΏΠ²Π°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈΡ‚Π΅ Π½Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° сС изчислят всички Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΈ Π°Π³Ρ€Π΅Π³Π°Ρ‚ΠΈ ΠΈ Π΄Π° сС запазят Π² нСобходимия Π²ΠΈΠ΄? Π—Π°Ρ‰ΠΎ Π΄Π° сС Π·Π°ΠΏΠ°Π·Π²Π°Ρ‚ ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΈ ΠΎΠ±Π΅ΠΌΠΈ Π² систСми ΠΊΠ°Ρ‚ΠΎ VictoriaMetrics, ClickHouse ΠΈ Ρ‚.Π½., Π·Π° Π΄Π° сС ΠΈΠ·Ρ€Π°Π·Ρ…ΠΎΠ΄Π²Π° слСд Ρ‚ΠΎΠ²Π° ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π·Π° тях?

Π©Π΅ Π΄Π°ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π·Π° Π΄Π° станС ΠΏΠΎ-Ρ€Π°Π·Π±ΠΈΡ€Π°Π΅ΠΌΠΎ. Π”Π° ΠΊΠ°ΠΆΠ΅ΠΌ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚ΠΈ малкият ΠΈΠ³Ρ€Π°Ρ‡ΠΊΠ° ΡΠΏΠΈΠ΄ΠΎΠΌΠ΅Ρ‚ΡŠΡ€? Π’ΠΎΠΉ записва разстояниСто, ΠΊΠΎΠ΅Ρ‚ΠΎ стС ΠΈΠ·ΠΌΠΈΠ½Π°Π»ΠΈ, постоянно добавяйки Π³ΠΎ Π² Π΅Π΄Π½ΠΎ число, Π° Π·Π° Π΄Ρ€ΡƒΠ³ΠΎ β€” Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ. И раздСля. И ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π° срСдната скорост. МоТС Π΄Π° сС ΠΏΡ€Π°Π²ΠΈ Π½Π΅Ρ‰ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ. Π”Π° ΡΡŠΠ±Π΅Ρ€Π΅ΠΌ Π½Π° лСтящо всички Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΈ Ρ„Π°ΠΊΡ‚ΠΈ.

Π”ΠΎΠ±Ρ€Π΅, Ρ€Π°Π·Π±Ρ€Π°Ρ… Π²ΡŠΠΏΡ€ΠΎΡΠ°. Π’Π°ΡˆΠΈΡΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΈΠΌΠ° място Π·Π° ΠΆΠΈΠ²ΠΎΡ‚. Ако Π·Π½Π°Π΅Ρ‚Π΅ ΠΊΠΎΠΈ Π°Π³Ρ€Π΅Π³Π°Ρ‚ΠΈ Π²ΠΈ трябват, Ρ‚ΠΎΠ²Π° Π΅ Π½Π°ΠΉ-Π΄ΠΎΠ±Ρ€ΠΎΡ‚ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅. Но ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡŠΡ‚ Π΅, Ρ‡Π΅ Ρ…ΠΎΡ€Π°Ρ‚Π° ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°Ρ‚ Ρ‚Π΅Π·ΠΈ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ, някакви Π΄Π°Π½Π½ΠΈ Π² ClickHouse ΠΈ Ρ‚Π΅ Π½Π΅ знаят ΠΎΡ‰Π΅ ΠΊΠ°ΠΊ Ρ‰Π΅ Π³ΠΈ Π°Π³Ρ€Π΅Π³ΠΈΡ€Π°Ρ‚, Ρ„ΠΈΠ»Ρ‚Ρ€ΠΈΡ€Π°Ρ‚ Π² Π±ΡŠΠ΄Π΅Ρ‰Π΅, Π·Π°Ρ‚ΠΎΠ²Π° сС Π½Π°Π»Π°Π³Π° Π΄Π° ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°Ρ‚ всички сурови Π΄Π°Π½Π½ΠΈ. Но Π°ΠΊΠΎ Π·Π½Π°Π΅Ρ‚Π΅, Ρ‡Π΅ трябва Π΄Π° изчислитС Π½Π΅Ρ‰ΠΎ срСдно, Π·Π°Ρ‰ΠΎ Π΄Π° Π½Π΅ Π³ΠΎ изчислитС, вмСсто Π΄Π° ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°Ρ‚Π΅ ΠΊΡƒΠΏΡ‡ΠΈΠ½ΠΈ сурови стойности? Но Ρ‚ΠΎΠ²Π° Π΅ само Π°ΠΊΠΎ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ стС сигурни ΠΊΠ°ΠΊΠ²ΠΎ искатС.

ΠœΠ΅ΠΆΠ΄Ρƒ Π΄Ρ€ΡƒΠ³ΠΎΡ‚ΠΎ, Π±Π°Π·ΠΈΡ‚Π΅ Π΄Π°Π½Π½ΠΈ Π·Π° ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π½Π° Π²Ρ€Π΅ΠΌΠ΅Π²ΠΈ сСрии ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Ρ‚ изчисляванС Π½Π° Π°Π³Ρ€Π΅Π³Π°Ρ‚ΠΈ. НапримСр, Prometheus ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° ΠΏΡ€Π°Π²ΠΈΠ»Π° Π·Π° записванС. ВоСст, Ρ‚ΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° сС Π½Π°ΠΏΡ€Π°Π²ΠΈ, Π°ΠΊΠΎ Π·Π½Π°Π΅Ρ‚Π΅ ΠΊΠ°ΠΊΠ²ΠΈ Π°Π³Ρ€Π΅Π³Π°Ρ‚ΠΈ Ρ‰Π΅ Π²ΠΈ потрябват. Π’ VictoriaMetrics Ρ‚ΠΎΠ²Π° всС ΠΎΡ‰Π΅ Π½Π΅ Π΅ Π½Π°Π»ΠΈΡ‡Π½ΠΎ, Π½ΠΎ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ ΠΏΡ€Π΅Π΄ΠΈ нСя сС поставя Prometheus, ΠΏΡ€ΠΈ ΠΊΠΎΠΉΡ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° сС Π½Π°ΠΏΡ€Π°Π²ΠΈ Π² ΠΏΡ€Π°Π²ΠΈΠ»Π°Ρ‚Π° Π·Π° записванС.

НапримСр, Π½Π° ΠΏΡ€Π΅Π΄ΠΈΡˆΠ½Π°Ρ‚Π° ΠΌΠΈ Ρ€Π°Π±ΠΎΡ‚Π° бСшС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° сС изчислява броят Π½Π° ΡΡŠΠ±ΠΈΡ‚ΠΈΡΡ‚Π° Π² ΠΏΠ»ΡŠΠ·Π³Π°Ρ‰ ΠΏΡ€ΠΎΠ·ΠΎΡ€Π΅Ρ† Π·Π° послСдния час. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡŠΡ‚ Π΅, Ρ‡Π΅ сС Π½Π°Π»ΠΎΠΆΠΈ Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΠΌ пСрсонализирана рСализация Π½Π° Go, Ρ‚.Π΅. услуга Π·Π° Π±Ρ€ΠΎΠ΅Π½Π΅ Π½Π° Ρ‚Π°Π·ΠΈ информация. Π’Π°Π·ΠΈ услуга Π² ΠΊΡ€Π°ΠΉΠ½Π° смСтка стана Π½Π΅Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»Π½Π°, Π·Π°Ρ‰ΠΎΡ‚ΠΎ Π΅ слоТно изчисляванСто. РСализацията ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС проста, Π°ΠΊΠΎ трябва Π΄Π° изчислитС някакви Π°Π³Ρ€Π΅Π³Π°Ρ‚ΠΈ Π·Π° фиксирани ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»ΠΈ ΠΎΡ‚ Π²Ρ€Π΅ΠΌΠ΅. Но Π°ΠΊΠΎ искатС Π΄Π° Π±Ρ€ΠΎΠΈΡ‚Π΅ ΡΡŠΠ±ΠΈΡ‚ΠΈΡ Π² ΠΏΠ»ΡŠΠ·Π³Π°Ρ‰ ΠΏΡ€ΠΎΠ·ΠΎΡ€Π΅Ρ†, Ρ‚ΠΎ Π½Π΅ Π΅ Ρ‚ΠΎΠ»ΠΊΠΎΠ²Π° просто, ΠΊΠΎΠ»ΠΊΠΎΡ‚ΠΎ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π°. Мисля, Ρ‡Π΅ Ρ‚ΠΎΠ²Π° всС ΠΎΡ‰Π΅ Π½Π΅ Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½ΠΎ Π² ClickHouse ΠΈΠ»ΠΈ Π² Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ Π·Π° Π²Ρ€Π΅ΠΌΠ΅Π²ΠΈ сСрии, Π·Π°Ρ‰ΠΎΡ‚ΠΎ Π΅ слоТно Π·Π° рСализация.

И ΠΎΡ‰Π΅ Π΅Π΄ΠΈΠ½ Π²ΡŠΠΏΡ€ΠΎΡ. Π‘Π΅Π³Π° Π³ΠΎΠ²ΠΎΡ€ΠΈΡ…ΠΌΠ΅ Π·Π° срСдночислСнС, ΠΈ си спомних, Ρ‡Π΅ някога имашС Π½Π΅Ρ‰ΠΎ ΠΊΠ°Ρ‚ΠΎ Graphite с Π±Π΅ΠΊΠ΅Π½Π΄ Carbon. И Ρ‚ΠΎΠΉ моТСшС Π΄Π° Ρ€Π΅Π΄ΡƒΡ†ΠΈΡ€Π° старитС Π΄Π°Π½Π½ΠΈ, Ρ‚.Π΅. Π΄Π° оставя Π΅Π΄Π½Π° Ρ‚ΠΎΡ‡ΠΊΠ° Π½Π° ΠΌΠΈΠ½ΡƒΡ‚Π°, Π΅Π΄Π½Π° Ρ‚ΠΎΡ‡ΠΊΠ° Π½Π° час ΠΈ Ρ‚.Π½. По ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ, Ρ‚ΠΎΠ²Π° Π΅ Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½ΠΎ ΡƒΠ΄ΠΎΠ±Π½ΠΎ, Π°ΠΊΠΎ Π½ΠΈ трябват сурови Π΄Π°Π½Π½ΠΈ, условно ΠΊΠ°Π·Π°Π½ΠΎ, Π·Π° Π΅Π΄ΠΈΠ½ мСсСц, Π° всичко останало ΠΌΠΎΠΆΠ΅ Π΄Π° сС Ρ€Π΅Π΄ΡƒΡ†ΠΈΡ€Π°. Но Prometheus ΠΈ VictoriaMetrics Π½Π΅ ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Ρ‚ Ρ‚Π°Π·ΠΈ функция. ΠŸΠ»Π°Π½ΠΈΡ€Π° Π»ΠΈ сС ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ°? Ако Π½Π΅, Π·Π°Ρ‰ΠΎ?

Благодаря Π·Π° Π²ΡŠΠΏΡ€ΠΎΡΠ°. ΠΠ°ΡˆΠΈΡ‚Π΅ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈ Π³ΠΎ Π·Π°Π΄Π°Π²Π°Ρ‚ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ΠΈΡ‡Π½ΠΎ. ΠŸΠΈΡ‚Π°Ρ‚, ΠΊΠΎΠ³Π° Ρ‰Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° downsampling. Π’ΡƒΠΊ ΠΈΠΌΠ° няколко ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°. ΠŸΡŠΡ€Π²ΠΎ, всСки ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π» Ρ€Π°Π·Π±ΠΈΡ€Π° ΠΏΠΎΠ΄ downsampling Π½Π΅Ρ‰ΠΎ своС: някои искат Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»Π½Π° Ρ‚ΠΎΡ‡ΠΊΠ° Π² Π·Π°Π΄Π°Π΄Π΅Π½ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π», Π΄Ρ€ΡƒΠ³ΠΈ искат максимални, ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½ΠΈ ΠΈΠ»ΠΈ срСдни стойности. Ако Π΄Π°Π½Π½ΠΈΡ‚Π΅ Π² Π±Π°Π·Π°Ρ‚Π° Π²ΠΈ ΠΏΠΎΡΡ‚ΡŠΠΏΠ²Π°Ρ‚ ΠΎΡ‚ ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ систСми, Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° Π³ΠΈ ΠΎΠ±Π΅Π΄ΠΈΠ½ΠΈΡ‚Π΅ ΠΏΠΎΠ΄ Π΅Π΄ΠΈΠ½ стандарт. МоТС Π΄Π° сС ΠΎΠΊΠ°ΠΆΠ΅, Ρ‡Π΅ Π·Π° всяка систСма Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Ρ€Π°Π·Π»ΠΈΡ‡Π΅Π½ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Π·Π° downsampling. И Ρ‚ΠΎΠ²Π° Π΅ слоТно Π·Π° рСализация.

Π’Ρ‚ΠΎΡ€ΠΎΡ‚ΠΎ Π΅, Ρ‡Π΅ VictoriaMetrics, ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ Π½Π° ClickHouse, Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€Π°Π½Π° Π·Π° Ρ€Π°Π±ΠΎΡ‚Π° с голямо количСство Π½Π΅ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π΅Π½ΠΈ Π΄Π°Π½Π½ΠΈ, Π·Π°Ρ‚ΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΈ ΠΌΠΈΠ»ΠΈΠ°Ρ€Π΄ Ρ€Π΅Π΄Π° Π·Π° ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ ΠΎΡ‚ сСкунда, Π°ΠΊΠΎ ΠΈΠΌΠ°Ρ‚Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ядра Π² систСмата си. Π‘ΠΊΠ°Π½ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π²Ρ€Π΅ΠΌΠ΅Π²ΠΈ Ρ‚ΠΎΡ‡ΠΊΠΈ Π² VictoriaMetrics Π΅ 50 000 000 Ρ‚ΠΎΡ‡ΠΊΠΈ Π² сСкунда Π½Π° Π΅Π΄Π½ΠΎ ядро. И Ρ‚Π°Π·ΠΈ производитСлност сС ΠΌΠ°Ρ‰Π°Π±ΠΈΡ€Π° спрямо Π½Π°Π»ΠΈΡ‡Π½ΠΈΡ‚Π΅ ядра. Π’.Π΅. Π°ΠΊΠΎ ΠΈΠΌΠ°Ρ‚Π΅ 20 ядра, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‰Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° сканиратС ΠΌΠΈΠ»ΠΈΠ°Ρ€Π΄ Ρ‚ΠΎΡ‡ΠΊΠΈ Π·Π° сСкунда. И Ρ‚ΠΎΠ²Π° свойство Π½Π° VictoriaMetrics ΠΈ ClickHouse намалява Π½ΡƒΠΆΠ΄Π°Ρ‚Π° ΠΎΡ‚ downsampling.

ΠžΡ‰Π΅ Π΅Π΄Π½ΠΎ свойство Π΅, Ρ‡Π΅ VictoriaMetrics Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎ компрСсира Ρ‚Π΅Π·ΠΈ Π΄Π°Π½Π½ΠΈ. ΠšΠΎΠΌΠΏΡ€Π΅ΡΠΈΡΡ‚Π° Π² ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΈΠ²Π½ΠΈ условия Π΅ срСдно ΠΎΡ‚ 0,4 Π΄ΠΎ 0,8 Π±Π°ΠΉΡ‚Π° Π½Π° Ρ‚ΠΎΡ‡ΠΊΠ°. Всяка Ρ‚ΠΎΡ‡ΠΊΠ° Π΅ Π²Ρ€Π΅ΠΌΠ΅Π²ΠΈ ΠΌΠ°Ρ€ΠΊΠ΅Ρ€ + стойност. И тя сС компрСсира ΠΏΠΎΠ΄ Π΅Π΄ΠΈΠ½ Π±Π°ΠΉΡ‚ Π² срСдно.

Π‘Π΅Ρ€Π³Π΅ΠΉ. Имам Π²ΡŠΠΏΡ€ΠΎΡ. Какъв Π΅ минималният Π²Ρ€Π΅ΠΌΠ΅Π²ΠΈ ΠΊΠ²Π°Π½Ρ‚ Π·Π° запис?

Π•Π΄Π½Π° милисСкунда. НапослСдък ΠΈΠΌΠ°Ρ…ΠΌΠ΅ Ρ€Π°Π·Π³ΠΎΠ²ΠΎΡ€ с Π΄Ρ€ΡƒΠ³ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈ Π½Π° Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ Π·Π° Π²Ρ€Π΅ΠΌΠ΅Π²ΠΈ Ρ€Π΅Π΄ΠΎΠ²Π΅. ВСхният ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π΅Π½ ΠΊΠ²Π°Π½Ρ‚ Π½Π° Π²Ρ€Π΅ΠΌΠ΅ Π΅ Π΅Π΄Π½Π° сСкунда. Π’ Graphite, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΡΡŠΡ‰ΠΎ Π΅ Π΅Π΄Π½Π° сСкунда. Π’ OpenTSDB ΠΏΠ°ΠΊ Π΅ Π΅Π΄Π½Π° сСкунда. Π’ InfluxDB - наносСкундна точност. Π’ VictoriaMetrics - Π΅Π΄Π½Π° милисСкунда, Π·Π°Ρ‰ΠΎΡ‚ΠΎ Π² Prometheus ΡΡŠΡ‰ΠΎ Π΅ Π΅Π΄Π½Π° милисСкунда. И VictoriaMetrics бСшС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π΅Π½Π° ΠΏΡŠΡ€Π²ΠΎΠ½Π°Ρ‡Π°Π»Π½ΠΎ ΠΊΠ°Ρ‚ΠΎ Π΄Π°Π»Π΅Ρ‡Π½ΠΎ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Π·Π° Prometheus. Но сСга ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π° Π΄Π°Π½Π½ΠΈ ΠΈ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈ систСми.

Π§ΠΎΠ²Π΅ΠΊΡŠΡ‚, с ΠΊΠΎΠ³ΠΎΡ‚ΠΎ разговарях, ΠΊΠ°Π·Π°, Ρ‡Π΅ ΠΈΠΌΠ°Ρ‚ сСкундна точност - Ρ‚ΠΎΠ²Π° ΠΈΠΌ Π΅ Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½ΠΎ, Π·Π°Ρ‰ΠΎΡ‚ΠΎ Ρ‚ΠΎ зависи ΠΎΡ‚ Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ сС ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°Ρ‚ Π² Π±Π°Π·Π°Ρ‚Π° Π·Π° Π²Ρ€Π΅ΠΌΠ΅Π²ΠΈ Ρ€Π΅Π΄ΠΎΠ²Π΅. Ако Ρ‚ΠΎΠ²Π° са DevOps Π΄Π°Π½Π½ΠΈ ΠΈΠ»ΠΈ Π΄Π°Π½Π½ΠΈ ΠΎΡ‚ инфраструктура, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ Π³ΠΈ ΡΡŠΠ±ΠΈΡ€Π°Ρ‚Π΅ Π½Π° ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»ΠΈ ΠΎΡ‚ 30 сСкунди Π΄ΠΎ ΠΌΠΈΠ½ΡƒΡ‚Π°, Ρ‚ΠΎ сСкундната точност Π΅ Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½Π°, ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ Π½Π΅ Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ. А Π°ΠΊΠΎ ΡΡŠΠ±ΠΈΡ€Π°Ρ‚Π΅ Π΄Π°Π½Π½ΠΈ ΠΎΡ‚ систСми Π·Π° висока чСстота Π½Π° Ρ‚ΡŠΡ€Π³ΠΎΠ²ΠΈΡ, Ρ‚ΠΎΠ³Π°Π²Π° Π΅ Π½ΡƒΠΆΠ½Π° наносСкундна точност.

ΠœΠΈΠ»ΠΈΡΠ΅ΠΊΡƒΠ½Π΄Π½Π°Ρ‚Π° точност Π½Π° VictoriaMetrics Π΅ подходяща ΠΊΠ°ΠΊΡ‚ΠΎ Π·Π° DevOps случаи, Ρ‚Π°ΠΊΠ° ΠΈ Π·Π° ΠΏΠΎΠ²Π΅Ρ‡Π΅Ρ‚ΠΎ случаи, ΠΊΠΎΠΈΡ‚ΠΎ спомСнах Π² Π½Π°Ρ‡Π°Π»ΠΎΡ‚ΠΎ Π½Π° Π΄ΠΎΠΊΠ»Π°Π΄Π°. ЕдинствСното, Π·Π° ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° Π½Π΅ Π΅ подходяща, Π΅ височСстотна Ρ‚ΡŠΡ€Π³ΠΎΠ²ΠΈΡ.

Благодаря! И ΠΎΡ‰Π΅ Π΅Π΄ΠΈΠ½ Π²ΡŠΠΏΡ€ΠΎΡ. Каква Π΅ ΡΡŠΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚Ρ‚Π° с PromQL?

Пълна ΠΎΠ±Ρ€Π°Ρ‚Π½Π° ΡΡŠΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚. VictoriaMetrics напълно ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° PromQL. ОсвСн Ρ‚ΠΎΠ²Π° добавя Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½Π° Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½Π° функционалност Π½Π° PromQL, Π½Π°Ρ€Π΅Ρ‡Π΅Π½Π° MetricsQL. По ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ Π½Π° Ρ‚Π°Π·ΠΈ Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½Π° функционалност ΠΈΠΌΠ° Π΄ΠΎΠΊΠ»Π°Π΄ Π² YouTube. Π Π°Π·ΠΊΠ°Π·Π²Π°Ρ… Π½Π° Monitoring Meetup ΠΏΡ€Π΅Π· ΠΏΡ€ΠΎΠ»Π΅Ρ‚Ρ‚Π° Π² Π‘Π°Π½ΠΊΡ‚ ΠŸΠ΅Ρ‚Π΅Ρ€Π±ΡƒΡ€Π³.

Telegram ΠΊΠ°Π½Π°Π» VictoriaMetrics.

Π‘Π°ΠΌΠΎ рСгистрирани ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° участват Π² Π°Π½ΠΊΠ΅Ρ‚Π°Ρ‚Π°. Π’Π»Π΅Π·Ρ‚Π΅, моля.

Какво Π²ΠΈ спира Π΄Π° ΠΏΡ€Π΅ΠΌΠΈΠ½Π΅Ρ‚Π΅ Π½Π° VictoriaMetrics ΠΊΠ°Ρ‚ΠΎ Π΄ΡŠΠ»Π³ΠΎΡΡ€ΠΎΡ‡Π½ΠΎ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Π·Π° Prometheus? (ΠŸΠΈΡˆΠ΅Ρ‚Π΅ Π² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΡ‚Π΅, Ρ‰Π΅ добавя Π² Π°Π½ΠΊΠ΅Ρ‚Π°Ρ‚Π°))

  • 71,4%НС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌ Prometheus5

  • 28,6%НС Π·Π½Π°Π΅Ρ… Π·Π° VictoriaMetrics2

Гласуваха 7 ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈ. Π—Π°Π΄Ρ€ΡŠΠΆΡ…Π° 12 ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈ.

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster