ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π² 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. ΠΠ»Π΅ΠΊΡΠ°Π½Π΄ΡŠΡ€ Валялкин

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

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

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

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

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

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

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

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

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

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

Π—Π°Ρ‰ΠΎΡ‚ΠΎ ΠΏΡ€ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π²ΠΈΡ‚Π΅ Ρ€Π΅Π΄ΠΈΡ†ΠΈ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ ΠΈΠΌΠ° голямо количСство информация, която Π΅ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ Π΄Π° сС ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π° ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π° Π² ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈ Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ. Π—Π°Ρ‚ΠΎΠ²Π° сС появиха спСциализирани Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ Π·Π° Π²Ρ€Π΅ΠΌΠ΅Π²ΠΈ Ρ€Π΅Π΄ΠΈΡ†ΠΈ. Π’Π΅Π·ΠΈ Π±Π°Π·ΠΈ Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎ ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°Ρ‚ Ρ‚ΠΎΡ‡ΠΊΠΈ (ΠΌΠ°Ρ€ΠΊΠ΅Ρ€, стойност) с ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ ΠΊΠ»ΡŽΡ‡. Π’Π΅ прСдоставят 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 ΠΈ value β€” Ρ‚ΠΎΠ²Π° са Π½ΠΈΠ·ΠΎΠ²Π΅. А стойноститС - Ρ‚ΠΎΠ²Π° Π΅ Π½Π°Π±ΠΎΡ€ 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. Π’ΠΎΠ²Π° Π΅ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ Ρ€Π΅Ρ‡Π½ΠΈΠΊ (ΠΊΠ°Ρ€Ρ‚Π°), ΠΊΠΎΠΉΡ‚ΠΎ ΡΠ²ΡŠΡ€Π·Π²Π° Π½ΠΈΠ· с 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. Π‘Π΅Π³Π° Π½Π° RocksDB Π²ΡŠΡ‚Ρ€Π΅ във Facebook работят ΠΏΠΎΡ‡Ρ‚ΠΈ всички Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½ΠΈ Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ, Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ Ρ‚Π΅ ΠΏΡ€Π΅Ρ…Π²ΡŠΡ€Π»ΠΈΡ…Π° MySQL Π½Π° RocksDB. Π’Π΅ Π³ΠΎ Π½Π°Ρ€Π΅ΠΊΠΎΡ…Π° MyRocks.

ΠžΠ±Ρ€Π°Ρ‚Π½ΠΈΡΡ‚ индСкс ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° LevelDB. Как Π΄Π° Π³ΠΎ Π½Π°ΠΏΡ€Π°Π²ΠΈΠΌ? Π—Π°ΠΏΠ°Π·Π²Π°ΠΌΠ΅ ΠΊΠ°Ρ‚ΠΎ ΠΊΠ»ΡŽΡ‡ label=value. А ΠΊΠ°Ρ‚ΠΎ стойност – ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Π½Π° Π²Ρ€Π΅ΠΌΠ΅Π²ΠΈ Ρ€Π΅Π΄, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ ΠΏΡ€ΠΈΡΡŠΡΡ‚Π²Π° Π΄Π²ΠΎΠΉΠΊΠ°Ρ‚Π° label=value.

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

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

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

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

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

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

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

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

Вторият Π½Π΅Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΠΊ Π΅, Ρ‡Π΅ 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 Π² production ΠΏΡ€ΠΈ рСализацията Π½Π° ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ индСкс.

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

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

Π’Ρ‚ΠΎΡ€Π°Ρ‚Π° ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π° Π΅ голямото количСство Π²Ρ€Π΅ΠΌΠ΅Π²ΠΈ Ρ€Π΅Π΄ΠΎΠ²Π΅. Π’ Π½Π°Ρ‡Π°Π»ΠΎΡ‚ΠΎ, ΠΊΠΎΠ³Π°Ρ‚ΠΎ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ΡŠΡ‚ Π½Π°Π±ΠΈΡ€Π°ΡˆΠ΅ популярност, количСството Π²Ρ€Π΅ΠΌΠ΅Π²ΠΈ Ρ€Π΅Π΄ΠΎΠ²Π΅ бСшС ΠΌΠ°Π»ΠΊΠΎ. НапримСр, Π·Π° всСки ΠΊΠΎΠΌΠΏΡŽΡ‚ΡŠΡ€ трябва Π΄Π° сС слСдят натоварванията Π½Π° процСсора, ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π°, ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π° ΠΈ диска. 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-Π° Π² Π΅Ρ‚ΠΈΠΊΠ΅Ρ‚Π°.

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

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

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

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

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

