Π ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Π° ΠΎΡ ΠΌΠΎΠ½ΠΎΠ»ΠΈΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΊ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠ½ΠΎΠΉ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ΅ ΠΌΡ ΡΡΠ°Π»ΠΊΠΈΠ²Π°Π΅ΠΌΡΡ Ρ Π½ΠΎΠ²ΡΠΌΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ.
Π ΠΌΠΎΠ½ΠΎΠ»ΠΈΡΠ½ΠΎΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΎΠ±ΡΡΠ½ΠΎ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ, Π² ΠΊΠ°ΠΊΠΎΠΉ ΡΠ°ΡΡΠΈ ΡΠΈΡΡΠ΅ΠΌΡ ΠΏΡΠΎΠΈΠ·ΠΎΡΠ»Π° ΠΎΡΠΈΠ±ΠΊΠ°. Π‘ΠΊΠΎΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ, ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π² ΠΊΠΎΠ΄Π΅ ΡΠ°ΠΌΠΎΠ³ΠΎ ΠΌΠΎΠ½ΠΎΠ»ΠΈΡΠ°, Π»ΠΈΠ±ΠΎ Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ . ΠΠΎ ΠΊΠΎΠ³Π΄Π° ΠΌΡ Π½Π°ΡΠΈΠ½Π°Π΅ΠΌ ΠΈΡΠΊΠ°ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π² ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠ½ΠΎΠΉ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ΅, Π²ΡΡ ΡΠΆΠ΅ Π½Π΅ ΡΠ°ΠΊ ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΠΎ. ΠΡΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ Π²Π΅ΡΡ ΠΏΡΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΎΡΠ΅Π» Π·Π°ΠΏΡΠΎΡ ΠΎΡ Π½Π°ΡΠ°Π»Π° Π΄ΠΎ ΠΊΠΎΠ½ΡΠ°, Π²ΡΠ΄Π΅Π»ΠΈΡΡ Π΅Π³ΠΎ ΠΈΠ· ΡΠΎΡΠ΅Π½ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠΎΠ². ΠΡΠΈΡΡΠΌ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΠ· Π½ΠΈΡ Π΅ΡΠ΅ ΠΈ ΠΈΠΌΠ΅ΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°, Π² ΠΊΠΎΡΠΎΡΡΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠ³ΡΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡ ΠΊΠ°ΠΊ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ, ΡΠ°ΠΊ ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡΡ ΠΈ ΠΎΡΠΊΠ°Π·ΠΎΡΡΡΠΎΠΉΡΠΈΠ²ΠΎΡΡΡΡ.
Π― Π΄ΠΎΠ»Π³ΠΎ ΠΈΡΠΊΠ°Π» ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠΌΠΎΠ³ Π±Ρ ΡΠΏΡΠ°Π²ΠΈΡΡΡΡ Ρ ΡΠ°ΠΊΠΈΠΌΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ (ΠΏΠΈΡΠ°Π» ΠΎΠ± ΡΡΠΎΠΌ Π½Π° Π₯Π°Π±ΡΠ΅:
Π Π°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΉ tracing ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½ΡΠΌ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΏΠΎΠΈΡΠΊΠ° ΠΎΡΠΈΠ±ΠΎΠΊ Π² ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌΠ°Ρ . ΠΠΎ ΡΡΠΎ Π΅ΡΠ»ΠΈ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅ Π΅ΡΡ Π½Π΅ Π²Π½Π΅Π΄ΡΡΠ½ ΡΠ°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΊ ΡΠ±ΠΎΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ ΡΠ΅ΡΠ΅Π²ΡΡ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡΡ , ΠΈΠ»ΠΈ, ΡΡΠΎ Ρ ΡΠΆΠ΅, Π² ΡΠ°ΡΡΠΈ ΡΠΈΡΡΠ΅ΠΌΡ ΠΎΠ½ ΡΠΆΠ΅ ΠΈΡΠΏΡΠ°Π²Π½ΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, Π° Π² ΡΠ°ΡΡΠΈ Π΅Π³ΠΎ Π½Π΅Ρ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ Π½Π΅ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ Π² ΡΡΠ°ΡΡΠ΅ ΡΠ΅ΡΠ²ΠΈΡΡ? ΠΠ»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΠΎΡΠ½ΠΎΠΉ ΠΊΠΎΡΠ½Π΅Π²ΠΎΠΉ ΠΏΡΠΈΡΠΈΠ½Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠΌΠ΅ΡΡ ΠΏΠΎΠ»Π½ΡΡ ΠΊΠ°ΡΡΠΈΠ½Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅. ΠΡΠΎΠ±Π΅Π½Π½ΠΎ Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΡ ΡΡΠ°ΡΡΠ²ΡΡΡ Π² ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΠΊΡΠΈΡΠΈΡΠ½ΡΡ Π΄Π»Ρ Π±ΠΈΠ·Π½Π΅ΡΠ° ΠΏΡΡΡΡ .
Π’ΡΡ ΠΊ Π½Π°ΠΌ Π½Π° ΠΏΠΎΠΌΠΎΡΡ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠΉΡΠΈ service mesh ΠΏΠΎΠ΄Ρ ΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ Π·Π°ΠΉΠΌΡΡΡΡ Π²ΡΠ΅ΠΉ ΠΌΠ°ΡΠΈΠ½Π΅ΡΠΈΠ΅ΠΉ ΠΏΠΎ ΡΠ±ΠΎΡΡ ΡΠ΅ΡΠ΅Π²ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Π½Π° ΡΡΠΎΠ²Π½Π΅ Π½ΠΈΠΆΠ΅, ΡΠ΅ΠΌ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠ°ΠΌΠΈ ΡΠ΅ΡΠ²ΠΈΡΡ. ΠΡΠΎΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π½Π°ΠΌ ΠΏΠ΅ΡΠ΅Ρ Π²Π°ΡΡΠ²Π°ΡΡ Π²Π΅ΡΡ ΡΡΠ°ΡΠΈΠΊ ΠΈ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ Π½Π° Π»Π΅ΡΡ. ΠΡΠΈΡΡΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΎ Π½ΡΠΌ Π΄Π°ΠΆΠ΅ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π½ΠΈΡΠ΅Π³ΠΎ Π·Π½Π°ΡΡ.
Service mesh ΠΏΠΎΠ΄Ρ ΠΎΠ΄
ΠΠ»Π°Π²Π½ΠΎΠΉ ΠΈΠ΄Π΅Π΅ΠΉ service mesh ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π° ΡΠ²Π»ΡΠ΅ΡΡΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π΅ΡΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ½ΠΎΠ³ΠΎ ΡΠ»ΠΎΡ Π½Π°Π΄ ΡΠ΅ΡΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ Π½Π°ΠΌ Π΄Π΅Π»Π°ΡΡ Π»ΡΠ±ΡΠ΅ Π²Π΅ΡΠΈ Ρ ΠΌΠ΅ΠΆΡΠ΅ΡΠ²ΠΈΡΠ½ΡΠΌ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ΠΌ. ΠΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΉ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ: ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΡ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΡΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ sidecar ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ Ρ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΡΠΌ ΠΏΡΠΎΠΊΡΠΈ, ΡΠ΅ΡΠ΅Π· ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΎΠΏΡΡΠΊΠ°Π΅ΡΡΡ Π²Π΅ΡΡ Π²Ρ ΠΎΠ΄ΡΡΠΈΠΉ ΠΈ ΠΈΡΡ ΠΎΠ΄ΡΡΠΈΠΉ ΡΡΠ°ΡΠΈΠΊ ΡΠ΅ΡΠ²ΠΈΡΠ°. Π ΡΡΠΎ ΡΠΎ ΡΠ°ΠΌΠΎΠ΅ ΠΌΠ΅ΡΡΠΎ, Π³Π΄Π΅ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π΅Π»Π°ΡΡ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΡΡ Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²ΠΊΡ, ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ, Π²Π²ΠΎΠ΄ΠΈΡΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ Π½Π° ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΈ ΡΠΎΠ±ΠΈΡΠ°ΡΡ Π²Π°ΠΆΠ½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΏΠΎ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² Π² production.
Π Π΅ΡΠ΅Π½ΠΈΡ
Π£ΠΆΠ΅ Π΅ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΉ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄Π°:
Π ΠΈΡΠΎΠ³Π΅ ΠΌΡ ΠΏΠΎΡΠΌΠΎΡΡΠ΅Π»ΠΈ Π½Π° ΡΠΎ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΈΠΌΠ΅Π½Π½ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π½Π°ΠΌ Π½ΡΠΆΠ½Ρ ΠΏΡΡΠΌΠΎ ΡΠ΅ΠΉΡΠ°Ρ, ΠΈ ΡΠ΅ΡΠΈΠ»ΠΈ, ΡΡΠΎ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ΅, ΠΈΠ·-Π·Π° ΡΠ΅Π³ΠΎ ΠΌΡ Π½Π°ΡΠ°Π»ΠΈ Π²Π½Π΅Π΄ΡΡΡΡ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΡ, Π±ΡΠ»Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠΎΠ±ΠΈΡΠ°ΡΡ tracing ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΡΠΎ Π²ΡΠ΅ΠΉ ΡΠΈΡΡΠ΅ΠΌΡ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎ. Π’Π°ΠΊΠΆΠ΅ Π½Π°ΠΌ Ρ ΠΎΡΠ΅Π»ΠΎΡΡ ΠΈΠΌΠ΅ΡΡ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π½Π°Π΄ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ΠΌ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² ΠΈ Π΄Π΅Π»Π°ΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΡΡΠΈΠΈ Ρ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°ΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ΅ΡΠ²ΠΈΡΠ°ΠΌΠΈ.
Π ΠΈΡΠΎΠ³Π΅ ΠΌΡ ΠΏΡΠΈΡΠ»ΠΈ ΠΊ ΡΠ²ΠΎΠ΅ΠΌΡ ΡΠ΅ΡΠ΅Π½ΠΈΡ:β
Netramesh
ΠΠ»Π°Π²Π½ΡΠΌΠΈ ΡΠ΅Π»ΡΠΌΠΈ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΠ²Π»ΡΠ»ΠΈΡΡ ΠΌΠ°Π»Π΅Π½ΡΠΊΠΈΠΉ overhead ΠΏΠΎ ΡΠ΅ΡΡΡΡΠ°ΠΌ ΠΈ Π²ΡΡΠΎΠΊΠ°Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ. ΠΠ· ΠΎΡΠ½ΠΎΠ²Π½ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ ΠΌΡ Ρ ΠΎΡΠ΅Π»ΠΈ ΡΡΠ°Π·Ρ ΠΈΠΌΠ΅ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎ ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡ tracing spanβΡ Π² Π½Π°ΡΡ Jaeger ΡΠΈΡΡΠ΅ΠΌΡ.
Π‘Π΅Π³ΠΎΠ΄Π½Ρ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΠΎΠ±Π»Π°ΡΠ½ΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΠΉ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΡΡΡ Π½Π° Golang. Π, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, Π½Π° ΡΡΠΎ Π΅ΡΡΡ ΡΠ²ΠΎΠΈ ΠΏΡΠΈΡΠΈΠ½Ρ. ΠΠΈΡΠ°ΡΡ Π½Π° Golang ΡΠ΅ΡΠ΅Π²ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΠ΅ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎ Ρ Π²Π²ΠΎΠ΄ΠΎΠΌ-Π²ΡΠ²ΠΎΠ΄ΠΎΠΌ ΠΈ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΡΡΡΠΈΠ΅ΡΡ ΠΏΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ Π½Π° ΡΠ΄ΡΠ°, ΡΠ΄ΠΎΠ±Π½ΠΎ ΠΈ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ. Π, ΡΡΠΎ ΡΠ°ΠΊΠΆΠ΅ ΠΎΡΠ΅Π½Ρ Π²Π°ΠΆΠ½ΠΎ, ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎΠΉ Π΄Π»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΡΠΎΠΉ Π·Π°Π΄Π°ΡΠΈ. ΠΠΎΡΡΠΎΠΌΡ ΠΌΡ ΡΠΎΠΆΠ΅ Π²ΡΠ±ΡΠ°Π»ΠΈ Golang.
ΠΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ
ΠΡ ΡΡΠΎΠΊΡΡΠΈΡΠΎΠ²Π°Π»ΠΈ Π½Π°ΡΠΈ ΡΡΠΈΠ»ΠΈΡ Π½Π° Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΠΈ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠΉ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ. ΠΠ»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π΄Π΅ΠΏΠ»ΠΎΠΈΡΡΡ ΡΡΠ΄ΠΎΠΌ Ρ ΠΊΠ°ΠΆΠ΄ΡΠΌ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠΌ ΡΠ΅ΡΠ²ΠΈΡΠ°, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠ΅ ΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ ΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ. Π, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, Π·Π°Π΄Π΅ΡΠΆΠΊΠ° Π½Π° ΠΎΡΠ²Π΅Ρ Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠ°Π»Π°.
ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊΠΈΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΈΡΡ.
RAM
Netramesh ΠΏΠΎΡΡΠ΅Π±Π»ΡΠ΅Ρ ~10Mb Π±Π΅Π· ΡΡΠ°ΡΠΈΠΊΠ° ΠΈ 50Mb ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ Ρ Π½Π°Π³ΡΡΠ·ΠΊΠΎΠΉ Π΄ΠΎ 10000 RPS Π½Π° ΠΎΠ΄ΠΈΠ½ instance.
Istio envoy proxy Π²ΡΠ΅Π³Π΄Π° ΠΏΠΎΡΡΠ΅Π±Π»ΡΠ΅Ρ ~300Mb Π² Π½Π°ΡΠΈΡ ΠΊΠ»Π°ΡΡΠ΅ΡΠ°Ρ Ρ ΡΡΡΡΡΠ°ΠΌΠΈ instanceβΠΎΠ². ΠΡΠΎ Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ Π½Π° Π²Π΅ΡΡ ΠΊΠ»Π°ΡΡΠ΅Ρ.
C Netramesh ΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΈ ΡΠΌΠ΅Π½ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΠΈ Π² ~10 ΡΠ°Π·.
CPU
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ CPU ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ°Π²Π½ΠΎ ΠΏΠΎΠ΄ Π½Π°Π³ΡΡΠ·ΠΊΠΎΠΉ. ΠΠ½ΠΎ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° Π·Π°ΠΏΡΠΎΡΠΎΠ² Π² Π΅Π΄ΠΈΠ½ΠΈΡΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΊ sidecar. ΠΠ½Π°ΡΠ΅Π½ΠΈΡ ΠΏΡΠΈ 3000 Π·Π°ΠΏΡΠΎΡΠ°Ρ Π² ΡΠ΅ΠΊΡΠ½Π΄Ρ Π² ΠΏΠΈΠΊΠ΅:
ΠΡΡΡ Π΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½ Π²Π°ΠΆΠ½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ: Netramesh β ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π±Π΅Π· control plane ΠΈ Π±Π΅Π· Π½Π°Π³ΡΡΠ·ΠΊΠΈ Π½Π΅ ΠΏΠΎΡΡΠ΅Π±Π»ΡΠ΅Ρ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ. Π‘ Istio sidecarβΡ Π²ΡΠ΅Π³Π΄Π° ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡ endpointβΡ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ². Π ΠΈΡΠΎΠ³Π΅ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π²ΠΈΠ΄Π΅ΡΡ ΡΠ°ΠΊΡΡ ΠΊΠ°ΡΡΠΈΠ½Ρ Π±Π΅Π· Π½Π°Π³ΡΡΠ·ΠΊΠΈ:
ΠΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ HTTP/1 Π΄Π»Ρ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ΅ΡΠ²ΠΈΡΠ°ΠΌΠΈ. Π£Π²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΎΡΠ²Π΅ΡΠ° Ρ Istio ΠΏΡΠΈ ΠΏΡΠΎΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΡΠ΅ΡΠ΅Π· envoy Π±ΡΠ»ΠΎ Π΄ΠΎ 5-10ms, ΡΡΠΎ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ Π΄Π»Ρ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π³ΠΎΡΠΎΠ²Ρ ΠΎΡΠ²Π΅ΡΠ°ΡΡ Π·Π° ΠΌΠΈΠ»Π»ΠΈΡΠ΅ΠΊΡΠ½Π΄Ρ. Π‘ Netramesh ΡΡΠΎ Π²ΡΠ΅ΠΌΡ ΡΠΌΠ΅Π½ΡΡΠΈΠ»ΠΎΡΡ Π΄ΠΎ 0.5-2ms.
ΠΠ°ΡΡΡΠ°Π±ΠΈΡΡΠ΅ΠΌΠΎΡΡΡ
ΠΠ΅Π±ΠΎΠ»ΡΡΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ΅ΡΡΡΡΠΎΠ², Π·Π°ΡΡΠ°ΡΠΈΠ²Π°Π΅ΠΌΠΎΠ΅ ΠΊΠ°ΠΆΠ΄ΡΠΌ ΠΏΡΠΎΠΊΡΠΈ, Π΄Π°Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠ°Π·ΠΌΠ΅ΡΠ°ΡΡ Π΅Π³ΠΎ ΡΡΠ΄ΠΎΠΌ Ρ ΠΊΠ°ΠΆΠ΄ΡΠΌ ΡΠ΅ΡΠ²ΠΈΡΠΎΠΌ. Netramesh Π½Π°ΠΌΠ΅ΡΠ΅Π½Π½ΠΎ Π±ΡΠ» ΡΠΎΠ·Π΄Π°Π½ Π±Π΅Π· control plane ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° Π΄Π»Ρ ΠΏΡΠΎΡΡΠΎΠ³ΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠ°Π½ΠΈΡ Π»Π΅Π³ΠΊΠΎΠ²Π΅ΡΠ½ΠΎΡΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ sidecarβΠ°. Π§Π°ΡΡΠΎ Π² service mesh ΡΠ΅ΡΠ΅Π½ΠΈΡΡ control plane ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ΅Ρ service discovery ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π² ΠΊΠ°ΠΆΠ΄ΡΠΉ sidecar. ΠΠΌΠ΅ΡΡΠ΅ Ρ Π½Π΅ΠΉ ΠΏΡΠΈΠ΅Π·ΠΆΠ°Π΅Ρ ΠΈ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ timeoutβΠ°Ρ , Π½Π°ΡΡΡΠΎΠΉΠΊΠ°Ρ Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²ΠΊΠΈ. ΠΡΠ΅ ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π΄Π΅Π»Π°ΡΡ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΡΡ Π²Π΅ΡΠ΅ΠΉ, Π½ΠΎ, ΠΊ ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, ΡΠ°Π·Π΄ΡΠ²Π°Π΅Ρ sidecarβΡ Π² ΡΠ°Π·ΠΌΠ΅ΡΠ΅.
Service discovery
Netramesh Π½Π΅ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ ΠΊΠ°ΠΊΠΈΡ -Π»ΠΈΠ±ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠΎΠ² Π΄Π»Ρ service discovery. ΠΠ΅ΡΡ ΡΡΠ°ΡΠΈΠΊ ΠΏΡΠΎΠΊΡΠΈΡΡΠ΅ΡΡΡ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎ ΡΠ΅ΡΠ΅Π· netra sidecar.
Netramesh ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ HTTP/1 ΠΏΡΠΈΠΊΠ»Π°Π΄Π½ΠΎΠΉ ΠΏΡΠΎΡΠΎΠΊΠΎΠ». ΠΠ»Ρ Π΅Π³ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΡΠ΅ΠΌΡΠΉ ΡΠΏΠΈΡΠΎΠΊ ΠΏΠΎΡΡΠΎΠ². ΠΠ±ΡΡΠ½ΠΎ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅ Π΅ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΡΠΎΠ², ΠΏΠΎ ΠΊΠΎΡΠΎΡΡΠΌ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΠΏΠΎ HTTP. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Ρ Π½Π°Ρ Π΄Π»Ρ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² ΠΈ Π²Π½Π΅ΡΠ½ΠΈΡ
Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ 80, 8890, 8080. Π ΡΠ°ΠΊΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΈΡ
ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ NETRA_HTTP_PORTS
.
ΠΡΠ»ΠΈ Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ Kubernetes Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΎΡΠΊΠ΅ΡΡΡΠ°ΡΠΎΡΠ° ΠΈ Π΅Π³ΠΎ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ Service ΡΡΡΠ½ΠΎΡΡΠ΅ΠΉ Π΄Π»Ρ Π²Π½ΡΡΡΠΈΠΊΠ»Π°ΡΡΠ΅ΡΠ½ΠΎΠ³ΠΎ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ΅ΡΠ²ΠΈΡΠ°ΠΌΠΈ, ΡΠΎ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΠΎΡΡΠ°Π΅ΡΡΡ ΡΠΎΠ²Π½ΠΎ ΡΠ°ΠΊΠΈΠΌ ΠΆΠ΅. Π‘Π½Π°ΡΠ°Π»Π° ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ service IP Π°Π΄ΡΠ΅Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΡ kube-dns ΠΈ ΠΎΡΠΊΡΡΠ²Π°Π΅Ρ Π½ΠΎΠ²ΠΎΠ΅ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ ΠΊ Π½Π΅ΠΌΡ. ΠΡΠΎ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΡΡ ΡΠ½Π°ΡΠ°Π»Π° Ρ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΌ netra-sidecar ΠΈ Π²ΡΠ΅ TCP ΠΏΠ°ΠΊΠ΅ΡΡ ΠΈΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ ΠΏΡΠΈΠ»Π΅ΡΠ°ΡΡ ΠΈΠΌΠ΅Π½Π½ΠΎ Π² netra. ΠΠ°Π»Π΅Π΅ ΡΠΆΠ΅ netra-sidecar ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Ρ ΠΈΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠΉ ΡΠΎΡΠΊΠΎΠΉ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΡ. NAT Π½Π° pod IP Π½Π° Π½ΠΎΠ΄Π΅ ΠΎΡΡΠ°Π΅ΡΡΡ ΡΠΎΠ²Π½ΠΎ ΡΠ°ΠΊΠΈΠΌ ΠΆΠ΅ ΠΊΠ°ΠΊ ΠΈ Π±Π΅Π· netra.
Π Π°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΉ tracing ΠΈ ΠΏΡΠΎΠΊΠΈΠ΄ΡΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ°
Netramesh ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ, Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΡΡ Π΄Π»Ρ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ tracing spanβΠΎΠ² ΠΎ HTTP Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠΈ. Netra-sidecar ΠΏΠ°ΡΡΡΡ HTTP ΠΏΡΠΎΡΠΎΠΊΠΎΠ», ΠΈΠ·ΠΌΠ΅ΡΡΡΡ Π·Π°Π΄Π΅ΡΠΆΠΊΠΈ Π·Π°ΠΏΡΠΎΡΠΎΠ², Π΄ΠΎΡΡΠ°ΡΡ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΈΠ· HTTP headerβΠΎΠ². Π ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΌ ΡΡΠ΅ΡΠ΅ ΠΌΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ Π²ΡΠ΅ traceβΡ Π² Π΅Π΄ΠΈΠ½ΠΎΠΉ Jaeger ΡΠΈΡΡΠ΅ΠΌΠ΅. ΠΠ»Ρ ΡΠΎΠ½ΠΊΠΎΠΉ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°
ΠΠΎ Π΅ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°. ΠΠΎΠΊΠ° ΡΠ΅ΡΠ²ΠΈΡΡ Π½Π΅ Π±ΡΠ΄ΡΡ Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈ ΠΏΡΠΎΠΊΠΈΠ΄ΡΠ²Π°ΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠΉ uber Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ, ΠΌΡ Π½Π΅ ΡΠ²ΠΈΠ΄ΠΈΠΌ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½Π½ΡΠ΅ tracing spanβΡ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅. Π ΡΡΠΎ ΡΠΎ, ΡΡΠΎ Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π»Ρ Π±ΡΡΡΡΠΎΠ³ΠΎ ΠΏΠΎΠΈΡΠΊΠ° ΠΏΡΠΈΡΠΈΠ½Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌ. Π’ΡΡ Netramesh ΡΠ½ΠΎΠ²Π° ΠΈΠΌΠ΅Π΅Ρ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅. ΠΡΠΎΠΊΡΠΈ ΡΠΈΡΠ°ΡΡ HTTP Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ ΠΈ, Π΅ΡΠ»ΠΈ Π² Π½ΠΈΡ
Π½Π΅Ρ uber trace id, Π³Π΅Π½Π΅ΡΠΈΡΡΡΡ Π΅Π³ΠΎ. Netramesh ΡΠ°ΠΊΠΆΠ΅ Ρ
ΡΠ°Π½ΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ Π²Ρ
ΠΎΠ΄ΡΡΠΈΡ
ΠΈ ΠΈΡΡ
ΠΎΠ΄ΡΡΠΈΡ
Π·Π°ΠΏΡΠΎΡΠ°Ρ
Π² sidecar ΠΈ ΡΠΎΠΏΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΈΡ
ΠΏΡΡΡΠΌ ΠΎΠ±ΠΎΠ³Π°ΡΠ΅Π½ΠΈΡ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΡΠΌΠΈ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°ΠΌΠΈ ΠΈΡΡ
ΠΎΠ΄ΡΡΠΈΡ
Π·Π°ΠΏΡΠΎΡΠΎΠ². ΠΡΠ΅, ΡΡΠΎ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π΅Π»Π°ΡΡ Π² ΡΠ΅ΡΠ²ΠΈΡΠ°Ρ
β ΠΏΡΠΎΠΊΠΈΠ΄ΡΠ²Π°ΡΡ Π²ΡΠ΅Π³ΠΎ ΠΎΠ΄ΠΈΠ½ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ X-Request-Id
, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠΎΠ²Π°ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ NETRA_HTTP_REQUEST_ID_HEADER_NAME
. ΠΠ»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ contextβΠ° Π² Netramesh, ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°Π²Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ: NETRA_TRACING_CONTEXT_EXPIRATION_MILLISECONDS
(Π²ΡΠ΅ΠΌΡ, Π² ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π±ΡΠ΄Π΅Ρ Ρ
ΡΠ°Π½ΠΈΡΡΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ) ΠΈ NETRA_TRACING_CONTEXT_CLEANUP_INTERVAL
(ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΈΡΠ½ΠΎΡΡΡ ΠΏΠΎΠ΄ΡΠΈΡΡΠΊΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ°).
Π’Π°ΠΊΠΆΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠΎΠ²Π°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΡΠ΅ΠΉ Π² Π²Π°ΡΠ΅ΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ ΠΏΡΡΠ΅ΠΌ ΠΌΠ°ΡΠΊΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈΡ
ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠΌ ΡΠ΅ΡΡΠΈΠΎΠ½Π½ΡΠΌ ΠΌΠ°ΡΠΊΠ΅ΡΠΎΠΌ. Netra ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ HTTP_HEADER_TAG_MAP
Π΄Π»Ρ ΠΏΡΠ΅Π²ΡΠ°ΡΠ΅Π½ΠΈΡ HTTP Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ² Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ tracing span ΡΠ΅Π³ΠΈ. ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π΄Π»Ρ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΠΎΡΠ»Π΅ ΠΏΡΠΎΡ
ΠΎΠΆΠ΄Π΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅ΡΡΠ°, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΠΊΠ°ΠΊΠ°Ρ ΡΠ°ΡΡΡ ΡΠΈΡΡΠ΅ΠΌΡ Π±ΡΠ»Π° Π·Π°ΡΡΠΎΠ½ΡΡΠ°, ΠΎΡΡΠΈΠ»ΡΡΡΠΎΠ²Π°Π² ΠΏΠΎ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅ΠΌΡ session ΠΊΠ»ΡΡΡ.
ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ° Π·Π°ΠΏΡΠΎΡΠ°
ΠΠ»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΠΎΠ³ΠΎ, ΠΎΡΠΊΡΠ΄Π° ΠΏΡΠΈΡΠ΅Π» Π·Π°ΠΏΡΠΎΡ, ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΠΎΠΌ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° Ρ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΎΠΌ. Π‘ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ NETRA_HTTP_X_SOURCE_HEADER_NAME
ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°ΡΡ ΠΈΠΌΡ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π±ΡΠ΄Π΅Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡΡΡ. Π‘ ΠΏΠΎΠΌΠΎΡΡΡ NETRA_HTTP_X_SOURCE_VALUE
ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, Π² ΠΊΠΎΡΠΎΡΠΎΠ΅ Π±ΡΠ΄Π΅Ρ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡΡΡ X-Source Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ Π½Π° Π²ΡΠ΅ ΠΈΡΡ
ΠΎΠ΄ΡΡΠΈΠ΅ Π·Π°ΠΏΡΠΎΡΡ.
ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ½ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎ ΠΏΠΎ Π²ΡΠ΅ΠΉ ΡΠ΅ΡΠΈ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½ΠΈΠ΅ ΡΡΠΎΠ³ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠ³ΠΎ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°. ΠΠ°Π»Π΅Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ Π² ΡΠ΅ΡΠ²ΠΈΡΠ°Ρ ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ Π² Π»ΠΎΠ³ΠΈ, ΠΌΠ΅ΡΡΠΈΠΊΠΈ.
Π ΠΎΡΡΠΈΠ½Π³ ΡΡΠ°ΡΠΈΠΊΠ° ΠΈ Π²Π½ΡΡΡΠ΅Π½Π½ΠΎΡΡΠΈ Netramesh
Netramesh ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· Π΄Π²ΡΡ
Π³Π»Π°Π²Π½ΡΡ
ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ². ΠΠ΅ΡΠ²ΡΠΉ, netra-init, ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ ΡΠ΅ΡΠ΅Π²ΡΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π° Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Ρ
Π²Π°ΡΠ° ΡΡΠ°ΡΠΈΠΊΠ°. ΠΠ½ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ INBOUND_INTERCEPT_PORTS, OUTBOUND_INTERCEPT_PORTS
.
Π’Π°ΠΊΠΆΠ΅ Π² ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ΅ Π΅ΡΡΡ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½Π°Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ β Π²Π΅ΡΠΎΡΡΠ½ΠΎΡΡΠ½ΡΠΉ ΡΠΎΡΡΠΈΠ½Π³. ΠΡΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Netramesh ΠΈΡΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π΄Π»Ρ ΡΠ±ΠΎΡΠ° tracing spanβΠΎΠ², ΡΠΎ Π² production ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΡΡ ΡΠ΅ΡΡΡΡΡ ΠΈ Π²ΠΊΠ»ΡΡΠΈΡΡ Π²Π΅ΡΠΎΡΡΠ½ΠΎΡΡΠ½ΡΠΉ ΡΠΎΡΡΠΈΠ½Π³ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
NETRA_INBOUND_PROBABILITY
ΠΈ NETRA_OUTBOUND_PROBABILITY
(ΠΎΡ 0 Π΄ΠΎ 1). ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΠ°Π²Π½ΠΎ 1 (ΠΏΠ΅ΡΠ΅Ρ
Π²Π°ΡΡΠ²Π°Π΅ΡΡΡ Π²Π΅ΡΡ ΡΡΠ°ΡΠΈΠΊ).
ΠΠΎΡΠ»Π΅ ΡΡΠΏΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΏΠ΅ΡΠ΅Ρ
Π²Π°ΡΠ° netra sidecar ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π½ΠΎΠ²ΠΎΠ΅ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ SO_ORIGINAL_DST
ΠΎΠΏΡΠΈΡ ΡΠΎΠΊΠ΅ΡΠ° Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΈΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠΉ ΡΠΎΡΠΊΠΈ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΡ. ΠΠ°ΡΠ΅ΠΌ Netra ΠΎΡΠΊΡΡΠ²Π°Π΅Ρ Π½ΠΎΠ²ΠΎΠ΅ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ ΠΊ ΠΈΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠΌΡ IP-Π°Π΄ΡΠ΅ΡΡ ΠΈ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ Π΄Π²ΡΡΡΠΎΡΠΎΠ½Π½Π΅Π΅ TCP-ΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ ΡΡΠΎΡΠΎΠ½Π°ΠΌΠΈ, ΡΠ»ΡΡΠ°Ρ Π²Π΅ΡΡ ΠΏΡΠΎΡ
ΠΎΠ΄ΡΡΠΈΠΉ ΡΡΠ°ΡΠΈΠΊ. ΠΡΠ»ΠΈ ΠΏΠΎΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ ΠΊΠ°ΠΊ HTTP, Netra ΠΏΡΡΠ°Π΅ΡΡΡ ΠΏΠ°ΡΡΠΈΡΡ Π΅Π³ΠΎ ΠΈ ΡΡΠ΅ΠΉΡΠΈΡΡ. ΠΡΠ»ΠΈ ΠΏΠ°ΡΡΠΈΠ½Π³ HTTP ΠΎΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ Π½Π΅ΡΡΠΏΠ΅ΡΠ½ΡΠΌ, Netra Π΄Π΅Π»Π°Π΅Ρ ΡΠΎΠ»Π»Π±ΡΠΊ Π½Π° TCP ΠΈ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎ ΠΏΡΠΎΠΊΡΠΈΡΡΠ΅Ρ Π±Π°ΠΉΡΡ.
ΠΠΎΡΡΡΠΎΠ΅Π½ΠΈΠ΅ Π³ΡΠ°ΡΠ° Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ
ΠΠΎΡΠ»Π΅ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° tracing ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Π² Jaeger, Ρ
ΠΎΡΠ΅ΡΡΡ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΏΠΎΠ»Π½ΡΠΉ Π³ΡΠ°Ρ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠΉ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅. ΠΠΎ Π΅ΡΠ»ΠΈ Π²Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π½Π°Π³ΡΡΠΆΠ΅Π½Π° ΠΈ Π·Π° Π΄Π΅Π½Ρ ΡΠΊΠ°ΠΏΠ»ΠΈΠ²Π°ΡΡΡΡ ΠΌΠΈΠ»Π»ΠΈΠ°ΡΠ΄Ρ tracing spanβΠΎΠ², ΡΠ΄Π΅Π»Π°ΡΡ ΠΈΡ
Π°Π³ΡΠ΅Π³Π°ΡΠΈΡ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π½Π΅ ΡΡΠΎΠ»Ρ ΠΏΡΠΎΡΡΠΎΠΉ Π·Π°Π΄Π°ΡΠ΅ΠΉ. ΠΡΡΡ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ:
ΠΡΠ»ΠΈ Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ Elasticsearch Π΄Π»Ρ Ρ
ΡΠ°Π½Π΅Π½ΠΈΡ tracing spanβΠΎΠ², ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ
ΠΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Netramesh
Netra ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΊ Π»ΡΠ±ΠΎΠΌΡ ΡΠ΅ΡΠ²ΠΈΡΡ, ΡΠ°Π±ΠΎΡΠ°ΡΡΠ΅ΠΌΡ ΠΏΠΎΠ΄ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ Π»ΡΠ±ΠΎΠ³ΠΎ ΠΎΡΠΊΠ΅ΡΡΡΠ°ΡΠΎΡΠ°. ΠΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΠΏΡΠΈΠΌΠ΅Ρ
ΠΠ° ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ Ρ Netra Π½Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΡ sidecarβΠ° ΠΊ ΡΠ΅ΡΠ²ΠΈΡΠ°ΠΌ, Π½ΠΎ Π΅ΡΡΡ ΠΏΠ»Π°Π½Ρ Π½Π° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ.
ΠΡΠ΄ΡΡΠ΅Π΅ Netramesh
ΠΠ»Π°Π²Π½ΠΎΠΉ ΡΠ΅Π»ΡΡ
Π Π±ΡΠ΄ΡΡΠ΅ΠΌ Netramesh ΠΏΠΎΠ»ΡΡΠΈΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ Π΄ΡΡΠ³ΠΈΡ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΎΠ² ΠΏΡΠΈΠΊΠ»Π°Π΄Π½ΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ ΠΏΠΎΠΌΠΈΠΌΠΎ HTTP. Π Π±Π»ΠΈΠΆΠ°ΠΉΡΠ΅ΠΌ Π±ΡΠ΄ΡΡΠ΅ΠΌ ΠΏΠΎΡΠ²ΠΈΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ L7 ΡΠΎΡΡΠΈΠ½Π³Π°.
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Netramesh, Π΅ΡΠ»ΠΈ Π²Ρ ΡΡΠ°Π»ΠΊΠΈΠ²Π°Π΅ΡΠ΅ΡΡ Ρ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠΌΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ, ΠΈ ΠΏΠΈΡΠΈΡΠ΅ Π½Π°ΠΌ Π²ΠΎΠΏΡΠΎΡΡ ΠΈ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡ.
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com