ΠΡΠ΅Π΄Π»Π°Π³Π°Ρ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡΡΡΡ Ρ ΡΠ°ΡΡΠΈΡΡΠΎΠ²ΠΊΠΎΠΉ Π΄ΠΎΠΊΠ»Π°Π΄Π° ΠΊΠΎΠ½ΡΠ° 2019 Π³ΠΎΠ΄Π° ΠΠ»Π΅ΠΊΡΠ°Π½Π΄ΡΠ° ΠΠ°Π»ΡΠ»ΠΊΠΈΠ½Π° "Go optimizations in VictoriaMetrics"
ΠΠΎΡ ΡΡΡΠ»ΠΊΠ° Π½Π° Π²ΠΈΠ΄Π΅ΠΎ ΡΡΠΎΠ³ΠΎ Π΄ΠΎΠΊΠ»Π°Π΄Π° β
Π Π°ΡΡΠΊΠ°ΠΆΡ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΎ ΡΠ΅Π±Π΅. Π― β ΠΠ»Π΅ΠΊΡΠ°Π½Π΄Ρ ΠΠ°Π»ΡΠ»ΠΊΠΈΠ½. ΠΠΎΡ fast
, Π»ΠΈΠ±ΠΎ Ρ quick
ΠΏΡΠ΅ΡΠΈΠΊΡΠ°.
Π Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ Ρ ΡΠ°Π±ΠΎΡΠ°Ρ Π½Π°Π΄ VictoriaMetrics. Π§ΡΠΎ ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΠΈ ΡΡΠΎ Ρ ΡΠ°ΠΌ Π΄Π΅Π»Π°Ρ? ΠΠ± ΡΡΠΎΠΌ Ρ ΡΠ°ΡΡΠΊΠ°ΠΆΡ Π² ΡΡΠΎΠΉ ΠΏΡΠ΅Π·Π΅Π½ΡΠ°ΡΠΈΠΈ.
ΠΠ»Π°Π½ Π΄ΠΎΠΊΠ»Π°Π΄Π° ΡΠ°ΠΊΠΎΠΉ:
- ΠΠ½Π°ΡΠ°Π»Π΅ Ρ Π²Π°ΠΌ ΡΠ°ΡΡΠΊΠ°ΠΆΡ, ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ VictoriaMetrics.
- ΠΠΎΡΠΎΠΌ ΡΠ°ΡΡΠΊΠ°ΠΆΡ, ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΡΡΠ΄Ρ.
- ΠΠΎΡΠΎΠΌ ΡΠ°ΡΡΠΊΠ°ΠΆΡ, ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π±Π°Π·Π° Π΄Π°Π½Π½ΡΡ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΡΠ΄ΠΎΠ².
- ΠΠ°Π»Π΅Π΅ ΡΠ°ΡΡΠΊΠ°ΠΆΡ ΠΏΡΠΎ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ : ΠΈΠ· ΡΠ΅Π³ΠΎ ΠΎΠ½Π° ΡΠΎΡΡΠΎΠΈΡ.
- Π ΠΏΠΎΡΠΎΠΌ ΠΏΠ΅ΡΠ΅ΠΉΠ΄Π΅ΠΌ ΠΊ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ Π΅ΡΡΡ Π² VictoriaMetrics. ΠΡΠΎ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ ΠΈΠ½Π²Π΅ΡΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΠ° ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ Π΄Π»Ρ bitset-ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π½Π° Go.
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ VictoriaMetrics ΠΊΡΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ Π² Π°ΡΠ΄ΠΈΡΠΎΡΠΈΠΈ Π·Π½Π°Π΅Ρ? ΠΠΈΡΠ΅Π³ΠΎ ΡΠ΅Π±Π΅, ΡΠΆΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ Π»ΡΠ΄Π΅ΠΉ Π·Π½Π°ΡΡ. ΠΡΠΎ Ρ ΠΎΡΠΎΡΠ°Ρ Π½ΠΎΠ²ΠΎΡΡΡ. ΠΠ»Ρ ΡΠ΅Ρ , ΠΊΡΠΎ Π½Π΅ Π·Π½Π°Π΅Ρ β ΡΡΠΎ Π±Π°Π·Π° Π΄Π°Π½Π½ΡΡ Π΄Π»Ρ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΡΠ΄ΠΎΠ². ΠΠ½Π° ΠΎΡΠ½ΠΎΠ²Π°Π½Π° Π½Π° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ΅ ClickHouse, Π½Π° Π½Π΅ΠΊΠΎΡΠΎΡΡΡ Π΄Π΅ΡΠ°Π»ΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ClickHouse. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π° ΡΠ°ΠΊΠΈΡ , ΠΊΠ°ΠΊ: MergeTree, ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎΠ΅ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ Π½Π° Π²ΡΠ΅Ρ Π΄ΠΎΡΡΡΠΏΠ½ΡΡ ΡΠ΄ΡΠ°Ρ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ° ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ°Π±ΠΎΡΡ Π½Π°Π΄ Π±Π»ΠΎΠΊΠ°ΠΌΠΈ Π΄Π°Π½Π½ΡΡ , ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠΌΠ΅ΡΠ°ΡΡΡΡ Π² ΠΊΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°.
VictoriaMetrics ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π»ΡΡΡΠ΅Π΅ ΡΠΆΠ°ΡΠΈΠ΅ Π΄Π°Π½Π½ΡΡ ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½ΡΡ Π΄Π»Ρ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΡΠ΄ΠΎΠ².
ΠΠ½Π° ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΡΠ΅ΡΡΡ Π²Π΅ΡΡΠΈΠΊΠ°Π»ΡΠ½ΠΎ β Ρ. Π΅. Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ Π±ΠΎΠ»ΡΡΠ΅Π΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠΎΠ², Π±ΠΎΠ»ΡΡΠ΅Π΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ Π½Π° ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠΎΠΌΠΏΠ΅. VictoriaMetrics Π±ΡΠ΄Π΅Ρ ΡΡΠΏΠ΅ΡΠ½ΠΎ ΡΡΠΈΠ»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠΈ Π΄ΠΎΡΡΡΠΏΠ½ΡΠ΅ ΡΠ΅ΡΡΡΡΡ ΠΈ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ²ΡΡΠ°ΡΡ Π»ΠΈΠ½Π΅ΠΉΠ½ΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ.
Π’Π°ΠΊΠΆΠ΅ VictoriaMetrics ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΡΠ΅ΡΡΡ Π³ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»ΡΠ½ΠΎ β Ρ. Π΅. Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ Π½ΠΎΠ΄Ρ Π² ΠΊΠ»Π°ΡΡΠ΅Ρ VictoriaMetrics, ΠΈ Π΅Π΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π±ΡΠ΄Π΅Ρ ΡΠ°ΡΡΠΈ ΠΏΠΎΡΡΠΈ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎ.
ΠΠ°ΠΊ Π²Ρ Π΄ΠΎΠ³Π°Π΄Π°Π»ΠΈΡΡ, VictoriaMetrics Π±ΡΡΡΡΠ°Ρ Π±Π°Π·Π° Π΄Π°Π½Π½ΡΡ , ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π΄ΡΡΠ³ΠΈΡ Ρ Π½Π΅ ΠΌΠΎΠ³Ρ ΠΏΠΈΡΠ°ΡΡ. Π ΠΎΠ½Π° Π½Π°ΠΏΠΈΡΠ°Π½Π° Π½Π° Go, ΠΏΠΎΡΡΠΎΠΌΡ Ρ ΠΏΡΠΎ Π½Π΅Π΅ ΡΠ°ΡΡΠΊΠ°Π·ΡΠ²Π°Ρ Π½Π° ΡΡΠΎΠΌ ΠΌΠΈΡΠ°ΠΏΠ΅.
ΠΡΠΎ Π·Π½Π°Π΅Ρ, ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΡΡΠ΄? Π’ΠΎΠΆΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ Π»ΡΠ΄Π΅ΠΉ Π·Π½Π°Π΅Ρ. ΠΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΡΡΠ΄ β ΡΡΠΎ ΡΠ΅ΡΠΈΡ ΠΏΠ°Ρ (timestamp, Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅)
, Π³Π΄Π΅ ΡΡΠΈ ΠΏΠ°ΡΡ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Ρ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ. ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΈΠ· ΡΠ΅Π±Ρ ΡΠΈΡΠ»ΠΎ Ρ ΠΏΠ»Π°Π²Π°ΡΡΠ΅ΠΉ ΡΠΎΡΠΊΠΎΠΉ β float64.
ΠΠ°ΠΆΠ΄ΡΠΉ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΡΡΠ΄ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½ ΠΊΠ»ΡΡΠΎΠΌ. ΠΠ· ΡΠ΅Π³ΠΎ ΡΠΎΡΡΠΎΠΈΡ ΡΡΠΎΡ ΠΊΠ»ΡΡ? ΠΠ½ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· Π½Π΅ΠΏΡΡΡΠΎΠ³ΠΎ Π½Π°Π±ΠΎΡΠ° ΠΏΠ°Ρ ΠΊΠ»ΡΡ-Π·Π½Π°ΡΠ΅Π½ΠΈΡ.
ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΡΠ΄Π°. ΠΠ»ΡΡΠΎΠΌ ΡΡΠΎΠ³ΠΎ ΡΡΠ΄Π° ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΏΠΈΡΠΎΠΊ ΠΏΠ°Ρ: __name__="cpu_usage"
β ΡΡΠΎ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΌΠ΅ΡΡΠΈΠΊΠΈ, instance="my-server"
β ΡΡΠΎ ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ, Π½Π° ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΡΠ° ΠΌΠ΅ΡΡΠΈΠΊΠ° ΡΠΎΠ±ΡΠ°Π½Π°, datacenter="us-east"
β ΡΡΠΎ Π΄Π°ΡΠ°ΡΠ΅Π½ΡΡ, Π³Π΄Π΅ ΡΡΠΎΠΈΡ ΡΡΠΎΡ ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ.
Π£ Π½Π°Ρ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΎΡΡ ΠΈΠΌΡ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΡΠ΄Π°, ΡΠΎΡΡΠΎΡΡΠ΅Π΅ ΠΈΠ· ΡΡΠ΅Ρ
ΠΏΠ°Ρ ΠΊΠ»ΡΡ-Π·Π½Π°ΡΠ΅Π½ΠΈΡ. ΠΡΠΎΠΌΡ ΠΊΠ»ΡΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΡΠΏΠΈΡΠΎΠΊ ΠΏΠ°Ρ (timestamp, value)
. t1, t3, t3, ..., tN
β ΡΡΠΎ timestamps, 10, 20, 12, ..., 15
β ΡΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ. ΠΡΠΎ cpu-usage Π² Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π΄Π»Ρ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΡΠ΄Π°.
ΠΠ΄Π΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Ρ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΡΡΠ΄Ρ? Π£ ΠΊΠΎΠ³ΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ Π΅ΡΡΡ ΠΈΠ΄Π΅ΠΈ?
- Π DevOps ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅ΡΡΡΡ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΈΡ Π·Π°Π³ΡΡΠ·ΠΊΠΈ CPU, RAM, ΡΠ΅ΡΠΈ, rps, ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΎΡΠΈΠ±ΠΎΠΊ ΠΈ Ρ. Π΄.
- IoT β ΠΌΠΎΠΆΠ΅ΠΌ ΠΌΠ΅ΡΠΈΡΡ ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΡ Π΄Π°Π²Π»Π΅Π½ΠΈΠ΅, geo coordinates ΠΈ Π΅ΡΠ΅ ΡΡΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ.
- Π’Π°ΠΊΠΆΠ΅ ΡΠΈΠ½Π°Π½ΡΡ β ΠΌΠΎΠΆΠ΅ΠΌ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΡΡ ΡΠ΅Π½Ρ Π½Π° Π²ΡΡΠΊΠΈΠ΅ Π°ΠΊΡΠΈΠΈ ΠΈ Π²Π°Π»ΡΡΡ.
- ΠΡΠΎΠΌΠ΅ ΡΡΠΎΠ³ΠΎ, Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΡΡΠ΄Ρ ΠΌΠΎΠ³ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π² ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½Π½ΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² Π½Π° Π·Π°Π²ΠΎΠ΄Π°Ρ . Π£ Π½Π°Ρ Π΅ΡΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ VictoriaMetrics Π΄Π»Ρ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π° Π²Π΅ΡΡΠΎΠ²ΡΡ ΡΡΡΠ±ΠΈΠ½, Π΄Π»Ρ ΡΠΎΠ±ΠΎΡΠΎΠ².
- Π’Π°ΠΊΠΆΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΡΡΠ΄Ρ ΠΏΠΎΠ»Π΅Π·Π½Ρ Π΄Π»Ρ ΡΠ±ΠΎΡΠ° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Ρ Π΄Π°ΡΡΠΈΠΊΠΎΠ² ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΡΡΡΠΎΠΉΡΡΠ². ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ Π΄Π²ΠΈΠ³Π°ΡΠ΅Π»Ρ; Π΄Π»Ρ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ Π΄Π°Π²Π»Π΅Π½ΠΈΡ Π² ΡΠΈΠ½Π°Ρ ; Π΄Π»Ρ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΡΠΊΠΎΡΠΎΡΡΠΈ, ΡΠ°ΡΡΡΠΎΡΠ½ΠΈΡ; Π΄Π»Ρ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΡΠ°ΡΡ ΠΎΠ΄Π° Π±Π΅Π½Π·ΠΈΠ½Π° ΠΈ Ρ. Π΄.
- Π’Π°ΠΊΠΆΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΡΡΠ΄Ρ ΠΌΠΎΠ³ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π΄Π»Ρ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π° ΡΠ°ΠΌΠΎΠ»Π΅ΡΠΎΠ². Π ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡΠ°ΠΌΠΎΠ»Π΅ΡΠ΅ Π΅ΡΡΡ ΡΠ΅ΡΠ½ΡΠΉ ΡΡΠΈΠΊ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ±ΠΈΡΠ°Π΅Ρ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΡΡΠ΄Ρ ΠΏΠΎ ΡΠ°Π·Π½ΡΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌ Π·Π΄ΠΎΡΠΎΠ²ΡΡ ΡΠ°ΠΌΠΎΠ»Π΅ΡΠ°. ΠΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΡΡΠ΄Ρ ΡΠ°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π² Π°ΡΡΠΎΠΊΠΎΡΠΌΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΏΡΠΎΠΌΡΡΠ»Π΅Π½Π½ΠΎΡΡΠΈ.
- Healthcare β ΡΡΠΎ Π΄Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΡΠΎΠ²ΠΈ, ΠΏΡΠ»ΡΡ ΠΈ Ρ.Π΄.
ΠΠΎΠΆΠ΅Ρ Π±ΡΡΡ, Π΅ΡΠ΅ Π΅ΡΡΡ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ, ΠΏΡΠΎ ΠΊΠΎΡΠΎΡΡΠ΅ Ρ Π·Π°Π±ΡΠ», Π½ΠΎ, Π½Π°Π΄Π΅ΡΡΡ, ΡΡΠΎ Π²Ρ ΠΏΠΎΠ½ΡΠ»ΠΈ, ΡΡΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΡΡΠ΄Ρ Π°ΠΊΡΠΈΠ²Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π² ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΌ ΠΌΠΈΡΠ΅. Π ΠΎΠ±ΡΠ΅ΠΌ ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Ρ ΠΊΠ°ΠΆΠ΄ΡΠΌ Π³ΠΎΠ΄ΠΎΠΌ ΡΠ°ΡΡΠ΅Ρ.
ΠΠ»Ρ ΡΠ΅Π³ΠΎ Π½ΡΠΆΠ½Π° Π±Π°Π·Π° Π΄Π°Π½Π½ΡΡ Π΄Π»Ρ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΡΠ΄ΠΎΠ²? ΠΠΎΡΠ΅ΠΌΡ Π½Π΅Π»ΡΠ·Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠ±ΡΡΠ½ΡΡ ΡΠ΅Π»ΡΡΠΈΠΎΠ½Π½ΡΡ Π±Π°Π·Ρ Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΡΠ΄ΠΎΠ²?
ΠΠΎΡΠΎΠΌΡ ΡΡΠΎ Π²ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
ΡΡΠ΄Π°Ρ
ΠΎΠ±ΡΡΠ½ΠΎ Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΎΠ±ΡΠ΅ΠΌ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ»ΠΎΠΆΠ½ΠΎ ΡΠΎΡ
ΡΠ°Π½ΡΡΡ ΠΈ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ Π² ΠΎΠ±ΡΡΠ½ΡΡ
Π±Π°Π·Π°Ρ
Π΄Π°Π½Π½ΡΡ
. ΠΠΎΡΡΠΎΠΌΡ ΠΏΠΎΡΠ²ΠΈΠ»ΠΈΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΠ Π΄Π»Ρ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
ΡΡΠ΄ΠΎΠ². ΠΡΠΈ Π±Π°Π·Ρ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ ΡΠΎΡ
ΡΠ°Π½ΡΡΡ ΡΠΎΡΠΊΠΈ (timestamp, value)
Ρ Π·Π°Π΄Π°Π½Π½ΡΠΌ ΠΊΠ»ΡΡΠΎΠΌ. ΠΠ½ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ API Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ ΡΠΎΡ
ΡΠ°Π½Π΅Π½Π½ΡΡ
Π΄Π°Π½Π½ΡΡ
ΠΏΠΎ ΠΊΠ»ΡΡΡ, ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠ°ΡΠ΅ ΠΊΠ»ΡΡ-Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, Π»ΠΈΠ±ΠΎ ΠΏΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌ ΡΠ°ΠΊΠΈΠΌ ΠΏΠ°ΡΠ°ΠΌ, Π»ΠΈΠ±ΠΎ ΠΏΠΎ regexp. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π²Ρ Ρ
ΠΎΡΠΈΡΠ΅ Π½Π°ΠΉΡΠΈ Π·Π°Π³ΡΡΠ·ΠΊΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ° Π²ΡΠ΅Ρ
Π²Π°ΡΠΈΡ
ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² Π² Π΄Π°ΡΠ°ΡΠ΅Π½ΡΡΠ΅ Π² ΠΠΌΠ΅ΡΠΈΠΊΠ΅, ΡΠΎ Π½ΡΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²ΠΎΡ ΡΠ°ΠΊΠΎΠΉ ΠΏΡΠ΅Π²Π΄ΠΎΠ·Π°ΠΏΡΠΎΡ.
ΠΠ±ΡΡΠ½ΠΎ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
Π΄Π»Ρ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
ΡΡΠ΄ΠΎΠ² ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΠ·ΡΠΊΠΈ Π·Π°ΠΏΡΠΎΡΠΎΠ², ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ SQL Π΄Π»Ρ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
ΡΡΠ΄ΠΎΠ² Π½Π΅ ΠΎΡΠ΅Π½Ρ Ρ
ΠΎΡΠΎΡΠΎ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ΠΈΡ. Π₯ΠΎΡΡ Π΅ΡΡΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
, ΠΊΠΎΡΠΎΡΡΠ΅ SQL ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ, Π½ΠΎ ΠΎΠ½ Π½Π΅ ΠΎΡΠ΅Π½Ρ Ρ
ΠΎΡΠΎΡΠΎ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ΠΈΡ. ΠΠΎΠ»Π΅Π΅ Ρ
ΠΎΡΠΎΡΠΎ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ΡΡ ΡΠ°ΠΊΠΈΠ΅ ΡΠ·ΡΠΊΠΈ Π·Π°ΠΏΡΠΎΡΠΎΠ², ΠΊΠ°ΠΊ
ΠΠΎΡ ΠΊΠ°ΠΊ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ Π΄Π»Ρ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΡΠ΄ΠΎΠ² Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ΅ VictoriaMetrics.
ΠΠ½Π° ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· Π΄Π²ΡΡ ΡΠ°ΡΡΠ΅ΠΉ. ΠΡΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ Π΄Π»Ρ ΠΈΠ½Π²Π΅ΡΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΠ° ΠΈ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ Π΄Π»Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΡΠ΄ΠΎΠ². ΠΡΠΈ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ° ΡΠ°Π·Π΄Π΅Π»Π΅Π½Ρ.
ΠΠΎΠ³Π΄Π° ΠΏΡΠΈΡ
ΠΎΠ΄ΠΈΡ Π½ΠΎΠ²Π°Ρ Π·Π°ΠΏΠΈΡΡ Π² Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
, ΡΠΎ ΠΌΡ ΡΠ½Π°ΡΠ°Π»Π° ΠΎΠ±ΡΠ°ΡΠ°Π΅ΠΌΡΡ Π² ΠΈΠ½Π²Π΅ΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΈΠ½Π΄Π΅ΠΊΡ, ΡΡΠΎΠ±Ρ Π½Π°ΠΉΡΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΡΠ΄Π° ΠΏΠΎ Π·Π°Π΄Π°Π½Π½ΠΎΠΌΡ Π½Π°Π±ΠΎΡΡ label=value
Π΄Π»Ρ Π΄Π°Π½Π½ΠΎΠΉ ΠΌΠ΅ΡΡΠΈΠΊΠΈ. ΠΠ°Ρ
ΠΎΠ΄ΠΈΠΌ ΡΡΠΎΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΠΈ ΡΠΎΡ
ΡΠ°Π½ΡΠ΅ΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π² Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ Π΄Π°Π½Π½ΡΡ
.
ΠΠΎΠ³Π΄Π° ΠΏΡΠΈΡ
ΠΎΠ΄ΠΈΡ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ Π·Π°ΠΏΡΠΎΡ Π½Π° Π²ΡΠ±ΠΎΡΠΊΡ Π΄Π°Π½Π½ΡΡ
ΠΈΠ· TSDB, ΠΌΡ Π² ΠΏΠ΅ΡΠ²ΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ Π»Π΅Π·Π΅ΠΌ Π² ΠΈΠ½Π²Π΅ΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΈΠ½Π΄Π΅ΠΊΡ. ΠΠΎΡΡΠ°Π΅ΠΌ Π²ΡΠ΅ timeseries_ids
Π·Π°ΠΏΠΈΡΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡ Π΄Π°Π½Π½ΠΎΠΌΡ Π½Π°Π±ΠΎΡΡ label=value
. Π Π·Π°ΡΠ΅ΠΌ Π΄ΠΎΡΡΠ°Π΅ΠΌ Π²ΡΠ΅ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ· Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ° Π΄Π°Π½Π½ΡΡ
, ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎ timeseries_ids
.
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠ°ΠΊ Π±Π°Π·Π° Π΄Π°Π½Π½ΡΡ Π΄Π»Ρ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΡΠ΄ΠΎΠ² ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ Π²Ρ ΠΎΠ΄ΡΡΠΈΠΉ select-Π·Π°ΠΏΡΠΎΡ.
- Π ΠΏΠ΅ΡΠ²ΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ ΠΎΠ½Π° Π΄ΠΎΡΡΠ°Π΅Ρ Π²ΡΠ΅
timeseries_ids
ΠΈΠ· ΠΈΠ½Π²Π΅ΡΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΠ°, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ Π·Π°Π΄Π°Π½Π½ΡΠ΅ ΠΏΠ°ΡΡlabel=value
, Π»ΠΈΠ±ΠΎ ΡΠ΄ΠΎΠ²Π»Π΅ΡΠ²ΠΎΡΡΡΡ Π·Π°Π΄Π°Π½Π½ΠΎΠΌΡ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΎΠΌΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ. - ΠΠΎΡΠΎΠΌ ΠΎΠ½Π° Π΄ΠΎΡΡΠ°Π΅Ρ Π²ΡΠ΅ data points ΠΈΠ· Ρ
ΡΠ°Π½Π°Π»ΠΈΡΠ° Π΄Π°Π½Π½ΡΡ
Π½Π° Π·Π°Π΄Π°Π½Π½ΠΎΠΌ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Π΅ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π΄Π»Ρ Π½Π°ΠΉΠ΄Π΅Π½Π½ΡΡ
timeseries_ids
. - ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ Π±Π°Π·Π° Π΄Π°Π½Π½ΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ ΠΊΠ°ΠΊΠΈΠ΅-ΡΠΎ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ Π½Π°Π΄ ΡΡΠΈΠΌΠΈ data points, ΡΠΎΠ³Π»Π°ΡΠ½ΠΎ Π·Π°ΠΏΡΠΎΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ. Π ΠΏΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΎΡΠ²Π΅Ρ.
Π Π΄Π°Π½Π½ΠΎΠΉ ΠΏΡΠ΅Π·Π΅Π½ΡΠ°ΡΠΈΠΈ Ρ Π²Π°ΠΌ ΡΠ°ΡΡΠΊΠ°ΠΆΡ ΠΏΡΠΎ ΠΏΠ΅ΡΠ²ΡΡ ΡΠ°ΡΡΡ. ΠΡΠΎ ΠΏΠΎΠΈΡΠΊ timeseries_ids
ΠΏΠΎ ΠΈΠ½Π²Π΅ΡΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΌΡ ΠΈΠ½Π΄Π΅ΠΊΡΡ. ΠΡΠΎ Π²ΡΠΎΡΡΡ ΡΠ°ΡΡΡ ΠΈ ΡΡΠ΅ΡΡΡ ΡΠ°ΡΡΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΡΠΎΠΌ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ
ΠΡΠΈΡΡΡΠΏΠΈΠΌ ΠΊ ΠΈΠ½Π²Π΅ΡΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΌΡ ΠΈΠ½Π΄Π΅ΠΊΡΡ. ΠΠ½ΠΎΠ³ΠΈΠΌ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΊΠ°Π·Π°ΡΡΡΡ, ΡΡΠΎ ΡΡΠΎ ΠΏΡΠΎΡΡΠΎ. ΠΡΠΎ Π·Π½Π°Π΅Ρ, ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΠΈΠ½Π²Π΅ΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΈΠ½Π΄Π΅ΠΊΡ ΠΈ ΠΊΠ°ΠΊ ΠΎΠ½ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ? Π, ΡΠΆΠ΅ Π½Π΅ ΡΠ°ΠΊ ΠΌΠ½ΠΎΠ³ΠΎ Π»ΡΠ΄Π΅ΠΉ. ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΠΏΡΡΠ°Π΅ΠΌΡΡ ΠΏΠΎΠ½ΡΡΡ, ΡΡΠΎ ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅.
ΠΠ° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ Π²ΡΠ΅ ΠΏΡΠΎΡΡΠΎ. ΠΡΠΎ ΠΏΡΠΎΡΡΠΎ ΡΠ»ΠΎΠ²Π°ΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅Ρ ΠΊΠ»ΡΡ Π½Π° Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅. Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΠΊΠ»ΡΡ? ΠΡΠ° ΠΏΠ°ΡΠ° label=value
, Π³Π΄Π΅ label
ΠΈ value
β ΡΡΠΎ ΡΡΡΠΎΠΊΠΈ. Π Π·Π½Π°ΡΠ΅Π½ΠΈΡ β ΡΡΠΎ Π½Π°Π±ΠΎΡ timeseries_ids
, Π² ΠΊΠΎΡΠΎΡΡΠΉ Π²Ρ
ΠΎΠ΄ΠΈΡ Π·Π°Π΄Π°Π½Π½Π°Ρ ΠΏΠ°ΡΠ° label=value
.
ΠΠ½Π²Π΅ΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΈΠ½Π΄Π΅ΠΊΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π±ΡΡΡΡΠΎ Π½Π°Ρ
ΠΎΠ΄ΠΈΡΡ Π²ΡΠ΅ timeseries_ids
, Ρ ΠΊΠΎΡΠΎΡΡΡ
Π΅ΡΡΡ Π·Π°Π΄Π°Π½Π½ΡΠ΅ label=value
.
Π ΡΠ°ΠΊΠΆΠ΅ ΠΎΠ½ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π±ΡΡΡΡΠΎ Π½Π°Ρ
ΠΎΠ΄ΠΈΡΡ timeseries_ids
Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
ΡΡΠ΄ΠΎΠ² Π΄Π»Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ
ΠΏΠ°Ρ label=value
, Π»ΠΈΠ±ΠΎ Π΄Π»Ρ ΠΏΠ°Ρ label=regexp
. ΠΠ°ΠΊ ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ? Π‘ ΠΏΠΎΠΌΠΎΡΡΡ Π½Π°Ρ
ΠΎΠΆΠ΄Π΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° timeseries_ids
Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠ°ΡΡ label=value
.
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΈΠ½Π²Π΅ΡΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΠ°. ΠΠ°ΡΠ½Π΅ΠΌ Ρ ΡΠ°ΠΌΠΎΠΉ ΠΏΡΠΎΡΡΠΎΠΉ Π½Π°ΠΈΠ²Π½ΠΎΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ. ΠΠ½Π° Π²ΡΠ³Π»ΡΠ΄ΠΈΡ Π²ΠΎΡ ΡΠ°ΠΊ.
Π€ΡΠ½ΠΊΡΠΈΡ getMetricIDs
ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ ΡΠΏΠΈΡΠΎΠΊ ΡΡΡΠΎΠΊ. ΠΠ°ΠΆΠ΄Π°Ρ ΡΡΡΠΎΠΊΠ° ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ label=value
. ΠΡΠ° ΡΡΠ½ΠΊΡΠΈΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠΏΠΈΡΠΎΠΊ metricIDs
.
ΠΠ°ΠΊ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ? ΠΠΎΡ Ρ Π½Π°Ρ Π΅ΡΡΡ Π³Π»ΠΎΠ±Π°Π»ΡΠ½Π°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ, ΠΊΠΎΡΠΎΡΠ°Ρ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ invertedIndex
. ΠΡΠΎ ΠΎΠ±ΡΡΠ½ΡΠΉ ΡΠ»ΠΎΠ²Π°ΡΡ (map
), ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Ρ ΡΡΡΠΎΠΊΡ Π½Π° slice int-ΠΎΠ². Π‘ΡΡΠΎΠΊΠ° ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ label=value
.
Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ: Π΄ΠΎΡΡΠ°Π΅ΠΌ metricIDs
Π΄Π»Ρ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ label=value
, Π·Π°ΡΠ΅ΠΌ ΠΏΡΠΎΡ
ΠΎΠ΄ΠΈΠΌΡΡ ΠΏΠΎ Π²ΡΠ΅ΠΌ ΠΎΡΡΠ°Π»ΡΠ½ΡΠΌ label=value
, Π΄ΠΎΡΡΠ°Π΅ΠΌ metricIDs
Π΄Π»Ρ Π½ΠΈΡ
. Π Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ intersectInts
, ΠΏΡΠΎ ΠΊΠΎΡΠΎΡΡΡ Π±ΡΠ΄Π΅Ρ ΡΠ°ΡΡΠΊΠ°Π·Π°Π½ΠΎ Π΄Π°Π»Π΅Π΅. Π ΡΡΠ° ΡΡΠ½ΠΊΡΠΈΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΏΠ΅ΡΠ΅ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΡΠΈΡ
ΡΠΏΠΈΡΠΊΠΎΠ².
ΠΠ°ΠΊ Π²Ρ Π²ΠΈΠ΄ΠΈΡΠ΅, ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΈΠ½Π²Π΅ΡΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΠ° Π½Π΅ ΠΎΡΠ΅Π½Ρ ΡΠ»ΠΎΠΆΠ½Π°Ρ. ΠΠΎ ΡΡΠΎ Π½Π°ΠΈΠ²Π½Π°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ. ΠΠ°ΠΊΠΈΠ΅ Ρ Π½Π΅Π΅ Π΅ΡΡΡ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠΈ? ΠΠ»Π°Π²Π½ΡΠΉ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΠΊ Π½Π°ΠΈΠ²Π½ΠΎΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π² ΡΠΎΠΌ, ΡΡΠΎ ΡΠ°ΠΊΠΎΠΉ ΠΈΠ½Π²Π΅ΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΈΠ½Π΄Π΅ΠΊΡ Ρ Π½Π°Ρ Ρ ΡΠ°Π½ΠΈΡΡΡ Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ. ΠΠΎΡΠ»Π΅ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΠΊΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΌΡ ΡΠ΅ΡΡΠ΅ΠΌ ΡΡΠΎΡ ΠΈΠ½Π΄Π΅ΠΊΡ. ΠΠ΅Ρ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΡ ΡΡΠΎΠ³ΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΠ° Π½Π° Π΄ΠΈΡΠΊ. ΠΠ»Ρ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ ΡΠ°ΠΊΠΎΠΉ ΠΈΠ½Π²Π΅ΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΈΠ½Π΄Π΅ΠΊΡ Π²ΡΡΠ΄ Π»ΠΈ ΠΏΠΎΠ΄ΠΎΠΉΠ΄Π΅Ρ.
ΠΡΠΎΡΠΎΠΉ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΠΊ ΡΠΎΠΆΠ΅ ΡΠ²ΡΠ·Π°Π½ Ρ ΠΏΠ°ΠΌΡΡΡΡ. ΠΠ½Π²Π΅ΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΈΠ½Π΄Π΅ΠΊΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠΌΠ΅ΡΠ°ΡΡΡΡ Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΡΡ ΠΏΠ°ΠΌΡΡΡ. ΠΡΠ»ΠΈ ΠΎΠ½ ΠΏΡΠ΅Π²ΡΡΠΈΡ ΡΠ°Π·ΠΌΠ΅Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ, ΡΠΎ ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΠΎ, ΡΡΠΎ ΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΠΌ β out of memory error. Π ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π½Π΅ Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ.
ΠΠ°Π½Π½ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΅ΡΠΈΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π³ΠΎΡΠΎΠ²ΡΡ
ΡΠ΅ΡΠ΅Π½ΠΈΠΉ ΡΠ°ΠΊΠΈΡ
, ΠΊΠ°ΠΊ
ΠΡΠ»ΠΈ Π²ΠΊΡΠ°ΡΡΠ΅, ΡΠΎ Π½Π°ΠΌ Π½ΡΠΆΠ½Π° Π±Π°Π·Π° Π΄Π°Π½Π½ΡΡ , ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ΄Π΅Π»Π°ΡΡ Π±ΡΡΡΡΠΎ ΡΡΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ.
- ΠΠ΅ΡΠ²Π°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ β ΡΡΠΎ Π·Π°ΠΏΠΈΡΡ
ΠΊΠ»ΡΡ-Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅
Π² ΡΡΡ Π±Π°Π·Ρ. ΠΡΠΎ ΠΎΠ½Π° Π΄Π΅Π»Π°Π΅Ρ ΠΎΡΠ΅Π½Ρ Π±ΡΡΡΡΠΎ, Π³Π΄Π΅ΠΊΠ»ΡΡ-Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅
β ΡΡΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΠ΅ ΡΡΡΠΎΠΊΠΈ. - ΠΡΠΎΡΠ°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ β ΡΡΠΎ Π±ΡΡΡΡΡΠΉ ΠΏΠΎΠΈΡΠΊ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΎ Π·Π°Π΄Π°Π½Π½ΠΎΠΌΡ ΠΊΠ»ΡΡΡ.
- Π ΡΡΠ΅ΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ β ΡΡΠΎ Π±ΡΡΡΡΡΠΉ ΠΏΠΎΠΈΡΠΊ Π²ΡΠ΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΏΠΎ Π·Π°Π΄Π°Π½Π½ΠΎΠΌΡ ΠΏΡΠ΅ΡΠΈΠΊΡΡ.
LevelDB ΠΈ RocksDB β ΡΡΠΈ Π±Π°Π·Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½Ρ Π² Google ΠΈ Facebook. Π‘Π½Π°ΡΠ°Π»Π° ΠΏΠΎΡΠ²ΠΈΠ»Π°ΡΡ LevelDB. ΠΠΎΡΠΎΠΌ ΡΠ΅Π±ΡΡΠ° ΠΈΠ· Facebook Π²Π·ΡΠ»ΠΈ LevelDB ΠΈ Π½Π°ΡΠ°Π»ΠΈ Π΅Π΅ ΡΠ»ΡΡΡΠ°ΡΡ, ΡΠ΄Π΅Π»Π°Π» RocksDB. Π‘Π΅ΠΉΡΠ°Ρ Π½Π° RocksDB Π²Π½ΡΡΡΠΈ Facebook ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΏΠΎΡΡΠΈ Π²ΡΠ΅ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠ΅ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
, Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ ΠΎΠ½ΠΈ ΠΏΠ΅ΡΠ΅Π²Π΅Π»ΠΈ Π½Π° RocksDB ΠΈ MySQL. ΠΠ½ΠΈ Π½Π°Π·Π²Π°Π»ΠΈ Π΅Π³ΠΎ
ΠΠ½Π²Π΅ΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΈΠ½Π΄Π΅ΠΊΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ LevelDB. ΠΠ°ΠΊ ΡΡΠΎ ΡΠ΄Π΅Π»Π°ΡΡ? ΠΡ ΡΠΎΡ
ΡΠ°Π½ΡΠ΅ΠΌ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΊΠ»ΡΡΠ° label=value
. Π Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ β ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΡΠ΄Π°, Π³Π΄Π΅ ΠΏΡΠΈΡΡΡΡΡΠ²ΡΠ΅Ρ ΠΏΠ°ΡΠ° label=value
.
ΠΡΠ»ΠΈ Ρ Π½Π°Ρ Π΅ΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
ΡΡΠ΄ΠΎΠ² c Π΄Π°Π½Π½ΠΎΠΉ ΠΏΠ°ΡΠΎΠΉ label=value
, ΡΠΎ Π±ΡΠ΄Π΅Ρ ΠΌΠ½ΠΎΠ³ΠΎ ΡΡΡΠΎΡΠ΅ΠΊ Π² ΡΡΠΎΠΉ Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ
Ρ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠΌΠΈ ΠΊΠ»ΡΡΠΎΠΌ ΠΈ ΡΠ°Π·Π½ΡΠΌΠΈ timeseries_ids
. Π§ΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠΏΠΈΡΠΎΠΊ Π²ΡΠ΅Ρ
timeseries_ids
, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π°ΡΠΈΠ½Π°ΡΡΡΡ Ρ Π΄Π°Π½Π½ΠΎΠΉ label=prefix
, ΠΌΡ Π΄Π΅Π»Π°Π΅ΠΌ range scan, ΠΏΠΎΠ΄ ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π° Π΄Π°Π½Π½Π°Ρ Π±Π°Π·Π° Π΄Π°Π½Π½ΡΡ
. Π’. Π΅. Π²ΡΠ±ΠΈΡΠ°Π΅ΠΌ Π²ΡΠ΅ ΡΡΡΠΎΡΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π°ΡΠΈΠ½Π°ΡΡΡΡ Ρ label=prefix
ΠΈ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΡΠ΅ timeseries_ids
.
ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅ΡΠ½Π°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ, ΠΊΠ°ΠΊ ΠΎΠ½Π° Π²ΡΠ³Π»ΡΠ΄Π΅Π»Π° Π±Ρ Π½Π° Go. Π£ Π½Π°Ρ Π΅ΡΡΡ ΠΈΠ½Π²Π΅ΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΈΠ½Π΄Π΅ΠΊΡ. ΠΡΠΎ LevelDB.
Π€ΡΠ½ΠΊΡΠΈΡ ΡΠ°ΠΊΠ°Ρ ΠΆΠ΅, ΠΊΠ°ΠΊ Π΄Π»Ρ Π½Π°ΠΈΠ²Π½ΠΎΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ. ΠΠ½Π° ΠΏΠΎΡΡΠΈ ΡΡΡΠΎΡΠΊΠ° Π² ΡΡΡΠΎΡΠΊΡ ΠΏΠΎΠ²ΡΠΎΡΡΠ΅Ρ Π½Π°ΠΈΠ²Π½ΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ. ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ, ΡΡΠΎ Π²ΠΌΠ΅ΡΡΠΎ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΊ map
ΠΌΡ ΠΎΠ±ΡΠ°ΡΠ°Π΅ΠΌΡΡ ΠΊ ΠΈΠ½Π²Π΅ΡΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΌΡ ΠΈΠ½Π΄Π΅ΠΊΡΡ. ΠΠΎΡΡΠ°Π΅ΠΌ Π²ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π΄Π»Ρ ΠΏΠ΅ΡΠ²ΠΎΠΉ label=value
. ΠΠΎΡΠΎΠΌ ΠΏΡΠΎΡ
ΠΎΠ΄ΠΈΠΌΡΡ ΠΏΠΎ Π²ΡΠ΅ΠΌ ΠΎΡΡΠ°Π²ΡΠΈΠΌΡΡ ΠΏΠ°ΡΠ°ΠΌ label=value
ΠΈ Π΄ΠΎΡΡΠ°Π΅ΠΌ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ Π½Π°Π±ΠΎΡΡ metricIDs Π΄Π»Ρ Π½ΠΈΡ
. ΠΠ°ΡΠ΅ΠΌ Π½Π°Ρ
ΠΎΠ΄ΠΈΠΌ ΠΏΠ΅ΡΠ΅ΡΠ΅ΡΠ΅Π½ΠΈΠ΅.
ΠΡΠΎΠ΄Π΅ Π±Ρ Π²ΡΠ΅ Ρ ΠΎΡΠΎΡΠΎ, Π½ΠΎ Π² ΡΡΠΎΠΌ ΡΠ΅ΡΠ΅Π½ΠΈΠΈ Π΅ΡΡΡ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠΈ. 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 β ΡΡΠΎ Π±ΡΠ»ΠΎ ΡΠ°ΡΠ°Π»ΡΠ½ΡΠΌ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠΎΠΌ π
ΠΠΎΡΡΠΎΠΌΡ Ρ Π½Π°ΠΏΠΈΡΠ°Π» ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΈΠ½Π²Π΅ΡΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΠ°. Π Π½Π°Π·Π²Π°Π» Π΅Π΅
Mergeset ΠΎΡΠ½ΠΎΠ²Π°Π½ Π½Π° ΡΡΡΡΠΊΡΡΡΠ΅ Π΄Π°Π½Π½ΡΡ
MergeTree. ΠΡΠ° ΡΡΡΡΠΊΡΡΡΠ° Π΄Π°Π½Π½ΡΡ
ΠΏΠΎΠ·Π°ΠΈΠΌΡΡΠ²ΠΎΠ²Π°Π½Π° ΠΈΠ· ClickHouse. ΠΡΠ΅Π²ΠΈΠ΄Π½ΠΎ, ΡΡΠΎ mergeset Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½ Π΄Π»Ρ Π±ΡΡΡΡΠΎΠ³ΠΎ ΠΏΠΎΠΈΡΠΊΠ° timeseries_ids
ΠΏΠΎ Π·Π°Π΄Π°Π½Π½ΠΎΠΌΡ ΠΊΠ»ΡΡΡ. Mergeset Π½Π°ΠΏΠΈΡΠ°Π½ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ Π½Π° Go. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ
API mergeset ΠΎΡΠ΅Π½Ρ ΠΏΠΎΡ ΠΎΠΆ Π½Π° LevelDB ΠΈ RocksDB. Π’. Π΅. ΠΎΠ½ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π±ΡΡΡΡΠΎ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ ΡΡΠ΄Π° Π½ΠΎΠ²ΡΠ΅ Π·Π°ΠΏΠΈΡΠΈ ΠΈ Π±ΡΡΡΡΠΎ Π²ΡΠ±ΡΠ°ΡΡ Π·Π°ΠΏΠΈΡΠΈ ΠΏΠΎ Π·Π°Π΄Π°Π½Π½ΠΎΠΌΡ ΠΏΡΠ΅ΡΠΈΠΊΡΡ.
ΠΡΠΎ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠΈ mergeset ΠΌΡ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠΌ ΠΏΠΎΠΏΠΎΠ·ΠΆΠ΅. Π‘Π΅ΠΉΡΠ°Ρ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠΌ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊΠΈΠ΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ»ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ VictoriaMetrics Π² production ΠΏΡΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΈΠ½Π²Π΅ΡΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΠ°.
ΠΠΎΡΠ΅ΠΌΡ ΠΎΠ½ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ»ΠΈ?
ΠΠ΅ΡΠ²Π°Ρ ΠΏΡΠΈΡΠΈΠ½Π° β ΡΡΠΎ high churn rate. Π ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Π΅ Π½Π° ΡΡΡΡΠΊΠΈΠΉ β ΡΡΠΎ ΡΠ°ΡΡΠ°Ρ ΡΠΌΠ΅Π½Π° Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΡΠ΄ΠΎΠ². ΠΡΠΎ ΠΊΠΎΠ³Π΄Π° Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΡΡΠ΄ Π·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°Π΅ΡΡΡ ΠΈ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Π½ΠΎΠ²ΡΠΉ ΡΡΠ΄, Π»ΠΈΠ±ΠΎ Π½Π°ΡΠΈΠ½Π°ΡΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎ Π½ΠΎΠ²ΡΡ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΡΠ΄ΠΎΠ². Π ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΡΠ°ΡΡΠΎ.
ΠΡΠΎΡΠ°Ρ ΠΏΡΠΈΡΠΈΠ½Π° β ΡΡΠΎ Π±ΠΎΠ»ΡΡΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΡΠ΄ΠΎΠ². ΠΠ½Π°ΡΠ°Π»Π΅, ΠΊΠΎΠ³Π΄Π° ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ Π½Π°Π±ΠΈΡΠ°Π» ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΎΡΡΡ, ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΡΠ΄ΠΎΠ² Π±ΡΠ»ΠΎ ΠΌΠ°Π»Π΅Π½ΡΠΊΠΈΠΌ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π° ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ Π½ΡΠΆΠ½ΠΎ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΡΡ Π·Π°Π³ΡΡΠ·ΠΊΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°, ΠΏΠ°ΠΌΡΡΠΈ, ΡΠ΅ΡΠΈ ΠΈ Π΄ΠΈΡΠΊΠ°. 4 Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΡΠ΄Π° Π½Π° ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ. Π£ Π²Π°Ρ, Π΄ΠΎΠΏΡΡΡΠΈΠΌ, 100 ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠΎΠ² ΠΈ 400 Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΡΠ΄ΠΎΠ². ΠΡΠΎ ΠΎΡΠ΅Π½Ρ ΠΌΠ°Π»ΠΎ.
Π‘ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π»ΡΠ΄ΠΈ ΠΏΡΠΈΠ΄ΡΠΌΠ°Π»ΠΈ, ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅ΡΡΡΡ Π±ΠΎΠ»Π΅Π΅ Π΄Π΅ΡΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈΠ·ΠΌΠ΅ΡΡΡΡ Π·Π°Π³ΡΡΠ·ΠΊΡ Π½Π΅ Π²ΡΠ΅Π³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°, Π° Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ½ΠΎΠ³ΠΎ ΡΠ΄ΡΠ°. ΠΡΠ»ΠΈ Ρ Π²Π°Ρ Π΅ΡΡΡ 40 ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ½ΡΡ ΡΠ΄Π΅Ρ, ΡΠΎ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ, Ρ Π²Π°Ρ ΠΏΠΎΡΠ²Π»ΡΠ΅ΡΡΡ Π² 40 ΡΠ°Π· Π±ΠΎΠ»ΡΡΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΡΠ΄ΠΎΠ² Π΄Π»Ρ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°.
ΠΠΎ ΡΡΠΎ Π΅ΡΠ΅ Π½Π΅ Π²ΡΠ΅. Π£ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ½ΠΎΠ³ΠΎ ΡΠ΄ΡΠ° ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΉ ΡΠ°ΠΊΠΈΡ , ΠΊΠ°ΠΊ idle, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ ΠΏΡΠΎΡΡΠ°ΠΈΠ²Π°Π΅Ρ. Π ΡΠ°ΠΊΠΆΠ΅ ΡΠ°Π±ΠΎΡΠ° Π² user space, ΡΠ°Π±ΠΎΡΠ° Π² kernel space ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ. Π ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΡΠ°ΠΊΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΡΠΎΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅ΡΡΡΡ, ΠΊΠ°ΠΊ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΡΡΠ΄. ΠΡΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅Ρ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΡΠ΄ΠΎΠ² Π² 7-8 ΡΠ°Π·.
Π£ Π½Π°Ρ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ ΠΌΠ΅ΡΡΠΈΠΊΠΈ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΎΡΡ 40 Ρ 8 = 320 ΠΌΠ΅ΡΡΠΈΠΊ ΡΠΎΠ»ΡΠΊΠΎ Π½Π° ΠΎΠ΄ΠΈΠ½ ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ. Π£ΠΌΠ½ΠΎΠΆΠ°Π΅ΠΌ Π½Π° 100, ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ 32 000 Π²ΠΌΠ΅ΡΡΠΎ 400.
ΠΠΎΡΠΎΠΌ ΠΏΠΎΡΠ²ΠΈΠ»ΡΡ Kubernetes. Π Π²ΡΠ΅ Π΅ΡΠ΅ ΡΡ ΡΠ΄ΡΠΈΠ», ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π² Kubernetes ΠΌΠΎΠΆΠ΅Ρ Ρ ΠΎΡΡΠΈΡΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ°Π·Π½ΡΡ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ². ΠΠ°ΠΆΠ΄ΡΠΉ ΡΠ΅ΡΠ²ΠΈΡ Π² Kubernetes ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· ΠΌΠ½ΠΎΠ³ΠΈΡ ΠΏΠΎΠ΄ΠΎΠ². Π Π²ΡΠ΅ ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΡΡ. ΠΡΠΎΠΌΠ΅ ΡΡΠΎΠ³ΠΎ Ρ Π½Π°Ρ Π΅ΡΡΡ ΠΏΠΎΡΡΠΎΡΠ½Π½ΡΠΉ deployment Π½ΠΎΠ²ΡΡ Π²Π΅ΡΡΠΈΠΉ Π²Π°ΡΠΈΡ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ². ΠΠ»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π½ΠΎΠ²ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ Π½ΡΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π½ΠΎΠ²ΡΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΡΡΠ΄Ρ. Π ΠΈΡΠΎΠ³Π΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΡΠ΄ΠΎΠ² ΡΠ°ΡΡΠ΅Ρ ΡΠΊΡΠΏΠΎΠ½Π΅Π½ΡΠΈΠ°Π»ΡΠ½ΠΎ ΠΈ ΠΌΡ ΡΡΠ°Π»ΠΊΠΈΠ²Π°Π΅ΠΌΡΡ Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΡΠ΄ΠΎΠ², ΠΊΠΎΡΠΎΡΠ°Ρ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ high-cardinality. VictoriaMetrics Ρ Π½Π΅ΠΉ ΡΡΠΏΠ΅ΡΠ½ΠΎ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΡΡΡ ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½ΡΡ Π΄Π»Ρ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΡΠ΄ΠΎΠ².
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ high churn rate. ΠΠ·-Π·Π° ΡΠ΅Π³ΠΎ ΠΏΠΎΡΠ²Π»ΡΠ΅ΡΡΡ high churn rate Π½Π° production? ΠΠΎΡΠΎΠΌΡ ΡΡΠΎ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π»Π΅ΠΉΠ±Π»ΠΎΠ² ΠΈ ΡΠ΅Π³ΠΎΠ² ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ ΠΌΠ΅Π½ΡΡΡΡΡ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π²ΠΎΠ·ΡΠΌΠ΅ΠΌ Kubernetes, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π΅ΡΡΡ ΠΏΠΎΠ½ΡΡΠΈΠ΅ deployment
, Ρ. Π΅. ΠΊΠΎΠ³Π΄Π° Π²ΡΠΊΠ°ΡΡΠ²Π°Π΅ΡΡΡ Π½ΠΎΠ²Π°Ρ Π²Π΅ΡΡΠΈΡ Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ Kubernetes ΠΏΠΎΡΠ΅ΠΌΡ-ΡΠΎ ΡΠ΅ΡΠΈΠ»ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ idβΡΠΊΡ deployment’Π° Π² label.
Π ΡΠ΅ΠΌΡ ΡΡΠΎ ΠΏΡΠΈΠ²Π΅Π»ΠΎ? Π ΡΠΎΠΌΡ, ΡΡΠΎ ΠΏΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π½ΠΎΠ²ΠΎΠΌ deployment’Π΅ Ρ Π½Π°Ρ Π²ΡΠ΅ ΡΡΠ°ΡΡΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΡΡΠ΄Ρ ΠΏΡΠ΅ΡΡΠ²Π°ΡΡΡΡ, Π° Π²ΠΌΠ΅ΡΡΠΎ Π½ΠΈΡ
Π½Π°ΡΠΈΠ½Π°ΡΡΡΡ Π½ΠΎΠ²ΡΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΡΡΠ΄Ρ Ρ Π½ΠΎΠ²ΡΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ Π»Π΅ΠΉΠ±Π»Π° deployment_id
. Π’Π°ΠΊΠΈΡ
ΡΡΠ΄ΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠΎΡΠ½ΠΈ ΡΡΡΡΡ ΠΈ Π΄Π°ΠΆΠ΅ ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Ρ.
ΠΠ°ΠΆΠ½Π°Ρ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡ Π²ΡΠ΅Π³ΠΎ ΡΡΠΎΠ³ΠΎ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΎΠ±ΡΠ΅Π΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΡΠ΄ΠΎΠ² ΡΠ°ΡΡΠ΅Ρ, Π½ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΡΠ΄ΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π² Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ Π°ΠΊΡΠΈΠ²Π½Ρ, Π½Π° ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΈΡ ΠΎΠ΄ΡΡ Π΄Π°Π½Π½ΡΠ΅, ΠΎΡΡΠ°Π΅ΡΡΡ ΠΏΠΎΡΡΠΎΡΠ½Π½ΡΠΌ. Π’Π°ΠΊΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ β high churn rate.
ΠΡΠ½ΠΎΠ²Π½Π°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° high churn rate Π² ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ ΠΏΠΎΡΡΠΎΡΠ½Π½ΡΡ ΡΠΊΠΎΡΠΎΡΡΡ ΠΏΠΎΠΈΡΠΊΠ° Π²ΡΠ΅Ρ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΡΠ΄ΠΎΠ² ΠΏΠΎ Π·Π°Π΄Π°Π½Π½ΠΎΠΌΡ Π½Π°Π±ΠΎΡΡ Π»Π΅ΠΉΠ±Π»ΠΎΠ² Π·Π° ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π» Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ. ΠΠ±ΡΡΠ½ΠΎ ΡΡΠΎ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π» Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π·Π° ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΡΠ°Ρ ΠΈΠ»ΠΈ Π·Π° ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ Π΄Π΅Π½Ρ.
ΠΠ°ΠΊ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΡΠ΅ΡΠΈΡΡ? ΠΠΎΡ ΠΏΠ΅ΡΠ²ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ. ΠΡΠΎ ΡΠ°Π·Π΄Π΅Π»ΡΡΡ ΠΈΠ½Π²Π΅ΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΈΠ½Π΄Π΅ΠΊΡ Π½Π° Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΡΠ΅ ΡΠ°ΡΡΠΈ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ. Π’. Π΅. ΠΏΡΠΎΡ ΠΎΠ΄ΠΈΡ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π» Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, Π·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°Π΅ΠΌ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΠΈΠ½Π²Π΅ΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠΌ ΡΠ΅ΠΊΡΡΠΈΠΌ. Π ΡΠΎΠ·Π΄Π°Π΅ΠΌ Π½ΠΎΠ²ΡΠΉ ΠΈΠ½Π²Π΅ΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΈΠ½Π΄Π΅ΠΊΡ. ΠΡΠΎΡ ΠΎΠ΄ΠΈΡ Π΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π» Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, ΡΠΎΠ·Π΄Π°Π΅ΠΌ Π΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΠΈ Π΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½.
Π ΠΏΡΠΈ Π²ΡΠ±ΠΎΡΠΊΠ΅ ΠΈΠ· ΡΡΠΈΡ ΠΈΠ½Π²Π΅ΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ² ΠΌΡ Π½Π°Ρ ΠΎΠ΄ΠΈΠΌ Π½Π°Π±ΠΎΡ ΠΈΠ½Π²Π΅ΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠΏΠ°Π΄Π°ΡΡ Π² Π·Π°Π΄Π°Π½Π½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π». Π, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ, Π²ΡΠ±ΠΈΡΠ°Π΅ΠΌ ΠΎΡΡΡΠ΄Π° id Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΡΠ΄ΠΎΠ².
ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΡΡ ΡΠ΅ΡΡΡΡΡ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π½Π°ΠΌ Π½Π΅ Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΎΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ ΡΠ°ΡΡΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΠΏΠΎΠΏΠ°Π΄Π°ΡΡ Π² Π·Π°Π΄Π°Π½Π½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π». Π’. Π΅. ΠΎΠ±ΡΡΠ½ΠΎ, Π΅ΡΠ»ΠΈ ΠΌΡ Π²ΡΠ±ΠΈΡΠ°Π΅ΠΌ Π΄Π°Π½Π½ΡΠ΅ Π·Π° ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΡΠ°Ρ, ΡΠΎ Π·Π° ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Ρ ΠΌΡ ΠΏΡΠΎΠΏΡΡΠΊΠ°Π΅ΠΌ Π·Π°ΠΏΡΠΎΡΡ.
ΠΡΡΡ Π΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½ Π²Π°ΡΠΈΠ°Π½Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ. ΠΡΠΎ Ρ ΡΠ°Π½ΠΈΡΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π΄Π½Ρ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ id Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΡΠ΄ΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΡΡΡΠ΅ΡΠΈΠ»ΠΈΡΡ Π·Π° ΡΡΠΎΡ Π΄Π΅Π½Ρ.
ΠΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²ΠΎ ΡΡΠΎΠ³ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΌ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΌΡ Π½Π΅ Π΄ΡΠ±Π»ΠΈΡΡΠ΅ΠΌ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎΠ± Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΡΠ΄Π°Ρ , ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΠΈΡΡΠ΅Π·Π°ΡΡ Ρ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ. ΠΠ½ΠΈ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ Π½Π°Ρ ΠΎΠ΄ΡΡΡΡ ΠΈ Π½Π΅ ΠΌΠ΅Π½ΡΡΡΡΡ.
ΠΠ΅Π΄ΠΎΡΡΠ°ΡΠΎΠΊ Π² ΡΠΎΠΌ, ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΠ»ΠΎΠΆΠ½Π΅Π΅ Π² ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΈ ΡΠ»ΠΎΠΆΠ½Π΅Π΅ Π² Π΄Π΅Π±Π°Π³Π΅. Π VictoriaMetrics Π²ΡΠ±ΡΠ°Π»Π° ΡΡΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅. Π’Π°ΠΊ ΡΠ»ΠΎΠΆΠΈΠ»ΠΎΡΡ ΠΈΡΡΠΎΡΠΈΡΠ΅ΡΠΊΠΈ. Π’Π°ΠΊΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΠΎΠΆΠ΅ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΡΠ΅Π±Ρ Π½Π΅ΠΏΠ»ΠΎΡ ΠΎ, ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΌ. ΠΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΡΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π½Π΅ Π±ΡΠ»ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ ΠΈΠ·-Π·Π° ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡΡΡ Π΄ΡΠ±Π»ΠΈΡΠΎΠ²Π°ΡΡ Π΄Π°Π½Π½ΡΠ΅ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ partition Π΄Π»Ρ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΡΠ΄ΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡΡΡ, Ρ. Π΅. ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΠΈΡΡΠ΅Π·Π°ΡΡ Ρ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ. VictoriaMetrics Π±ΡΠ»Π° Π² ΠΏΠ΅ΡΠ²ΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π° ΠΏΠΎ ΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΡ Π΄ΠΈΡΠΊΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π°, ΠΈ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΡ ΡΠ΄ΡΠ°Π»Π° ΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΠ΅ Π΄ΠΈΡΠΊΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π°. Π Π²ΠΎΡ ΡΡΠ° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π»ΡΡΡΠ΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π΄Π»Ρ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΡ Π΄ΠΈΡΠΊΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π°, ΠΏΠΎΡΡΠΎΠΌΡ ΠΎΠ½Π° Π±ΡΠ»Π° Π²ΡΠ±ΡΠ°Π½Π°.
ΠΡΠΈΡΠ»ΠΎΡΡ Ρ Π½Π΅ΠΉ Π±ΠΎΡΠΎΡΡΡΡ. ΠΠΎΡΡΠ±Π° Π·Π°ΠΊΠ»ΡΡΠ°Π»Π°ΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π² Π΄Π°Π½Π½ΠΎΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π½ΡΠΆΠ½ΠΎ Π²ΡΠ΅ ΡΠ°Π²Π½ΠΎ Π²ΡΠ±ΠΈΡΠ°ΡΡ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π±ΠΎΠ»ΡΡΠ΅Π΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ timeseries_ids
Π΄Π»Ρ Π΄Π°Π½Π½ΡΡ
, ΡΠ΅ΠΌ, ΠΊΠΎΠ³Π΄Π° ΠΈΠ½Π²Π΅ΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΈΠ½Π΄Π΅ΠΊΡ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ.
ΠΠ°ΠΊ ΠΌΡ ΡΠ΅ΡΠΈΠ»ΠΈ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ? ΠΡ Π΅Π΅ ΡΠ΅ΡΠΈΠ»ΠΈ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ β ΠΏΡΡΠ΅ΠΌ ΡΠΎΡ
ΡΠ°Π½Π΅Π½ΠΈΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ
ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠ² Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
ΡΡΠ΄ΠΎΠ² Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ ΠΈΠ½Π²Π΅ΡΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΠ° Π²ΠΌΠ΅ΡΡΠΎ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ°. Π’. Π΅. Ρ Π½Π°Ρ Π΅ΡΡΡ ΠΊΠ»ΡΡ label=value
, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΡΡΠ΅ΡΠ°Π΅ΡΡΡ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΌ ΡΡΠ΄Ρ. Π ΡΠ΅ΠΏΠ΅ΡΡ ΠΌΡ ΡΠΎΡ
ΡΠ°Π½ΡΠ΅ΠΌ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ timeseries_ids
Π² ΠΎΠ΄Π½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ.
ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ. Π Π°Π½ΡΡΠ΅ Ρ Π½Π°Ρ Π±ΡΠ»ΠΎ N Π·Π°ΠΏΠΈΡΠ΅ΠΉ, Π° ΡΠ΅ΠΏΠ΅ΡΡ Ρ Π½Π°Ρ Π΅ΡΡΡ ΠΎΠ΄Π½Π° Π·Π°ΠΏΠΈΡΡ, ΠΏΡΠ΅ΡΠΈΠΊΡ Ρ ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΠ°ΠΊΠΎΠΉ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ Ρ Π²ΡΠ΅Ρ ΠΎΡΡΠ°Π»ΡΠ½ΡΡ . Π£ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΉ Π·Π°ΠΏΠΈΡΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π²ΡΠ΅ id Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΡΠ΄ΠΎΠ².
ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΎ ΡΠ²Π΅Π»ΠΈΡΠΈΡΡ ΡΠΊΠΎΡΠΎΡΡΡ ΡΠΊΠ°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΈΠ½Π²Π΅ΡΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΠ° Π΄ΠΎ 10 ΡΠ°Π·. Π ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΎ ΡΠΌΠ΅Π½ΡΡΠΈΡΡ ΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΠΈ Π΄Π»Ρ ΠΊΡΡΠ°, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΠ΅ΠΏΠ΅ΡΡ ΠΌΡ Ρ
ΡΠ°Π½ΠΈΠΌ ΡΡΡΠΎΠΊΡ label=value
ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π· Π² ΠΊΡΡΠ΅ Π²ΠΌΠ΅ΡΡΠ΅ N ΡΠ°Π·. Π ΡΡΠ° ΡΡΡΠΎΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π±ΠΎΠ»ΡΡΠΎΠΉ, Π΅ΡΠ»ΠΈ Ρ Π²Π°Ρ Π² ΡΠ΅Π³Π°Ρ
ΠΈ labels Ρ
ΡΠ°Π½ΡΡΡΡ Π΄Π»ΠΈΠ½Π½ΡΠ΅ ΡΡΡΠΎΡΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π»ΡΠ±ΠΈΡ ΡΡΠ΄Π° ΠΏΠΈΡ
Π°ΡΡ Kubernetes.
ΠΡΠ΅ ΠΎΠ΄ΠΈΠ½ Π²Π°ΡΠΈΠ°Π½Ρ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΡ ΠΏΠΎΠΈΡΠΊΠ° ΠΏΠΎ ΠΈΠ½Π²Π΅ΡΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΌΡ ΠΈΠ½Π΄Π΅ΠΊΡΡ β ΡΡΠΎ ΡΠ°ΡΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ
ΠΈΠ½Π²Π΅ΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ
ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ² Π²ΠΌΠ΅ΡΡΠΎ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ ΡΠ°ΡΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ
ΠΌΠ΅ΠΆΠ΄Ρ Π½ΠΈΠΌΠΈ ΠΏΠΎ ΠΊΠ»ΡΡΡ. ΠΡΠΎ Π½Π°Π±ΠΎΡ key=value
ΠΏΠ°Ρ. Π’. Π΅. Ρ Π½Π°Ρ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΡΡ
ΠΈΠ½Π²Π΅ΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ
ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠΏΡΠ°ΡΠΈΠ²Π°ΡΡ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎ Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ
ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°Ρ
. ΠΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠ΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ»ΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π² ΠΎΠ΄Π½ΠΎΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ½ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅, Ρ. Π΅. ΡΠΊΠ°Π½ΠΈΡΠΎΠ²Π°ΡΡ Π΄Π°Π½Π½ΡΠ΅ ΡΠΎΠ»ΡΠΊΠΎ Π½Π° ΠΎΠ΄Π½ΠΎΠΌ ΡΠ΄ΡΠ΅. ΠΠ°Π½Π½ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΊΠ°Π½ΠΈΡΠΎΠ²Π°ΡΡ Π΄Π°Π½Π½ΡΠ΅ ΡΡΠ°Π·Ρ Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ
ΡΠ΄ΡΠ°Ρ
, ΠΊΠ°ΠΊ ΡΡΠΎ Π»ΡΠ±ΠΈΡ Π΄Π΅Π»Π°ΡΡ ClickHouse. ΠΡΠΎ ΠΌΡ ΠΏΠ»Π°Π½ΠΈΡΡΠ΅ΠΌ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ.
Π ΡΠ΅ΠΏΠ΅ΡΡ Π²Π΅ΡΠ½Π΅ΠΌΡΡ ΠΊ Π½Π°ΡΠΈΠΌ Π±Π°ΡΠ°Π½Π°ΠΌ β ΠΊ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΠ΅ΡΠ΅ΡΠ΅ΡΠ΅Π½ΠΈΡ timeseries_ids
. Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ. ΠΡΠ° ΡΡΠ½ΠΊΡΠΈΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π½Π°Ρ
ΠΎΠ΄ΠΈΡΡ timeseries_ids
Π΄Π»Ρ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π½Π°Π±ΠΎΡΠ° label=value
.
ΠΠ΅ΡΠ²ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ β ΡΡΠΎ Π½Π°ΠΈΠ²Π½Π°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ. ΠΠ²Π° Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΡ
ΡΠΈΠΊΠ»Π°. ΠΠΎΡ ΠΌΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ Π½Π° Π²Ρ
ΠΎΠ΄Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ intersectInts
Π΄Π²Π° slices β a
ΠΈ b
. ΠΠ° Π²ΡΡ
ΠΎΠ΄Π΅ ΠΎΠ½Π° Π΄ΠΎΠ»ΠΆΠ½Π° Π²Π΅ΡΠ½ΡΡΡ Π½Π°ΠΌ ΠΏΠ΅ΡΠ΅ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΡΠΈΡ
slices.
ΠΠ°ΠΈΠ²Π½Π°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ°ΠΊ. ΠΡ ΠΏΡΠΎΡ
ΠΎΠ΄ΠΈΠΌΡΡ ΠΏΠΎ Π²ΡΠ΅ΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌ ΠΈΠ· slice a
, Π²Π½ΡΡΡΠΈ ΡΡΠΎΠ³ΠΎ ΡΠΈΠΊΠ»Π° ΠΏΡΠΎΡ
ΠΎΠ΄ΠΈΠΌΡΡ ΠΏΠΎ Π²ΡΠ΅ΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌ slice b
. Π ΡΡΠ°Π²Π½ΠΈΠ²Π°Π΅ΠΌ ΠΈΡ
. ΠΡΠ»ΠΈ ΠΎΠ½ΠΈ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡ, Π·Π½Π°ΡΠΈΡ, ΠΌΡ Π½Π°ΡΠ»ΠΈ ΠΏΠ΅ΡΠ΅ΡΠ΅ΡΠ΅Π½ΠΈΠ΅. Π ΡΠΎΡ
ΡΠ°Π½ΡΠ΅ΠΌ Π΅Π³ΠΎ Π² result
.
ΠΠ°ΠΊΠΈΠ΅ Π΅ΡΡΡ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠΈ? ΠΠ²Π°Π΄ΡΠ°ΡΠΈΡΠ½Π°Ρ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ β ΡΡΠΎ Π³Π»Π°Π²Π½ΡΠΉ Π΅Π΅ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΠΊ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ Ρ Π²Π°Ρ ΡΠ°Π·ΠΌΠ΅ΡΡ slice a
ΠΈ b
ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡ ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Ρ, ΡΠΎ ΡΡΠ° ΡΡΠ½ΠΊΡΠΈΡ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π²Π°ΠΌ Π½Π΅ Π²Π΅ΡΠ½Π΅Ρ ΠΎΡΠ²Π΅Ρ. ΠΠΎΡΠΎΠΌΡ ΡΡΠΎ Π΅ΠΉ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΡΠ΄Π΅Π»Π°ΡΡ ΠΎΠ΄ΠΈΠ½ ΡΡΠΈΠ»Π»ΠΈΠΎΠ½ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΉ, ΡΡΠΎ ΠΎΡΠ΅Π½Ρ ΠΌΠ½ΠΎΠ³ΠΎ Π΄Π°ΠΆΠ΅ Π΄Π»Ρ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠΎΠ².
ΠΡΠΎΡΠ°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΎΡΠ½ΠΎΠ²Π°Π½Π° Π½Π° map. ΠΡ ΡΠΎΠ·Π΄Π°Π΅ΠΌ map. ΠΠΎΠΌΠ΅ΡΠ°Π΅ΠΌ Π² ΡΡΡ map Π²ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΈΠ· slice a
. ΠΠ°ΡΠ΅ΠΌ ΠΏΡΠΎΠ±Π΅Π³Π°Π΅ΠΌΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΌ ΡΠΈΠΊΠ»ΠΎΠΌ ΠΏΠΎ slice b
. Π ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ β Π΅ΡΡΡ Π»ΠΈ ΡΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΈΠ· slice b
Π² map. ΠΡΠ»ΠΈ ΠΎΠ½ΠΎ Π΅ΡΡΡ, ΡΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ Π΅Π³ΠΎ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ.
ΠΠ°ΠΊΠΈΠ΅ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π°? ΠΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²ΠΎ Π² ΡΠΎΠΌ, ΡΡΠΎ ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π»ΠΈΠ½Π΅ΠΉΠ½Π°Ρ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ. Π’. Π΅. ΡΡΠ½ΠΊΡΠΈΡ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π±ΡΡΡΡΠ΅Π΅ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡΡ Π΄Π»Ρ Π±ΠΎΠ»ΡΡΠΈΡ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠ² slices. ΠΠ»Ρ ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ° slice ΡΡΠ° ΡΡΠ½ΠΊΡΠΈΡ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡΡ Π·Π° 2 ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Π° ΠΈΡΠ΅ΡΠ°ΡΠΈΠΉ, Π² ΠΎΡΠ»ΠΈΡΠΈΠΈ ΠΎΡ ΡΡΠΈΠ»Π»ΠΈΠΎΠ½Π° ΠΈΡΠ΅ΡΠ°ΡΠΈΠΉ, ΠΊΠ°ΠΊ Π² ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ.
Π Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΠΊ Π² ΡΠΎΠΌ, ΡΡΠΎ ΡΡΠ° ΡΡΠ½ΠΊΡΠΈΡ ΡΡΠ΅Π±ΡΠ΅Ρ Π±ΠΎΠ»ΡΡΠ΅ ΠΏΠ°ΠΌΡΡΠΈ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΡΠΎΠ·Π΄Π°ΡΡ ΡΡΡ map.
ΠΡΠΎΡΠΎΠΉ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΠΊ β ΡΡΠΎ Π±ΠΎΠ»ΡΡΠΎΠΉ overhead Π½Π° Ρ Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅. ΠΡΠΎΡ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΠΊ Π½Π΅ ΠΎΡΠ΅Π½Ρ ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΡΠΉ. Π Π΄Π»Ρ Π½Π°Ρ ΠΎΠ½ ΡΠΎΠΆΠ΅ Π±ΡΠ» Π½Π΅ ΠΎΡΠ΅Π½Ρ ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΡΠΌ, ΠΏΠΎΡΡΠΎΠΌΡ Π²Π½Π°ΡΠ°Π»Π΅ Π² VictoriaMetrics ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ intersection Π±ΡΠ»Π° ΡΠ΅ΡΠ΅Π· map. ΠΠΎ ΠΏΠΎΡΠΎΠΌ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Π»ΠΎ, ΡΡΠΎ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ ΡΡΠ°ΡΠΈΡΡΡ Π½Π° Π·Π°ΠΏΠΈΡΡ Π² map ΠΈ Π½Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΡ Π½Π°Π»ΠΈΡΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π² ΡΡΠΎΠΉ map.
ΠΠΎΡΠ΅ΠΌΡ Π² ΡΡΠΈΡ ΠΌΠ΅ΡΡΠ°Ρ ΡΡΠ°ΡΠΈΡΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ? ΠΠΎΡΠΎΠΌΡ ΡΡΠΎ Π² Π΄Π°Π½Π½ΡΡ ΡΡΡΠΎΡΠΊΠ°Ρ Go ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Ρ Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ. Π’. Π΅. ΠΎΠ½ Π²ΡΡΠΈΡΠ»ΡΠ΅Ρ hash ΠΎΡ ΠΊΠ»ΡΡΠ°, ΡΡΠΎΠ±Ρ ΠΎΠ±ΡΠ°ΡΠΈΡΡΡΡ ΠΏΠΎΡΠΎΠΌ ΠΏΠΎ Π·Π°Π΄Π°Π½Π½ΠΎΠΌΡ ΠΈΠ½Π΄Π΅ΠΊΡΡ Π² HashMap. ΠΠΏΠ΅ΡΠ°ΡΠΈΡ ΠΏΠΎ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ hashβΠ° Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π·Π° Π΄Π΅ΡΡΡΠΊΠΈ Π½Π°Π½ΠΎΡΠ΅ΠΊΡΠ½Π΄. ΠΡΠΎ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ Π΄Π»Ρ VictoriaMetrics.
Π― ΡΠ΅ΡΠΈΠ» ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ bitset, ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΡΠ»ΡΡΠ°Ρ. ΠΠΎΡ ΠΊΠ°ΠΊ ΡΠ΅ΠΏΠ΅ΡΡ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΠΏΠ΅ΡΠ΅ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π΄Π²ΡΡ
slices. Π’ΡΡ ΡΠΎΠ·Π΄Π°Π΅ΠΌ bitset. ΠΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ Π² Π½Π΅Π³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΈΠ· ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ slice. ΠΠΎΡΠΎΠΌ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ Π½Π°Π»ΠΈΡΠΈΠ΅ ΡΡΠΈΡ
ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π²ΠΎ Π²ΡΠΎΡΠΎΠΌ slice. Π Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ ΠΈΡ
Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ. Π’. Π΅. ΠΏΠΎΡΡΠΈ Π½Π΅ ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ°. ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠ΅, ΡΡΠΎ ΠΌΡ Π·Π΄Π΅ΡΡ Π·Π°ΠΌΠ΅Π½ΠΈΠ»ΠΈ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΊ map ΠΊΠ°ΡΡΠΎΠΌΠ½ΡΠΌΠΈ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ add
ΠΈ has
.
Π‘ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ Π²Π·Π³Π»ΡΠ΄Π° ΠΊΠ°ΠΆΠ΅ΡΡΡ, ΡΡΠΎ ΡΡΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅ΠΉ, Π΅ΡΠ»ΠΈ ΡΠ°Π½ΡΡΠ΅ ΡΠ°ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»Π°ΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½Π°Ρ map, Π° ΡΡΡ Π΅ΡΠ΅ ΠΊΠ°ΠΊΠΈΠ΅-ΡΠΎ ΡΡΠ½ΠΊΡΠΈΠΈ Π²ΡΠ·ΡΠ²Π°ΡΡΡΡ, Π½ΠΎ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΡΡΠΎ ΡΡΠ° ΡΡΡΠΊΠ° ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π² 10 ΡΠ°Π· Π±ΡΡΡΡΠ΅Π΅, ΡΠ΅ΠΌ ΡΡΠ°Π½Π΄Π°ΡΡΠ½Π°Ρ map Π΄Π»Ρ ΡΠ»ΡΡΠ°Ρ Ρ VictoriaMetrics.
ΠΡΠΎΠΌΠ΅ ΡΡΠΎΠ³ΠΎ, ΠΎΠ½Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π³ΠΎΡΠ°Π·Π΄ΠΎ ΠΌΠ΅Π½ΡΡΠ΅ ΠΏΠ°ΠΌΡΡΠΈ ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ Π½Π° map. ΠΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΌΡ Ρ ΡΠ°Π½ΠΈΠΌ Π·Π΄Π΅ΡΡ Π±ΠΈΡΡ Π²ΠΌΠ΅ΡΡΠΎ Π²ΠΎΡΡΠΌΠΈΠ±Π°ΠΉΡΠΎΠ²ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ.
ΠΠ΅Π΄ΠΎΡΡΠ°ΡΠΎΠΊ Ρ ΡΠ°ΠΊΠΎΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΎΠ½Π° Π½Π΅ ΡΠ°ΠΊΠ°Ρ ΠΎΡΠ΅Π²ΠΈΠ΄Π½Π°Ρ, Π½Π΅ ΡΡΠΈΠ²ΠΈΠ°Π»ΡΠ½Π°Ρ.
ΠΡΠ΅ ΠΎΠ΄ΠΈΠ½ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΠΊ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΌΠΎΠ³ΡΡ Π½Π΅ Π·Π°ΠΌΠ΅ΡΠ°ΡΡ β ΡΡΠΎ ΡΠΎ, ΡΡΠΎ Π΄Π°Π½Π½Π°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠ»ΠΎΡ ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π² Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠ»ΡΡΠ°ΡΡ . Π’. Π΅. ΠΎΠ½Π° ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π° Π΄Π»Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΠ»ΡΡΠ°Ρ, Π΄Π»Ρ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΠ»ΡΡΠ°Ρ ΠΏΠ΅ΡΠ΅ΡΠ΅ΡΠ΅Π½ΠΈΡ ids Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΡΠ΄ΠΎΠ² VictoriaMetrics. ΠΡΠΎ Π½Π΅ Π·Π½Π°ΡΠΈΡ, ΡΡΠΎ ΠΎΠ½Π° ΠΏΠΎΠ΄ΠΎΠΉΠ΄Π΅Ρ Π΄Π»Ρ Π²ΡΠ΅Ρ ΡΠ»ΡΡΠ°Π΅Π². ΠΡΠ»ΠΈ Π΅Π΅ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ, ΡΠΎ ΠΏΠΎΠ»ΡΡΠΈΠΌ Π½Π΅ ΠΏΡΠΈΡΠΎΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ, Π° out of memory error ΠΈ Π·Π°ΠΌΠ΅Π΄Π»Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ.
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π΄Π°Π½Π½ΠΎΠΉ ΡΡΡΡΠΊΡΡΡΡ. ΠΡΠ»ΠΈ Ρ
ΠΎΡΠΈΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ, ΡΠΎ ΠΎΠ½Π° Π½Π°Ρ
ΠΎΠ΄ΠΈΡΡΡ Π² ΠΈΡΡ
ΠΎΠ΄Π½ΠΈΠΊΠ°Ρ
VictoriaMetrics, Π² ΠΏΠ°ΠΏΠΊΠ΅ timeseries_id
ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΈΠ· ΡΠ΅Π±Ρ 64-Π±ΠΈΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, Π³Π΄Π΅ ΠΏΠ΅ΡΠ²ΡΠ΅ 32 Π±ΠΈΡΠ° Π² ΠΎΡΠ½ΠΎΠ²Π½ΡΠΌ ΠΏΠΎΡΡΠΎΡΠ½Π½ΡΠ΅ ΠΈ ΠΌΠ΅Π½ΡΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠ΅ 32 Π±ΠΈΡΠ°.
ΠΡΠ° ΡΡΡΡΠΊΡΡΡΠ° Π΄Π°Π½Π½ΡΡ Π½Π΅ Ρ ΡΠ°Π½ΠΈΡΡΡ Π½Π° Π΄ΠΈΡΠΊΠ΅, ΠΎΠ½Π° ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ Π² ΠΏΠ°ΠΌΡΡΠΈ.
ΠΠΎΡ Π΅Π΅ API. ΠΠ½ Π½Π΅ ΠΎΡΠ΅Π½Ρ ΡΠ»ΠΎΠΆΠ½ΡΠΉ. API ΠΏΠΎΠ΄ΠΎΠ³Π½Π°Π½ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎΠ΄ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ VictoriaMetrics. Π’. Π΅. ΡΡΡ Π½Π΅Ρ Π»ΠΈΡΠ½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ. ΠΠ΄Π΅ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ²Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ VictoriaMetrics.
ΠΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ add
, ΠΊΠΎΡΠΎΡΠ°Ρ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ Π½ΠΎΠ²ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ. ΠΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ has
, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ Π½ΠΎΠ²ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ. Π Π΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ del
, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠ΄Π°Π»ΡΠ΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ. ΠΡΡΡ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ len
, ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠ°Π·ΠΌΠ΅Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π°. Π€ΡΠ½ΠΊΡΠΈΡ clone
ΠΊΠ»ΠΎΠ½ΠΈΡΡΠ΅Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ. Π ΡΡΠ½ΠΊΡΠΈΡ appendto
ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅Ρ ΡΡΠΎΡ ΡΠ΅Ρ Π² slice timeseries_ids
.
ΠΠΎΡ ΠΊΠ°ΠΊ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΡΠΎΠΉ ΡΡΡΡΠΊΡΡΡΡ Π΄Π°Π½Π½ΡΡ . Π set Π΅ΡΡΡ Π΄Π²Π° ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°:
-
ItemsCount
β ΡΡΠΎ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΠΏΠΎΠ»Π΅, ΡΡΠΎΠ±Ρ Π±ΡΡΡΡΠΎ Π²Π΅ΡΠ½ΡΡΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π² set. ΠΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π±Ρ ΠΎΠ±ΠΎΠΉΡΠΈΡΡ Π±Π΅Π· ΡΡΠΎΠ³ΠΎ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»Ρ, Π½ΠΎ Π΅Π³ΠΎ ΠΏΡΠΈΡΠ»ΠΎΡΡ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΡΠ΄Π°, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ 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-ΠΊΠΈΠ»ΠΎΠ±Π°ΠΉΡΠ½Π°Ρ ΡΡΡΡΠΊΡΡΡΠ°.
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΡΡΠΎΠΉ ΡΡΡΡΠΊΡΡΡΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ Π½ΠΎΠ²ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ.
ΠΡΠ΅ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Ρ uint64
Π·Π½Π°ΡΠ΅Π½ΠΈΡ. ΠΡΡΠΈΡΠ»ΡΠ΅ΠΌ Π²Π΅ΡΡ
Π½ΠΈΠ΅ 32 Π±ΠΈΡΠ°, Π²ΡΡΠΈΡΠ»ΡΠ΅ΠΌ Π½ΠΈΠΆΠ½ΠΈΠ΅ 32 Π±ΠΈΡΠ°. ΠΡΠΎΡ
ΠΎΠ΄ΠΈΠΌΡΡ ΠΏΠΎ Π²ΡΠ΅ΠΌ buckets
. Π‘ΡΠ°Π²Π½ΠΈΠ²Π°Π΅ΠΌ Π²Π΅ΡΡ
Π½ΠΈΠ΅ 32 Π±ΠΈΡΠ° Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ bucket Ρ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌΡΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ. Π Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΈ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡ, ΡΠΎ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ add
Π² ΡΡΡΡΠΊΡΡΡΠ΅ b32 buckets
. Π Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ ΡΡΠ΄Π° Π½ΠΈΠΆΠ½ΠΈΠ΅ 32 Π±ΠΈΡΠ°. Π Π΅ΡΠ»ΠΈ ΡΡΠΎ Π²Π΅ΡΠ½ΡΠ»ΠΎ true
, ΡΠΎ ΡΡΠΎ Π·Π½Π°ΡΠΈΡ, ΡΡΠΎ ΠΌΡ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ ΡΠ°ΠΊΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠ΄Π° ΠΈ Ρ Π½Π°Ρ ΡΠ°ΠΊΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π½Π΅ Π±ΡΠ»ΠΎ. ΠΡΠ»ΠΈ ΠΎΠ½ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ false
, ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠΆΠ΅ Π±ΡΠ»ΠΎ. ΠΠ°ΡΠ΅ΠΌ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅ΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π² ΡΡΡΡΠΊΡΡΡΠ΅.
ΠΡΠ»ΠΈ ΠΌΡ Π½Π΅ Π½Π°ΡΠ»ΠΈ Π½ΡΠΆΠ½ΡΠΉ bucket
Ρ Π½ΡΠΆΠ½ΡΠΌ hi-Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ, ΡΠΎ ΠΌΡ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ addAlloc
, ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΡΠ΄Π΅Π»Π°Π΅Ρ Π½ΠΎΠ²ΡΠΉ bucket
, Π΄ΠΎΠ±Π°Π²Π»ΡΡ Π΅Π³ΠΎ Π² bucket-ΡΡΡΡΠΊΡΡΡΡ.
ΠΡΠΎ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ b32.add
. ΠΠ½Π° ΠΏΠΎΡ
ΠΎΠΆΠ° Π½Π° ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ. ΠΡ Π²ΡΡΠΈΡΠ»ΡΠ΅ΠΌ ΡΡΠ°ΡΡΠΈΠ΅ 16 Π±ΠΈΡ, ΠΌΠ»Π°Π΄ΡΠΈΠ΅ 16 Π±ΠΈΡ.
ΠΠΎΡΠΎΠΌ ΠΌΡ ΠΏΡΠΎΡ
ΠΎΠ΄ΠΈΠΌΡΡ ΠΏΠΎ Π²ΡΠ΅ΠΌ Π²Π΅ΡΡ
Π½ΠΈΠΌ 16 Π±ΠΈΡΠ°ΠΌ. ΠΠ°Ρ
ΠΎΠ΄ΠΈΠΌ ΡΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΡ. Π ΠΏΡΠΈ ΡΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΠΈ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ ΠΌΠ΅ΡΠΎΠ΄ add, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ Π½Π° ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΡΡΡΠ°Π½ΠΈΡΠ΅ Π΄Π»Ρ bucket16
.
Π Π²ΠΎΡ ΡΠ°ΠΌΡΠΉ Π½ΠΈΠΆΠ½ΠΈΠΉ ΡΡΠΎΠ²Π΅Π½Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½. ΠΡ Π²ΡΡΠΈΡΠ»ΡΠ΅ΠΌ Π΄Π»Ρ uint64
id Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π² slice bit, Π° ΡΠ°ΠΊΠΆΠ΅ bitmask
. ΠΡΠΎ ΠΌΠ°ΡΠΊΠ° Π΄Π»Ρ Π΄Π°Π½Π½ΠΎΠ³ΠΎ 64-Π±ΠΈΡΠ½ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΠΏΠΎ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ Π½Π°Π»ΠΈΡΠΈΠ΅ ΡΡΠΎΠ³ΠΎ Π±ΠΈΡΠ°, Π»ΠΈΠ±ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π΅Π³ΠΎ. ΠΡ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ Π½Π°Π»ΠΈΡΠΈΠ΅ ΡΡΠΎΠ³ΠΎ Π±ΠΈΡΠ°, ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΈ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ Π΅Π³ΠΎ, ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌ Π½Π°Π»ΠΈΡΠΈΠ΅. ΠΠΎΡ ΡΠ°ΠΊΠ°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Ρ Π½Π°Ρ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»Π° ΡΡΠΊΠΎΡΠΈΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΠΏΠ΅ΡΠ΅ΡΠ΅ΡΠ΅Π½ΠΈΡ ids Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
ΡΡΠ΄ΠΎΠ² Π² 10 ΡΠ°Π· ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ ΠΎΠ±ΡΡΠ½ΡΠΌΠΈ maps.
Π VictoriaMetrics ΠΏΠΎΠΌΠΈΠΌΠΎ ΡΡΠΎΠΉ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ Π΅ΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΡΡΠ³ΠΈΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΉ. ΠΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΠΈΠ· ΡΡΠΈΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΉ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ Π½Π΅ ΠΏΡΠΎΡΡΠΎ ΡΠ°ΠΊ, Π° ΠΏΠΎΡΠ»Π΅ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠ΄Π° Π² production.
ΠΡΠΎ Π³Π»Π°Π²Π½ΠΎΠ΅ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ β Π½Π΅ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ, ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Ρ, ΡΡΠΎ Π·Π΄Π΅ΡΡ Π±ΡΠ΄Π΅Ρ ΡΠ·ΠΊΠΎΠ΅ ΠΌΠ΅ΡΡΠΎ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΎΠΊΠ°Π·Π°ΡΡΡΡ, ΡΡΠΎ ΡΠ°ΠΌ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΡΠ·ΠΊΠΎΠ³ΠΎ ΠΌΠ΅ΡΡΠ°. ΠΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ ΠΎΠ±ΡΡΠ½ΠΎ ΡΡ ΡΠ΄ΡΠ°Π΅Ρ ΠΊΠ°ΡΠ΅ΡΡΠ²ΠΎ ΠΊΠΎΠ΄Π°. ΠΠΎΡΡΠΎΠΌΡ ΡΡΠΎΠΈΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΠ»Π΅ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΠΆΠ΅Π»Π°ΡΠ΅Π»ΡΠ½ΠΎ Π² production, ΡΡΠΎΠ±Ρ ΡΡΠΎ Π±ΡΠ»ΠΈ ΡΠ΅Π°Π»ΡΠ½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅. ΠΠΎΠΌΡ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ, ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΠΈΠΊΠΈ VictoriaMetrics ΠΈ ΠΈΠ·ΡΡΠΈΡΡ Π΄ΡΡΠ³ΠΈΠ΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°ΠΌ Π΅ΡΡΡ.
Π£ ΠΌΠ΅Π½Ρ Π²ΠΎΠΏΡΠΎΡ ΠΏΡΠΎ bitset. ΠΡΠ΅Π½Ρ ΠΏΠΎΡ ΠΎΠΆΠ΅ Π½Π° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ C++ vector bool, ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ 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. ΠΠ½ΠΈ Π½Π΅ ΠΎΡΠ΅Π½Ρ ΡΠ΄ΠΎΠ±Π½Ρ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌΠΈ ΡΡΠ΄Π°ΠΌΠΈ ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ
Π Π΅ΡΠ΅ ΠΎΠ΄Π½ΠΎ ΠΎΡΠ»ΠΈΡΠΈΠ΅ β ΡΡΠΎ ΡΠΎ, ΡΡΠΎ Ρ InfluxDB Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΡΡΡΠ°Π½Π½ΠΎΠ²Π°ΡΠ°Ρ ΠΌΠΎΠ΄Π΅Π»Ρ Π΄Π°Π½Π½ΡΡ , Π³Π΄Π΅ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΡΡΠΎΡΠΊΠ΅ ΠΌΠΎΠΆΠ΅Ρ Ρ ΡΠ°Π½ΠΈΡΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ fields Ρ ΡΠ°Π·Π½ΡΠΌ Π½Π°Π±ΠΎΡΠΎΠΌ ΡΠ΅Π³ΠΎΠ². ΠΡΠΈ ΡΡΡΠΎΡΠΊΠΈ Π΄Π΅Π»ΡΡΡΡ Π΅ΡΠ΅ Π½Π° Π²ΡΡΠΊΠΈΠ΅ ΡΠ°Π±Π»ΠΈΡΡ. ΠΠΎΡ ΡΡΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΡΠ»ΠΎΠΆΠ½Π΅Π½ΠΈΡ ΡΡΠ»ΠΎΠΆΠ½ΡΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΡΡ ΡΠ°Π±ΠΎΡΡ Ρ ΡΡΠΎΠΉ Π±Π°Π·ΠΎΠΉ. ΠΠ΅ ΡΠ»ΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΠΈ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ.
Π VictoriaMetrics Π²ΡΠ΅ Π³ΠΎΡΠ°Π·Π΄ΠΎ ΠΏΡΠΎΡΠ΅. Π’Π°ΠΌ ΠΊΠ°ΠΆΠ΄ΡΠΉ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΡΡΠ΄ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΈΠ· ΡΠ΅Π±Ρ ΠΊΠ»ΡΡ-Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅. ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ β ΡΡΠΎ Π½Π°Π±ΠΎΡ ΡΠΎΡΠ΅ΠΊ β (timestamp, value)
, Π° ΠΊΠ»ΡΡ β ΡΡΠΎ Π½Π°Π±ΠΎΡ 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 ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π° ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΉ ΡΠ°Π±ΠΎΡΠ΅ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΠΏΠΎΠ΄ΡΡΠΈΡΡΠ²Π°ΡΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠΎΠ±ΡΡΠΈΠΉ Π² ΡΠΊΠΎΠ»ΡΠ·ΡΡΠ΅ΠΌ ΠΎΠΊΠ½Π΅ Π·Π° ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΡΠ°Ρ. ΠΡΠΎΠ±Π»Π΅ΠΌΠ° Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΏΡΠΈΡΠ»ΠΎΡΡ Π΄Π΅Π»Π°ΡΡ ΠΊΠ°ΡΡΠΎΠΌΠ½ΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° Go, Ρ. Π΅. ΡΠ΅ΡΠ²ΠΈΡ Π΄Π»Ρ ΠΏΠΎΠ΄ΡΡΠ΅ΡΠ° ΡΡΠΎΠΉ ΡΡΡΠΊΠΈ. ΠΡΠΎΡ ΡΠ΅ΡΠ²ΠΈΡ Π±ΡΠ» Π² ΠΈΡΠΎΠ³Π΅ Π½Π΅ΡΡΠΈΠ²ΠΈΠ°Π»ΡΠ½ΡΠΌ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΡΠΎ ΡΠ»ΠΎΠΆΠ½ΠΎ ΡΡΠΈΡΠ°ΡΡ. Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΡΠΎΡΡΠΎΠΉ, Π΅ΡΠ»ΠΈ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΡΠΈΡΠ°ΡΡ ΠΊΠ°ΠΊΠΈΠ΅-ΡΠΎ Π°Π³ΡΠ΅Π³Π°ΡΡ Π½Π° ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Π°Ρ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ. ΠΡΠ»ΠΈ ΠΆΠ΅ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΡΡΠΈΡΠ°ΡΡ ΡΠΎΠ±ΡΡΠΈΡ Π² ΡΠΊΠΎΠ»ΡΠ·ΡΡΠ΅ΠΌ ΠΎΠΊΠ½Π΅, ΡΠΎ ΡΡΠΎ Π½Π΅ ΡΠ°ΠΊ ΠΏΡΠΎΡΡΠΎ, ΠΊΠ°ΠΊ ΠΊΠ°ΠΆΠ΅ΡΡΡ. Π― Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ Π½Π΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ Π΄ΠΎ ΡΠΈΡ ΠΏΠΎΡ Π² ClickHouse ΠΈΠ»ΠΈ Π² timeseries-Π±Π°Π·Π°Ρ , ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΠ»ΠΎΠΆΠ½ΠΎ Π² ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ.
Π Π΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½ Π²ΠΎΠΏΡΠΎΡ. ΠΡ ΡΠ΅ΠΉΡΠ°Ρ Π³ΠΎΠ²ΠΎΡΠΈΠ»ΠΈ ΠΎΠ± ΡΡΡΠ΅Π΄Π½Π΅Π½ΠΈΠΈ, ΠΈ Ρ Π²ΡΠΏΠΎΠΌΠ½ΠΈΠ», ΡΡΠΎ ΠΊΠΎΠ³Π΄Π°-ΡΠΎ Π±ΡΠ»Π° ΡΠ°ΠΊΠ°Ρ ΡΡΡΠΊΠ° ΠΊΠ°ΠΊ Graphite Ρ Π±ΡΠΊΠ΅Π½Π΄ΠΎΠΌ Carbon. Π ΠΎΠ½ ΡΠΌΠ΅Π» ΡΡΠ°ΡΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΏΡΠΎΡΠ΅ΠΆΠΈΠ²Π°ΡΡ, Ρ. Π΅. ΠΎΡΡΠ°Π²Π»ΡΡΡ ΠΎΠ΄Π½Ρ ΡΠΎΡΠΊΡ Π² ΠΌΠΈΠ½ΡΡΡ, ΠΎΠ΄Π½Ρ ΡΠΎΡΠΊΡ Π² ΡΠ°Ρ ΠΈ Ρ. Π΄. Π ΠΏΡΠΈΠ½ΡΠΈΠΏΠ΅, ΡΡΠΎ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΠ΄ΠΎΠ±Π½ΠΎ, Π΅ΡΠ»ΠΈ Π½Π°ΠΌ Π½ΡΠΆΠ½Ρ ΡΡΡΡΠ΅ Π΄Π°Π½Π½ΡΠ΅, ΡΡΠ»ΠΎΠ²Π½ΠΎ Π³ΠΎΠ²ΠΎΡΡ, Π·Π° ΠΌΠ΅ΡΡΡ, Π° Π²ΡΠ΅ ΠΎΡΡΠ°Π»ΡΠ½ΠΎΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΡΠ΅Π΄ΠΈΡΡ. ΠΠΎ Prometheus, VictoriaMetrics ΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ. ΠΠ»Π°Π½ΠΈΡΡΠ΅ΡΡΡ Π»ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ? ΠΡΠ»ΠΈ Π½Π΅Ρ, ΡΠΎ ΠΏΠΎΡΠ΅ΠΌΡ?
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ Π·Π° Π²ΠΎΠΏΡΠΎΡ. ΠΠ°ΡΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ Π΅Π³ΠΎ ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΈΡΠ΅ΡΠΊΠΈ Π·Π°Π΄Π°ΡΡ. Π‘ΠΏΡΠ°ΡΠΈΠ²Π°ΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ ΠΏΡΠΎΡΠ΅ΠΆΠΈΠ²Π°Π½ΠΈΡ (downsampling). Π’ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌ. ΠΠΎ-ΠΏΠ΅ΡΠ²ΡΡ
, ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ ΠΏΠΎΠ΄ downsampling
ΡΡΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ ΡΠ²ΠΎΠ΅: ΠΊΡΠΎ-ΡΠΎ Ρ
ΠΎΡΠ΅Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π»ΡΠ±ΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΡ ΡΠΎΡΠΊΡ Π½Π° Π·Π°Π΄Π°Π½Π½ΠΎΠΌ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Π΅, ΠΊΡΠΎ-ΡΠΎ Ρ
ΠΎΡΠ΅Ρ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΠ΅, ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠ΅, ΡΡΠ΅Π΄Π½ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ. ΠΡΠ»ΠΈ Π² Π²Π°ΡΡ Π±Π°Π·Ρ ΠΏΠΈΡΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ, ΡΠΎ Π½Π΅Π»ΡΠ·Ρ ΠΈΡ
Π³ΡΠ΅ΡΡΠΈ ΠΏΠΎΠ΄ ΠΎΠ΄Π½Ρ Π³ΡΠ΅Π±Π΅Π½ΠΊΡ. ΠΠΎΠΆΠ΅Ρ ΠΎΠΊΠ°Π·Π°ΡΡΡΡ, ΡΡΠΎ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ Π½ΡΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°Π·Π½ΠΎΠ΅ ΠΏΡΠΎΡΠ΅ΠΆΠΈΠ²Π°Π½ΠΈΠ΅. Π ΡΡΠΎ ΡΠ»ΠΎΠΆΠ½ΠΎ Π² ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ.
Π Π²ΡΠΎΡΠΎΠ΅ β ΡΡΠΎ ΡΠΎ, ΡΡΠΎ VictoriaMetrics, ΠΊΠ°ΠΊ ΠΈ ClickHouse, ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π° ΠΏΠΎΠ΄ ΡΠ°Π±ΠΎΡΡ Π½Π°Π΄ Π±ΠΎΠ»ΡΡΠΈΠΌ ΠΎΠ±ΡΠ΅ΠΌΠΎΠΌ ΡΡΡΡΡ Π΄Π°Π½Π½ΡΡ , ΠΏΠΎΡΡΠΎΠΌΡ ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅Ρ ΠΏΠ΅ΡΠ΅Π»ΠΎΠΏΠ°ΡΠΈΡΡ ΠΌΠΈΠ»Π»ΠΈΠ°ΡΠ΄ ΡΡΡΠΎΡΠ΅ΠΊ ΠΌΠ΅Π½ΡΡΠ΅, ΡΠ΅ΠΌ Π·Π° ΡΠ΅ΠΊΡΠ½Π΄Ρ, Π΅ΡΠ»ΠΈ Ρ Π²Π°Ρ Π΅ΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ΄Π΅Ρ Π² Π²Π°ΡΠ΅ΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅. Π‘ΠΊΠ°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΎΡΠ΅ΠΊ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΡΠ΄Π° Π² VictoriaMetrics β 50 000 000 ΡΠΎΡΠ΅ΠΊ Π² ΡΠ΅ΠΊΡΠ½Π΄Ρ Π½Π° ΠΎΠ΄Π½ΠΎ ΡΠ΄ΡΠΎ. Π ΡΡΠ° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΡΠ΅ΡΡΡ Π½Π° ΠΈΠΌΠ΅ΡΡΠΈΠ΅ΡΡ ΡΠ΄ΡΠ°. Π’. Π΅. Π΅ΡΠ»ΠΈ Ρ Π²Π°Ρ 20 ΡΠ΄Π΅Ρ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡΡ ΡΠΊΠ°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠΈΠ»Π»ΠΈΠ°ΡΠ΄Π° ΡΠΎΡΠ΅ΠΊ Π² ΡΠ΅ΠΊΡΠ½Π΄Ρ. Π ΡΡΠΎ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ VictoriaMetrics ΠΈ ClickHouse ΡΠ½ΠΈΠΆΠ°Π΅Ρ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎΡΡΡ Π² downsamling.
ΠΡΠ΅ ΠΎΠ΄Π½ΠΎ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ Π² ΡΠΎΠΌ, ΡΡΠΎ VictoriaMetrics ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ ΡΠΆΠΈΠΌΠ°Π΅Ρ ΡΡΠΈ Π΄Π°Π½Π½ΡΠ΅. Π‘ΠΆΠ°ΡΠΈΠ΅ Π² ΡΡΠ΅Π΄Π½Π΅ΠΌ Π½Π° production ΠΎΡ 0,4 Π΄ΠΎ 0,8 Π±Π°ΠΉΡ Π½Π° ΡΠΎΡΠΊΡ. ΠΠ°ΠΆΠ΄Π°Ρ ΡΠΎΡΠΊΠ° β ΡΡΠΎ timestamp + Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅. Π ΠΎΠ½Π° ΡΠΆΠΈΠΌΠ°Π΅ΡΡΡ ΠΌΠ΅Π½ΡΡΠ΅, ΡΠ΅ΠΌ Π² ΠΎΠ΄ΠΈΠ½ Π±Π°ΠΉΡ Π² ΡΡΠ΅Π΄Π½Π΅ΠΌ.
Π‘Π΅ΡΠ³Π΅ΠΉ. Π£ ΠΌΠ΅Π½Ρ Π΅ΡΡΡ Π²ΠΎΠΏΡΠΎΡ. ΠΠ°ΠΊΠΎΠΉ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ ΠΊΠ²Π°Π½Ρ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π·Π°ΠΏΠΈΡΠΈ?
ΠΠ΄Π½Π° ΠΌΠΈΠ»Π»ΠΈΡΠ΅ΠΊΡΠ½Π΄Π°. ΠΠ΅Π΄Π°Π²Π½ΠΎ Ρ Π½Π°Ρ Π±ΡΠ» ΡΠ°Π·Π³ΠΎΠ²ΠΎΡ Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌΠΈ Π±Π°Π· Π΄Π°Π½Π½ΡΡ Π΄Π»Ρ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΡΠ΄ΠΎΠ². Π£ Π½ΠΈΡ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ ΠΊΠ²Π°Π½Ρ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ β ΡΡΠΎ ΠΎΠ΄Π½Π° ΡΠ΅ΠΊΡΠ½Π΄Π°. Π Π² Graphite, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠΎΠΆΠ΅ ΠΎΠ΄Π½Π° ΡΠ΅ΠΊΡΠ½Π΄Π°. Π OpenTSDB ΡΠΎΠΆΠ΅ ΠΎΠ΄Π½Π° ΡΠ΅ΠΊΡΠ½Π΄Π°. Π InfluxDB β Π½Π°Π½ΠΎΡΠ΅ΠΊΡΠ½Π΄Π½Π°Ρ ΡΠΎΡΠ½ΠΎΡΡΡ. Π VictoriaMetrics β ΠΎΠ΄Π½Π° ΠΌΠΈΠ»Π»ΠΈΡΠ΅ΠΊΡΠ½Π΄Π°, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π² Prometheus ΠΎΠ΄Π½Π° ΠΌΠΈΠ»Π»ΠΈΡΠ΅ΠΊΡΠ½Π΄Π°. Π VictoriaMetrics ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°Π»Π°ΡΡ ΠΊΠ°ΠΊ remote storage Π΄Π»Ρ Prometheus ΠΏΠ΅ΡΠ²ΠΎΠ½Π°ΡΠ°Π»ΡΠ½ΠΎ. ΠΠΎ ΡΠ΅ΠΉΡΠ°Ρ ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΡ ΡΠ°Π½ΡΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΈ ΠΈΠ· Π΄ΡΡΠ³ΠΈΡ ΡΠΈΡΡΠ΅ΠΌ.
Π§Π΅Π»ΠΎΠ²Π΅ΠΊ, Ρ ΠΊΠΎΡΠΎΡΡΠΌ Ρ ΡΠ°Π·Π³ΠΎΠ²Π°ΡΠΈΠ²Π°Π», Π³ΠΎΠ²ΠΎΡΠΈΡ, ΡΡΠΎ Ρ Π½ΠΈΡ ΡΠ΅ΠΊΡΠ½Π΄Π½Π°Ρ ΡΠΎΡΠ½ΠΎΡΡΡ β ΠΈΠΌ ΡΡΠΎΠ³ΠΎ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΡΠΎ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΡΠΈΠΏΠ° Π΄Π°Π½Π½ΡΡ , ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΎΡ ΡΠ°Π½ΡΡΡΡΡ Π² Π±Π°Π·Ρ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΡΠ΄ΠΎΠ². ΠΡΠ»ΠΈ ΡΡΠΎ DevOps-Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ»ΠΈ Π΄Π°Π½Π½ΡΠ΅ Ρ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΡ, Π³Π΄Π΅ Π²Ρ ΡΠΎΠ±ΠΈΡΠ°Π΅ΡΠ΅ ΠΈΡ Ρ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»ΠΎΠΌ Π² 30 ΡΠ΅ΠΊΡΠ½Π΄, Π² ΠΌΠΈΠ½ΡΡΡ, ΡΠΎ ΡΠ°ΠΌ ΡΠ΅ΠΊΡΠ½Π΄Π½ΠΎΠΉ ΡΠΎΡΠ½ΠΎΡΡΠΈ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ, ΠΌΠ΅Π½ΡΡΠ΅ ΡΠΆΠ΅ Π½Π΅ Π½Π°Π΄ΠΎ. Π Π΅ΡΠ»ΠΈ Π²Ρ ΡΠΎΠ±ΠΈΡΠ°Π΅ΡΠ΅ ΡΡΠΈ Π΄Π°Π½Π½ΡΠ΅ high frequency trading systems, ΡΠΎ ΡΠ°ΠΌ Π½ΡΠΆΠ½Π° Π½Π°Π½ΠΎΡΠ΅ΠΊΡΠ½Π΄Π½Π°Ρ ΡΠΎΡΠ½ΠΎΡΡΡ.
ΠΠΈΠ»Π»ΠΈΡΠ΅ΠΊΡΠ½Π΄Π½Π°Ρ ΡΠΎΡΠ½ΠΎΡΡΡ Π² VictoriaMetrics ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ ΠΈ Π΄Π»Ρ DevOps-ΠΊΠ΅ΠΉΡΠ°, ΠΈ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ΄ΠΎΠΉΡΠΈ Π΄Π»Ρ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π° ΠΊΠ΅ΠΉΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Ρ ΡΠΏΠΎΠΌΡΠ½ΡΠ» Π² Π½Π°ΡΠ°Π»Π΅ Π΄ΠΎΠΊΠ»Π°Π΄Π°. ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠ΅, Π΄Π»Ρ ΡΠ΅Π³ΠΎ ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅Ρ Π½Π΅ ΠΏΠΎΠ΄ΠΎΠΉΡΠΈ β ΡΡΠΎ high frequency trading systems.
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ! Π Π΅ΡΠ΅ Π²ΠΎΠΏΡΠΎΡ. ΠΠ°ΠΊΠ°Ρ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡ Π² PromQL?
ΠΠΎΠ»Π½Π°Ρ ΠΎΠ±ΡΠ°ΡΠ½Π°Ρ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡ. VictoriaMetrics ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ PromQL. ΠΡΠΎΠΌΠ΅ ΡΡΠΎΠ³ΠΎ ΠΎΠ½Π° Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ Π΅ΡΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΠ°ΡΡΠΈΡΠ΅Π½Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ Π½Π° PromQL, ΠΊΠΎΡΠΎΡΠ°Ρ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ
Telegram ΠΊΠ°Π½Π°Π»
Π’ΠΎΠ»ΡΠΊΠΎ Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ ΠΌΠΎΠ³ΡΡ ΡΡΠ°ΡΡΠ²ΠΎΠ²Π°ΡΡ Π² ΠΎΠΏΡΠΎΡΠ΅.
Π§ΡΠΎ Π²Π°ΠΌ ΠΌΠ΅ΡΠ°Π΅Ρ ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ Π½Π° VictoriaMetrics ΠΊΠ°ΠΊ Π΄ΠΎΠ»Π³ΠΎΡΡΠΎΡΠ½ΠΎΠ΅ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ Π΄Π»Ρ Prometheus? (ΠΠΈΡΠΈΡΠ΅ Π² ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡ , Ρ Π΄ΠΎΠ±Π°Π²Π»Ρ Π² ΠΎΠΏΡΠΎΡ))
-
71,4%ΠΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Prometheus5
-
28,6%ΠΠ΅ Π·Π½Π°Π» ΠΏΡΠΎ VictoriaMetrics2
ΠΡΠΎΠ³ΠΎΠ»ΠΎΡΠΎΠ²Π°Π»ΠΈ 7 ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ. ΠΠΎΠ·Π΄Π΅ΡΠΆΠ°Π»ΠΈΡΡ 12 ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ.
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com