ΠŸΡ€ΠΈ ΠΈΠ·Π²Π»ΠΈΡ‡Π°Π½Π΅Ρ‚ΠΎ ΠΎΡ‚ Ρ‚Π΅Π·ΠΈ ΠΈΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€Π°Π½ΠΈ индСкси Π½Π°ΠΌΠΈΡ€Π°ΠΌΠ΅ Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ ΠΈΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€Π°Π½ΠΈ индСкси, ΠΊΠΎΠΈΡ‚ΠΎ ΠΏΠΎΠΏΠ°Π΄Π°Ρ‚ Π² зададСния ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π». Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»Π½ΠΎ, ΠΈΠ·Π±ΠΈΡ€Π°ΠΌΠ΅ ΠΎΡ‚ тях id Π½Π° Π²Ρ€Π΅ΠΌΠ΅Π²ΠΈΡ‚Π΅ Ρ€Π΅Π΄ΠΎΠ²Π΅.

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

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

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

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

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

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

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

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

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

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

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

ΠžΡ‰Π΅ Π΅Π΄ΠΈΠ½ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Π·Π° ускоряванС Π½Π° Ρ‚ΡŠΡ€ΡΠ΅Π½Π΅Ρ‚ΠΎ Π² инвСртирания индСкс Π΅ ΡˆΠ°Ρ€Π΄ΠΈΡ€ΠΎΠ²Π°Π½Π΅Ρ‚ΠΎ. БъздаванС Π½Π° няколко ΠΈΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€Π°Π½ΠΈ индСкса вмСсто Π΅Π΄ΠΈΠ½ ΠΈ ΡˆΠ°Ρ€Π΄ΠΈΡ€Π²Π°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈΡ‚Π΅ ΠΌΠ΅ΠΆΠ΄Ρƒ тях ΠΏΠΎ ΠΊΠ»ΡŽΡ‡. Π’ΠΎΠ²Π° Π΅ Π½Π°Π±ΠΎΡ€ ΠΊΠ»ΡŽΡ‡=стойност ΠΎΡ‚ Π΄Π²ΠΎΠΉΠΊΠΈ. Π’.Π΅. ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°ΠΌΠ΅ няколко нСзависими ΠΈΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€Π°Π½ΠΈ индСкса, ΠΊΠΎΠΈΡ‚ΠΎ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π·Π°ΠΏΠΈΡ‚Π²Π°ΠΌΠ΅ ΠΏΠ°Ρ€Π°Π»Π΅Π»Π½ΠΎ Π½Π° няколко процСсора. ΠŸΡ€Π΅Π΄ΠΈΡˆΠ½ΠΈΡ‚Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ позволяваха Ρ€Π°Π±ΠΎΡ‚Π° само Π² СдноядрСн Ρ€Π΅ΠΆΠΈΠΌ, Ρ‚.Π΅. сканиранС Π½Π° Π΄Π°Π½Π½ΠΈΡ‚Π΅ само Π½Π° Π΅Π΄Π½ΠΎ ядро. Π’ΠΎΠ²Π° Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ позволява сканиранС Π½Π° Π΄Π°Π½Π½ΠΈΡ‚Π΅ Π²Π΅Π΄Π½Π°Π³Π° Π½Π° няколко ядра, ΠΊΠ°ΠΊΡ‚ΠΎ 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 Π·Π° Ρ…Π΅ΡˆΠΈΡ€Π°Π½Π΅. Π’ΠΎΠ·ΠΈ Π½Π΅Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΠΊ Π½Π΅ Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π΅Π½. И Π·Π° нас Ρ‚ΠΎΠΉ ΡΡŠΡ‰ΠΎ Π½Π΅ бСшС особСно ясСн, Π·Π°Ρ‚ΠΎΠ²Π° Π² Π½Π°Ρ‡Π°Π»ΠΎΡ‚ΠΎ рСализацията Π½Π° intersection Π² VictoriaMetrics бСшС Ρ‡Ρ€Π΅Π· map. Но слСд Ρ‚ΠΎΠ²Π° ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ ΠΏΠΎΠΊΠ°Π·Π°, Ρ‡Π΅ основното процСсорно Π²Ρ€Π΅ΠΌΠ΅ сС ΠΈΠ·Ρ€Π°Π·Ρ…ΠΎΠ΄Π²Π° Π·Π° запис Π² map ΠΈ Π·Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° Π½Π°Π»ΠΈΡ‡ΠΈΠ΅Ρ‚ΠΎ Π½Π° стойност Π² Ρ‚Π°Π·ΠΈ map.

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

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

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

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

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

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

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

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

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π² 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. ΠΠ»Π΅ΠΊΡΠ°Π½Π΄ΡŠΡ€ Валялкин

Π•Ρ‚ΠΎ ΠΊΠ°ΠΊ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° Ρ‚Π°Π·ΠΈ структура ΠΎΡ‚ Π΄Π°Π½Π½ΠΈ. Π’ set ΠΈΠΌΠ° Π΄Π²Π° Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚Π°:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

НС, Π½Π΅ ΠΎΡ‚Ρ‚Π°ΠΌ. ΠŸΡ€ΠΈ рСализация Π½Π° Ρ‚ΠΎΠ·ΠΈ bitset сС Ρ€ΡŠΠΊΠΎΠ²ΠΎΠ΄ΠΈΡ… ΠΎΡ‚ знанията Π·Π° структурата Π½Π° Ρ‚Π΅Π·ΠΈ ids Π²Ρ€Π΅ΠΌΠ΅Π²ΠΈ сСрии, ΠΊΠΎΠΈΡ‚ΠΎ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ Π² 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 ΠΈΠΌΠ° ΠΌΠ°Π»ΠΊΠΎ странна ΠΌΠΎΠ΄Π΅Π» Π½Π° Π΄Π°Π½Π½ΠΈ, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ Π² всяка линия ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° сС ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°Ρ‚ няколко fields с Ρ€Π°Π·Π»ΠΈΡ‡Π΅Π½ Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ Ρ‚Π°Π³ΠΎΠ²Π΅. Π’Π΅Π·ΠΈ Ρ€Π΅Π΄ΠΎΠ²Π΅ сС раздСлят Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†ΠΈ. Π’Π΅Π·ΠΈ Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈ услоТнСния услоТняват послСдващата Ρ€Π°Π±ΠΎΡ‚Π° с Ρ‚Π°Π·ΠΈ Π±Π°Π·Π°. Вя Π΅ Ρ‚Ρ€ΡƒΠ΄Π½Π° Π·Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° ΠΈ Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅.

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

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

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

Π—Π΄Ρ€Π°Π²Π΅ΠΉΡ‚Π΅! Благодаря Π·Π° Π΄ΠΎΠΊΠ»Π°Π΄Π°! Казвам сС ПавСл. Аз съм ΠΎΡ‚ компания Wildberries. Имам няколко Π²ΡŠΠΏΡ€ΠΎΡΠ° към вас. ΠŸΡŠΡ€Π²ΠΈΡΡ‚ Π²ΡŠΠΏΡ€ΠΎΡ. Как Π²ΠΈ сС струва, Π°ΠΊΠΎ бяхтС ΠΈΠ·Π±Ρ€Π°Π»ΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π΅Π½ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ ΠΏΡ€ΠΈ ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°Ρ‚Π° Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ си ΠΈ ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΠΎΠ½ΠΈΡ€Π°Π»ΠΈ Π΄Π°Π½Π½ΠΈΡ‚Π΅ ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅, Π±ΠΈΡ…Ρ‚Π΅ Π»ΠΈ ΠΌΠΎΠ³Π»ΠΈ Π΄Π° ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ прСсичанС Π½Π° Π΄Π°Π½Π½ΠΈ ΠΏΡ€ΠΈ Ρ‚ΡŠΡ€ΡΠ΅Π½Π΅, основавайки сС само Π½Π° Ρ„Π°ΠΊΡ‚Π°, Ρ‡Π΅ Π² Π΅Π΄Π½Π° партиция сС Π½Π°ΠΌΠΈΡ€Π°Ρ‚ Π΄Π°Π½Π½ΠΈ Π·Π° Π΅Π΄ΠΈΠ½ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ ΠΎΡ‚ Π²Ρ€Π΅ΠΌΠ΅, Ρ‚.Π΅. Π·Π° Π΅Π΄ΠΈΠ½ Π²Ρ€Π΅ΠΌΠ΅Π²ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π», ΠΈ нямашС Π΄Π° сС Π½Π°Π»Π°Π³Π° Π΄Π° сС Ρ‚Ρ€Π΅Π²ΠΎΠΆΠΈΡ‚Π΅ Π·Π° Ρ‚ΠΎΠ²Π°, Ρ‡Π΅ ΠΈΠΌΠ°Ρ‚Π΅ части, Ρ€Π°Π·ΠΏΡ€ΡŠΡΠ½Π°Ρ‚ΠΈ ΠΏΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π΅Π½ Π½Π°Ρ‡ΠΈΠ½? Π’ΡŠΠΏΡ€ΠΎΡ Π½ΠΎΠΌΠ΅Ρ€ 2 - Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Ρ‚Π΅ ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΡŠΠΌ с 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 Π±Π°ΠΉΡ‚Π° Π½Π° Ρ‚ΠΎΡ‡ΠΊΠ°. Всяка Ρ‚ΠΎΡ‡ΠΊΠ° Π΅ timestamp + стойност. И сС компрСсира Π½Π° ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ ΠΎΡ‚ Π΅Π΄ΠΈΠ½ Π±Π°ΠΉΡ‚ срСдно.

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

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

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

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

Благодаря! И ΠΎΡ‰Π΅ Π΅Π΄ΠΈΠ½ Π²ΡŠΠΏΡ€ΠΎΡ. Каква Π΅ ΡΡŠΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚Ρ‚Π° с 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