РаспрСдСлённая трассировка: ΠΌΡ‹ всё Π΄Π΅Π»Π°Π»ΠΈ Π½Π΅ Ρ‚Π°ΠΊ

ΠŸΡ€ΠΈΠΌ. ΠΏΠ΅Ρ€Π΅Π².: Автор этого ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π° β€” Cindy Sridharan, ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ ΠΈΠ· ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ imgix, Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‰Π°ΡΡΡ вопросами Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ API ΠΈ, Π² частности, тСстирования микросСрвисов. Π’ этом ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π΅ ΠΎΠ½Π° дСлится своим Ρ€Π°Π·Π²Ρ‘Ρ€Π½ΡƒΡ‚Ρ‹ΠΌ Π²ΠΈΠ΄Π΅Π½ΠΈΠ΅ΠΌ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Π² области распрСдСлённой трассировки, Π³Π΄Π΅, ΠΏΠΎ Π΅Ρ‘ мнСнию, Π½Π°Π±Π»ΡŽΠ΄Π°Π΅Ρ‚ΡΡ нСдостаток ΠΏΠΎ-настоящСму эффСктивных инструмСнтов для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ насущных Π·Π°Π΄Π°Ρ‡.

РаспрСдСлённая трассировка: ΠΌΡ‹ всё Π΄Π΅Π»Π°Π»ΠΈ Π½Π΅ Ρ‚Π°ΠΊ
[Π˜Π»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΡ заимствована ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π° ΠΏΡ€ΠΎ Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΡƒΡŽ трассировку.]

БчитаСтся, Ρ‡Ρ‚ΠΎ Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΡƒΡŽ трассировку слоТно Π²Π½Π΅Π΄Ρ€ΡΡ‚ΡŒ, Π΄Π° ΠΈ ΠΎΡ‚Π΄Π°Ρ‡Π° ΠΎΡ‚ Π½Π΅Π΅ Π² Π»ΡƒΡ‡ΡˆΠ΅ΠΌ случаС ΡΠΎΠΌΠ½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ. Β«ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ½ΠΎΡΡ‚ΡŒΒ» трассировки ΠΎΠ±ΡŠΡΡΠ½ΡΡŽΡ‚ мноТСством ΠΏΡ€ΠΈΡ‡ΠΈΠ½, ΠΏΡ€ΠΈ этом часто ΡΡΡ‹Π»Π°ΡŽΡ‚ΡΡ Π½Π° Ρ‚Ρ€ΡƒΠ΄ΠΎΠ΅ΠΌΠΊΠΎΡΡ‚ΡŒ настройки ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° систСмы для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ² вмСстС с ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ запросом. Π₯отя эта ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΠΌΠ΅Π΅Ρ‚ мСсто, Π΅Π΅ вовсС нСльзя Π½Π°Π·Π²Π°Ρ‚ΡŒ Π½Π΅ΠΏΡ€Π΅ΠΎΠ΄ΠΎΠ»ΠΈΠΌΠΎΠΉ. Она, кстати, Π½Π΅ ΠΎΠ±ΡŠΡΡΠ½ΡΠ΅Ρ‚, ΠΏΠΎΡ‡Π΅ΠΌΡƒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ Π»ΡŽΠ±ΡΡ‚ трассировку (Π΄Π°ΠΆΠ΅ ΡƒΠΆΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€ΡƒΡŽΡ‰ΡƒΡŽ).

Главная Ρ‚Ρ€ΡƒΠ΄Π½ΠΎΡΡ‚ΡŒ с распрСдСлСнной трассировкой β€” это Π½Π΅ сбор Π΄Π°Π½Π½Ρ‹Ρ…, Π½Π΅ стандартизация Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠ² распространСния ΠΈ прСдставлСния Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² ΠΈ Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠΎΠ³Π΄Π°, Π³Π΄Π΅ ΠΈ ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Π²Ρ‹Π±ΠΎΡ€ΠΊΡƒ. Π― вовсС Π½Π΅ ΠΏΡ‹Ρ‚Π°ΡŽΡΡŒ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ эти Β«ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с ΡƒΡΠ²ΠΎΡΠ΅ΠΌΠΎΡΡ‚ΡŒΡŽΒ» β€” Π² самом Π΄Π΅Π»Π΅, ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ довольно Π·Π½Π°Ρ‡ΠΈΠΌΡ‹Π΅ тСхничСскиС ΠΈ (Ссли ΠΌΡ‹ рассматриваСм ΠΏΠΎ-настоящСму Open Source’Π½Ρ‹Π΅ стандарты ΠΈ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρ‹) политичСскиС Π²Ρ‹Π·ΠΎΠ²Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€Π΅ΠΎΠ΄ΠΎΠ»Π΅Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Ρ€Π΅ΡˆΠ΅Π½Π½Ρ‹ΠΌΠΈ.

Однако, Ссли ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ всС эти ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Ρ€Π΅ΡˆΠ΅Π½Ρ‹, высока Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π½ΠΈΡ‡Ρ‚ΠΎ сущСствСнно Π½Π΅ измСнится с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния ΠΎΠΏΡ‹Ρ‚Π° ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. Врассировка ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ ΠΏΡ€ΠΈΠ½ΠΎΡΠΈΡ‚ΡŒ ΠΏΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΏΠΎΠ»ΡŒΠ·Ρƒ Π² самых распространСнных сцСнариях ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ β€” Π΄Π°ΠΆΠ΅ послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΎΠ½Π° Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚Π°.

Вакая нСпохоТая трассировка

РаспрСдСлСнная трассировка Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя нСсколько Ρ€Π°Π·Ρ€ΠΎΠ·Π½Π΅Π½Π½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ²:

  • оснащСниС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ middleware срСдствами контроля;
  • ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° распрСдСлСнного контСкста;
  • сбор трассировок;
  • Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ трассировок;
  • ΠΈΡ… ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ ΠΈ визуализация.

ΠœΠ½ΠΎΠΆΠ΅ΡΡ‚Π²ΠΎ Ρ€Π°Π·Π³ΠΎΠ²ΠΎΡ€ΠΎΠ² ΠΎ распрСдСлСнной трассировкС сводятся ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ Π΅Π΅ ΠΊΠ°ΠΊ Π½Π΅ΠΊΡƒΡŽ ΡƒΠ½Π°Ρ€Π½ΡƒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ, СдинствСнной Ρ†Π΅Π»ΡŒΡŽ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ являСтся ΠΏΠΎΠΌΠΎΡ‰ΡŒ Π² ΠΏΠΎΠ»Π½ΠΎΠΉ диагностикС систСмы. Π’ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΌ это связано с Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊ историчСски Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π»ΠΈΡΡŒ прСдставлСния ΠΎ распрСдСлСнной трассировкС. Π’ записи Π² Π±Π»ΠΎΠ³Π΅, сдСланной, ΠΊΠΎΠ³Π΄Π° ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π»ΠΈΡΡŒ исходники Zipkin, ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΎΡΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ [Zipkin] Π΄Π΅Π»Π°Π΅Ρ‚ Twitter быстрСС. ΠŸΠ΅Ρ€Π²Ρ‹Π΅ коммСрчСскиС прСдлоТСния для трассировки Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ³Π°Π»ΠΈΡΡŒ ΠΊΠ°ΠΊ инструмСнты APM.

ΠŸΡ€ΠΈΠΌ. ΠΏΠ΅Ρ€Π΅Π².: Π”Π°Π±Ρ‹ дальнСйший тСкст воспринимался Π»ΡƒΡ‡ΡˆΠ΅, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ Π΄Π²Π° Π±Π°Π·ΠΎΠ²Ρ‹Ρ… Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π° согласно Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° OpenTracing:

  • Span β€” Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ элСмСнт распрСдСлСнной трассировки. ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΠ΅Ρ‚ собой описаниС Π½Π΅ΠΊΠΎΠ΅Π³ΠΎ Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ процСсса (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, запроса ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…) с Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ, Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ Π½Π°Ρ‡Π°Π»Π° ΠΈ окончания, Ρ‚Π΅Π³Π°ΠΌΠΈ, Π»ΠΎΠ³Π°ΠΌΠΈ ΠΈ контСкстом.
  • Span’Ρ‹ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ содСрТат ссылки Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ span’Ρ‹, Ρ‡Ρ‚ΠΎ позволяСт ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡ‚ΡŒ мноТСство span’ΠΎΠ² Π² Trace β€” Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΆΠΈΠ·Π½ΠΈ запроса Π² процСссС Π΅Π³ΠΎ пСрСмСщСния ΠΏΠΎ распрСдСлСнной систСмС.

Trace’Ρ‹ содСрТат нСвСроятно Ρ†Π΅Π½Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅, способныС ΠΏΠΎΠΌΠΎΡ‡ΡŒ Π² Ρ‚Π°ΠΊΠΈΡ… Π·Π°Π΄Π°Ρ‡Π°Ρ…, ΠΊΠ°ΠΊ: тСстированиС Π² production, ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ тСстов Π°Π²Π°Ρ€ΠΈΠΉΠ½ΠΎΠ³ΠΎ восстановлСния, тСстированиС с Π²Π½Π΅Π΄Ρ€Π΅Π½ΠΈΠ΅ΠΌ ошибок ΠΈ Ρ‚.Π΄. На самом Π΄Π΅Π»Π΅ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ΡƒΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ трассировку для ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… Ρ†Π΅Π»Π΅ΠΉ. НачнСм с Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Π°Ρ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° контСкста ΠΈΠΌΠ΅Π΅Ρ‚ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ примСнСния ΠΏΠΎΠΌΠΈΠΌΠΎ простого пСрСноса span’ΠΎΠ² Π² систСму хранСния:

  • НапримСр, Uber ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ трассировки для разграничСния тСстового Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° ΠΈ production-Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ°.
  • Facebook ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅ trace’ΠΎΠ² для Π°Π½Π°Π»ΠΈΠ·Π° критичСского ΠΏΡƒΡ‚ΠΈ ΠΈ для ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° Π²ΠΎ врСмя рСгулярных тСстов Π°Π²Π°Ρ€ΠΈΠΉΠ½ΠΎΠ³ΠΎ восстановлСния.
  • Π’Π°ΠΊΠΆΠ΅ ΡΠΎΡ†ΡΠ΅Ρ‚ΡŒ примСняСт Π±Π»ΠΎΠΊΠ½ΠΎΡ‚Ρ‹ Jupyter, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ запросы Π½Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°Ρ… трассировки.
  • ΠŸΡ€ΠΈΠ²Π΅Ρ€ΠΆΠ΅Π½Ρ†Ρ‹ LDFI (Lineage Driven Failure Injection) ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ распрСдСлСнныС trace’Ρ‹ для тСстирования с Π²Π½Π΅Π΄Ρ€Π΅Π½ΠΈΠ΅ΠΌ ошибок.

Ни ΠΎΠ΄ΠΈΠ½ ΠΈΠ· пСрСчислСнных Π²Ρ‹ΡˆΠ΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² Π½Π΅ относится Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ ΠΊ ΡΡ†Π΅Π½Π°Ρ€ΠΈΡŽ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ, Π² Ρ…ΠΎΠ΄Π΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ пытаСтся Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ, глядя Π½Π° trace.

Когда Π΄Π΅Π»ΠΎ всС ΠΆΠ΅ Π΄ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ Π΄ΠΎ сцСнария ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ, ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΌ интСрфСйсом остаСтся Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ° traceview (хотя Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ‚Π°ΠΊΠΆΠ΅ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ Π΅Π΅ Β«Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠΎΠΉ Π“Π°Π½Ρ‚Π°Β» ΠΈΠ»ΠΈ «каскадной Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠΎΠΉΒ»). Под traceview я ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°ΡŽ всС span’Ρ‹ ΠΈ ΡΠΎΠΏΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ вмСстС ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ trace. КаТдая систСма трассировки с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ коммСрчСскоС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ для трассировки ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ основанный Π½Π° traceview ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ интСрфСйс для Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, Π΄Π΅Ρ‚Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ trace’ΠΎΠ².

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° со всСми систСмами трассировки, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΌΠ½Π΅ довСлось ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ Π½Π° Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚, состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ итоговая визуализация (traceview) практичСски ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΎΡ‚Ρ€Π°ΠΆΠ°Π΅Ρ‚ особСнности процСсса Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ trace’Π°. Π”Π°ΠΆΠ΅ ΠΊΠΎΠ³Π΄Π° ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽΡ‚ΡΡ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ: ΠΊΠ°Ρ€Ρ‚Ρ‹ интСнсивности (heatmap), Ρ‚ΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΠΈ сСрвисов, гистограммы Π·Π°Π΄Π΅Ρ€ΠΆΠ΅ΠΊ (latency), β€” Π² ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌ ΠΈΡ‚ΠΎΠ³Π΅ ΠΎΠ½ΠΈ всС Ρ€Π°Π²Π½ΠΎ сводятся ΠΊ traceview.

Π’ ΠΏΡ€ΠΎΡˆΠ»ΠΎΠΌ я сСтовала Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Β«ΠΈΠ½Π½ΠΎΠ²Π°Ρ†ΠΈΠΉΒ» Π² области трассировки Π² ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΈ UI/UX, каТСтся, ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ… Π² trace, Π²Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ Π² Π½ΠΈΡ… ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ с высокой ΠΊΠ°Ρ€Π΄ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ (high-cardinality) ΠΈΠ»ΠΈ прСдоставлСниСм возмоТности Π΄Π΅Ρ‚Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ span’Ρ‹ ΠΈΠ»ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ запросы ΠΌΠ΅ΠΆ- ΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ-trace. ΠŸΡ€ΠΈ этом traceview остаСтся основным срСдством Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. Пока Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒΡΡ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²Π΅Ρ‰Π΅ΠΉ, распрСдСлСнная трассировка Π±ΡƒΠ΄Π΅Ρ‚ (Π² Π»ΡƒΡ‡ΡˆΠ΅ΠΌ случаС) Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒ 4-Π΅ мСсто Π² качСствС ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½ΠΎΠ³ΠΎ инструмСнта, вслСд Π·Π° ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠ°ΠΌΠΈ, Π»ΠΎΠ³Π°ΠΌΠΈ ΠΈ stack trace’Π°ΠΌΠΈ, Π° Π² Ρ…ΡƒΠ΄ΡˆΠ΅ΠΌ β€” окаТСтся пустой ΠΏΠΎΡ‚Π΅Ρ€Π΅ΠΉ Π΄Π΅Π½Π΅Π³ ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° с traceview

ΠŸΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ traceview β€” ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ ΠΏΠΎΠ»Π½ΡƒΡŽ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½Ρƒ пСрСдвиТСния ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ запроса ΠΏΠΎ всСм ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌ распрСдСлСнной систСмы, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΎΠ½ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅. НСкоторыС Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹Π΅ систСмы трассировки ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π΄Π΅Ρ‚Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ span’Ρ‹ ΠΈ ΠΏΡ€ΠΎΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Π±ΠΈΠ²ΠΊΡƒ ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ процСсса (ΠΊΠΎΠ³Π΄Π° span’Ρ‹ ΠΈΠΌΠ΅ΡŽΡ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ Π³Ρ€Π°Π½ΠΈΡ†Ρ‹).

Π‘Π°Π·ΠΎΠ²ΠΎΠΉ прСдпосылкой Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ микросСрвисов являСтся идСя ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ организационная структура растСт вмСстС с потрСбностями ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ. Π‘Ρ‚ΠΎΡ€ΠΎΠ½Π½ΠΈΠΊΠΈ микросСрвисов ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ распрСдСлСниС Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… бизнСс-Π·Π°Π΄Π°Ρ‡ ΠΏΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌ сСрвисам позволяСт нСбольшим, Π°Π²Ρ‚ΠΎΠ½ΠΎΠΌΠ½Ρ‹ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ вСсь ΠΆΠΈΠ·Π½Π΅Π½Π½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ» Ρ‚Π°ΠΊΠΈΡ… сСрвисов, давая ΠΈΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ нСзависимым ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ, Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ эти сСрвисы. Однако нСдостатком ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ распрСдСлСния являСтся потСря ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ сСрвис взаимодСйствуСт с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ. Π’ Ρ‚Π°ΠΊΠΈΡ… условиях распрСдСлСнная трассировка ΠΏΡ€Π΅Ρ‚Π΅Π½Π΄ΡƒΠ΅Ρ‚ Π½Π° Ρ€ΠΎΠ»ΡŒ Π½Π΅Π·Π°ΠΌΠ΅Π½ΠΈΠΌΠΎΠ³ΠΎ инструмСнта для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ слоТных взаимодСйствий ΠΌΠ΅ΠΆΠ΄Ρƒ сСрвисами.

Если Ρƒ вас Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΡˆΠ΅Π»ΠΎΠΌΠ»ΡΡŽΡ‰Π΅ слоТная распрСдСлСнная систСма, Ρ‚ΠΎ Π½ΠΈ ΠΎΠ΄ΠΈΠ½ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ Π½Π΅ способСн ΡƒΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π² Π³ΠΎΠ»ΠΎΠ²Π΅ Π΅Π΅ ΠΏΠΎΠ»Π½ΡƒΡŽ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½Ρƒ. На самом Π΄Π΅Π»Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° инструмСнта исходя ΠΈΠ· прСдполоТСния, Ρ‡Ρ‚ΠΎ это Π²ΠΎΠΎΠ±Ρ‰Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, являСтся Ρ‡Π΅ΠΌ-Ρ‚ΠΎ Π²Ρ€ΠΎΠ΄Π΅ Π°Π½Ρ‚ΠΈΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Π° (нСэффСктивным ΠΈ Π½Π΅ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΌ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠΌ). Π’ ΠΈΠ΄Π΅Π°Π»Π΅ для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ трСбуСтся инструмСнт, ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‰ΠΈΠΉ ΡΡƒΠ·ΠΈΡ‚ΡŒ Π·ΠΎΠ½Ρƒ поиска, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€Ρ‹ ΠΌΠΎΠ³Π»ΠΈ сосрСдоточится Π½Π° подмноТСствС ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠΉ (сСрвисах/ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΡ…/хостах ΠΈ Ρ‚. ΠΏ.), ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΡ… ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ ΠΊ рассматриваСмому ΡΡ†Π΅Π½Π°Ρ€ΠΈΡŽ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹. ΠŸΡ€ΠΈ выяснСнии ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹ сбоя ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€Ρ‹ Π½Π΅ обязаны Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚ΡŒΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ происходило Π²ΠΎ всСх сСрвисах сразу, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρ‚Π°ΠΊΠΎΠ΅ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΡ€Π΅Ρ‡ΠΈΠ»ΠΎ Π±Ρ‹ самой ΠΈΠ΄Π΅Π΅ микросСрвисной Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹.

Однако traceview прСдставляСт собой ΠΈΠΌΠ΅Π½Π½ΠΎ это. Π”Π°, Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ систСмы трассировки ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽΡ‚ сТатыС traceview, ΠΊΠΎΠ³Π΄Π° число span’ΠΎΠ² Π² trace Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π΅Π»ΠΈΠΊΠΎ, Ρ‡Ρ‚ΠΎ ΠΈΡ… Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΎΠ΄Π½ΠΎΠΉ Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. Однако ΠΈΠ·-Π·Π° большого объСма ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, содСрТащСйся Π΄Π°ΠΆΠ΅ Π² Ρ‚Π°ΠΊΠΎΠΉ ΡƒΡ€Π΅Π·Π°Π½Π½ΠΎΠΉ Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€Ρ‹ всС Ρ€Π°Π²Π½ΠΎ Π²Ρ‹Π½ΡƒΠΆΠ΄Π΅Π½Ρ‹ Β«ΠΏΡ€ΠΎΡΠ΅ΠΈΠ²Π°Ρ‚ΡŒΒ» Π΅Π΅, Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ суТая Π²Ρ‹Π±ΠΎΡ€ΠΊΡƒ Π΄ΠΎ Π½Π°Π±ΠΎΡ€Π° сСрвисов-источников ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ. Π£Π²Ρ‹, Π½Π° этом ΠΏΠΎΠΏΡ€ΠΈΡ‰Π΅ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ быстрСС Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ°, ΠΌΠ΅Π½Π΅Π΅ ΠΏΠΎΠ΄Π²Π΅Ρ€ΠΆΠ΅Π½Ρ‹ ошибкам, Π° ΠΈΡ… Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Π±ΠΎΠ»Π΅Π΅ повторяСмы.

Π•Ρ‰Π΅ ΠΎΠ΄Π½Π° ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ я ΡΡ‡ΠΈΡ‚Π°ΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄ traceview Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΌ, связана с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΠΏΠ»ΠΎΡ…ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ Π½Π° основС Π³ΠΈΠΏΠΎΡ‚Π΅Π·. Π’ своСй основС ΠΎΡ‚Π»Π°Π΄ΠΊΠ° β€” это ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ процСсс, Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠΉΡΡ с Π³ΠΈΠΏΠΎΡ‚Π΅Π·Ρ‹, Π·Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… наблюдСний ΠΈ Ρ„Π°ΠΊΡ‚ΠΎΠ², ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Ρ… ΠΎΡ‚ систСмы ΠΏΠΎ Ρ€Π°Π·Π½Ρ‹ΠΌ Π²Π΅ΠΊΡ‚ΠΎΡ€Π°ΠΌ, Π²Ρ‹Π²ΠΎΠ΄Ρ‹/обобщСния ΠΈ дальнСйшая ΠΎΡ†Π΅Π½ΠΊΠ° истинности Π³ΠΈΠΏΠΎΡ‚Π΅Π·Ρ‹.

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ быстро ΠΈ дСшСво Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π³ΠΈΠΏΠΎΡ‚Π΅Π·Ρ‹ ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΡƒΠ»ΡƒΡ‡ΡˆΠ°Ρ‚ΡŒ ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΡƒΡŽ модСль являСтся ΠΊΡ€Π°Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½Ρ‹ΠΌ ΠΊΠ°ΠΌΠ½Π΅ΠΌ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ. Π›ΡŽΠ±ΠΎΠΉ ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½Ρ‹ΠΉ инструмСнт Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΌ ΠΈ ΡΡƒΠΆΠ°Ρ‚ΡŒ пространство поиска ΠΈΠ»ΠΈ, Π² случаС Π»ΠΎΠΆΠ½ΠΎΠ³ΠΎ слСда, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ Π½Π°Π·Π°Π΄ ΠΈ ΡΡ„ΠΎΠΊΡƒΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ области систСмы. Π˜Π΄Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ инструмСнт Π±ΡƒΠ΄Π΅Ρ‚ Π΄Π΅Π»Π°Ρ‚ΡŒ это с ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ΠΌ, сразу привлСкая Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΊ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ½Ρ‹ΠΌ областям.

Π£Π²Ρ‹, traceview нСльзя Π½Π°Π·Π²Π°Ρ‚ΡŒ инструмСнтом с ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΌ интСрфСйсом. Π›ΡƒΡ‡ΡˆΠ΅Π΅, Π½Π° Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Π΄Π΅ΡΡ‚ΡŒΡΡ ΠΏΡ€ΠΈ Π΅Π³ΠΎ использовании, β€” это ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚ΡŒ Π½Π΅ΠΊΠΈΠΉ источник ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½Π½Ρ‹Ρ… Π·Π°Π΄Π΅Ρ€ΠΆΠ΅ΠΊ ΠΈ ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ всСвозмоТныС Ρ‚Π΅Π³ΠΈ ΠΈ Π»ΠΎΠ³ΠΈ, связанныС с Π½ΠΈΠΌ. Π­Ρ‚ΠΎ Π½Π΅ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€Ρƒ Π²Ρ‹ΡΠ²ΠΈΡ‚ΡŒ закономСрности Π² Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ΅, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ спСцифика распрСдСлСния Π·Π°Π΄Π΅Ρ€ΠΆΠ΅ΠΊ, ΠΈΠ»ΠΈ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚ΡŒ коррСляции ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ измСрСниями. ΠžΠ±ΠΎΠ±Ρ‰Π΅Π½Π½Ρ‹ΠΉ Π°Π½Π°Π»ΠΈΠ· trace’ΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΌΠΎΡ‡ΡŒ ΠΎΠ±ΠΎΠΉΡ‚ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· этих ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ. Π”Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° с использованиСм машинного обучСния ΠΏΠΎ Π²Ρ‹ΡΠ²Π»Π΅Π½ΠΈΡŽ Π°Π½ΠΎΠΌΠ°Π»ΡŒΠ½Ρ‹Ρ… span’ΠΎΠ² ΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ подмноТСства Ρ‚Π΅Π³ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ связаны с Π°Π½ΠΎΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΠΌΠ½Π΅ ΠΏΠΎΠΊΠ° Π½Π΅ Π²ΡΡ‚Ρ€Π΅Ρ‡Π°Π»ΠΈΡΡŒ ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π°Ρ…ΠΎΠ΄ΠΎΠΊ, сдСланных с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ машинного обучСния ΠΈΠ»ΠΈ Π°Π½Π°Π»ΠΈΠ·Π° Π΄Π°Π½Π½Ρ‹Ρ…, ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½Π½Ρ‹Ρ… ΠΊ span’Π°ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΡ‚Π»ΠΈΡ‡Π°Π»ΠΈΡΡŒ ΠΎΡ‚ traceview ΠΈΠ»ΠΈ DAG (Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π½ΠΎΠ³ΠΎ ацикличСского Π³Ρ€Π°Ρ„Π°).

Span’Ρ‹ слишком Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹Π΅

Π€ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Π°Ρ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° с traceview Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ span’Ρ‹ ΡΠ²Π»ΡΡŽΡ‚ΡΡ слишком Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹ΠΌΠΈ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π°ΠΌΠΈ ΠΊΠ°ΠΊ для Π°Π½Π°Π»ΠΈΠ·Π° Π·Π°Π΄Π΅Ρ€ΠΆΠ΅ΠΊ (latency), Ρ‚Π°ΠΊ ΠΈ для Π°Π½Π°Π»ΠΈΠ·Π° исходных ΠΏΡ€ΠΈΡ‡ΠΈΠ½. Π­Ρ‚ΠΎ всС Ρ€Π°Π²Π½ΠΎ Ρ‡Ρ‚ΠΎ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ процСссора Π² ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ ΡƒΡΡ‚Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅, зная, Ρ‡Ρ‚ΠΎ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Π³ΠΎΡ€Π°Π·Π΄ΠΎ Π±ΠΎΠ»Π΅Π΅ высокоуровнСвыС инструмСнты Π²Ρ€ΠΎΠ΄Π΅ backtrace, Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠ΄ΠΎΠ±Π½Π΅Π΅.

Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, я Π²ΠΎΠ·ΡŒΠΌΡƒ Π½Π° сСбя ΡΠΌΠ΅Π»ΠΎΡΡ‚ΡŒ ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅: Π² ΠΈΠ΄Π΅Π°Π»Π΅ Π½Π°ΠΌ вовсС Π½Π΅ Π½ΡƒΠΆΠ½Π° полная ΠΊΠ°Ρ€Ρ‚ΠΈΠ½Π° ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ΅Π΄ΡˆΠ΅Π³ΠΎ Π²ΠΎ врСмя ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π° запроса, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ соврСмСнныС инструмСнты для трассировки. ВмСсто этого трСбуСтся нСкая Ρ„ΠΎΡ€ΠΌΠ° абстракции Π±ΠΎΠ»Π΅Π΅ высокого уровня, содСрТащая свСдСния ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ пошло Π½Π΅ Ρ‚Π°ΠΊ (ΠΏΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΈΠΈ с backtrace), вмСстС с Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ контСкстом. ВмСсто Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°Π±Π»ΡŽΠ΄Π°Ρ‚ΡŒ вСсь trace, я ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°ΡŽ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ Π΅Π³ΠΎ Ρ‡Π°ΡΡ‚ΡŒ, Π³Π΄Π΅ происходит Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ интСрСсноС ΠΈΠ»ΠΈ Π½Π΅ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ΅. Π’ настоящСС врСмя поиск осущСствляСтся Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ: ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ trace ΠΈ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ span’Ρ‹ Π² поисках Ρ‡Π΅Π³ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ интСрСсного. ΠŸΠΎΠ΄Ρ…ΠΎΠ΄, ΠΊΠΎΠ³Π΄Π° люди таращатся Π½Π° span’Ρ‹ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… trace’Π°Ρ… Π² Π½Π°Π΄Π΅ΠΆΠ΄Π΅ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚ΡŒ ΠΏΠΎΠ΄ΠΎΠ·Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ, Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ Π½Π΅ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅Ρ‚ΡΡ (особСнно ΠΊΠΎΠ³Π΄Π° ΠΈΠΌ приходится ΠΎΡΠΌΡ‹ΡΠ»ΠΈΠ²Π°Ρ‚ΡŒ всС ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅, Π·Π°ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… span’Π°Ρ…, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ span ID, имя ΠΌΠ΅Ρ‚ΠΎΠ΄Π° RPC, ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ span’Π°, Π»ΠΎΠ³ΠΈ, Ρ‚Π΅Π³ΠΈ ΠΈ Ρ‚.Π΄.).

ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρ‹ traceview

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ трассировки Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹, ΠΊΠΎΠ³Π΄Π° ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π½Π΅Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»ΡŒΠ½ΠΎΠ΅ прСдставлСниС ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ происходит Π²ΠΎ взаимосвязанных частях систСмы. Π”ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° этого Π½Π΅Ρ‚, процСсс ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΌ остаСтся ΠΈΠ½Π΅Ρ€Ρ‚Π½Ρ‹ΠΌ ΠΈ зависит ΠΎΡ‚ способности ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΏΠΎΠ΄ΠΌΠ΅Ρ‡Π°Ρ‚ΡŒ Π²Π΅Ρ€Π½Ρ‹Π΅ коррСляции, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹Π΅ части систСмы ΠΈΠ»ΠΈ ΡΠΎΠ±ΠΈΡ€Π°Ρ‚ΡŒ кусочки ΠΌΠΎΠ·Π°ΠΈΠΊΠΈ Π²ΠΎΠ΅Π΄ΠΈΠ½ΠΎΒ β€” Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ инструмСнта, ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‰Π΅Π³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Ρ„ΠΎΡ€ΠΌΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ эти Π³ΠΈΠΏΠΎΡ‚Π΅Π·Ρ‹.

Π― Π½Π΅ Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π΄ΠΈΠ·Π°ΠΉΠ½Π΅Ρ€ ΠΈ Π½Π΅ спСциалист Π² области UX, ΠΎΠ΄Π½Π°ΠΊΠΎ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅ Ρ…ΠΎΡ‡Ρƒ ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ нСсколькими идСями ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ.

Ѐокус Π½Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… сСрвисах

Π’ условиях, ΠΊΠΎΠ³Π΄Π° ΠΎΡ‚Ρ€Π°ΡΠ»ΡŒ консолидируСтся Π²ΠΎΠΊΡ€ΡƒΠ³ ΠΈΠ΄Π΅ΠΉ SLO (service level objectives) ΠΈ SLI (service level indicators), каТСтся Ρ€Π°Π·ΡƒΠΌΠ½Ρ‹ΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ ΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ Π·Π° соотвСтствиСм ΠΈΡ… сСрвисов этим цСлям. Из этого слСдуСт, Ρ‡Ρ‚ΠΎ ориСнтированная Π½Π° сСрвис визуализация Π»ΡƒΡ‡ΡˆΠ΅ всСго ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для Ρ‚Π°ΠΊΠΈΡ… ΠΊΠΎΠΌΠ°Π½Π΄.

Trace’Ρ‹, особСнно Π±Π΅Π· Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ, ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΊΠ»Π°Π΄Π΅Π·Π΅ΠΌ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π΅ распрСдСлСнной систСмы. Π­Ρ‚Ρƒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠΎΡ€ΠΌΠΈΡ‚ΡŒ Ρ…ΠΈΡ‚Ρ€ΠΎΠΌΡƒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π½Π° сСрвис Π½Π°Ρ…ΠΎΠ΄ΠΊΠΈ.Они ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ выявлСны Π·Π°Ρ€Π°Π½Π΅Π΅ β€” Π΅Ρ‰Π΅ Π΄ΠΎ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ взглянул Π½Π° trace’Ρ‹:

  1. Π”ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡ‹ распрСдСлСния Π·Π°Π΄Π΅Ρ€ΠΆΠ΅ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для сильно Π²Ρ‹Π΄Π΅Π»ΡΡŽΡ‰ΠΈΡ…ΡΡ запросов (outlier requests);
  2. Π”ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡ‹ распрСдСлСния Π·Π°Π΄Π΅Ρ€ΠΆΠ΅ΠΊ для случаСв, ΠΊΠΎΠ³Π΄Π° SLO-Ρ†Π΅Π»ΠΈ сСрвиса Π½Π΅ Π΄ΠΎΡΡ‚ΠΈΠ³Π°ΡŽΡ‚ΡΡ;
  3. Π‘Π°ΠΌΡ‹Π΅ Β«ΠΎΠ±Ρ‰ΠΈΠ΅Β», «интСрСсныС» ΠΈ «странныС» Ρ‚Π΅Π³ΠΈ Π² запросах, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ‡Π°Ρ‰Π΅ всСго ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‚ΡΡ;
  4. Π Π°Π·Π±ΠΈΠ²ΠΊΠ° Π·Π°Π΄Π΅Ρ€ΠΆΠ΅ΠΊ для случаСв, ΠΊΠΎΠ³Π΄Π° зависимости сСрвиса Π½Π΅ Π΄ΠΎΡΡ‚ΠΈΠ³Π°ΡŽΡ‚ поставлСнных SLO-Ρ†Π΅Π»Π΅ΠΉ;
  5. Π Π°Π·Π±ΠΈΠ²ΠΊΠ° Π·Π°Π΄Π΅Ρ€ΠΆΠ΅ΠΊ ΠΏΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌ ниТСстоящим (downstream) сСрвисам.

На Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· этих вопросов встроСнныС ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ просто Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΡ‚Π²Π΅Ρ‚ΠΈΡ‚ΡŒ, заставляя ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Ρ‚Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒ span’Ρ‹. Π’ ΠΈΡ‚ΠΎΠ³Π΅ ΠΌΡ‹ ΠΈΠΌΠ΅Π΅ΠΌ Ρ‡Ρ€Π΅Π·Π²Ρ‹Ρ‡Π°ΠΉΠ½ΠΎ Π²Ρ€Π°ΠΆΠ΄Π΅Π±Π½Ρ‹ΠΉ ΠΊ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ.

Π’ связи с этим Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ вопрос: ΠΊΠ°ΠΊ насчСт комплСксных взаимодСйствий ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ сСрвисами, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌΠΈ Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ? Π Π°Π·Π²Π΅ traceview Π½Π΅ считаСтся Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ подходящим инструмСнтом для освСщСния ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΉ ситуации?

ΠœΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ, Π²Π»Π°Π΄Π΅Π»ΡŒΡ†Ρ‹ stateless-сСрвисов, Π²Π»Π°Π΄Π΅Π»ΡŒΡ†Ρ‹ управляСмых stateful-сСрвисов (Π²Ρ€ΠΎΠ΄Π΅ Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ…) ΠΈ Π²Π»Π°Π΄Π΅Π»ΡŒΡ†Ρ‹ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ заинтСрСсованы Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ прСдставлСнии распрСдСлСнной систСмы; traceview β€” это слишком ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ для этих Π² ΠΊΠΎΡ€Π½Π΅ ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹Ρ… Π½ΡƒΠΆΠ΄. Π”Π°ΠΆΠ΅ Π² ΠΎΡ‡Π΅Π½ΡŒ слоТной микросСрвисной Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅ Π²Π»Π°Π΄Π΅Π»ΡŒΡ†Π°ΠΌ сСрвиса Π½Π΅ Π½ΡƒΠΆΠ½Ρ‹ Π³Π»ΡƒΠ±ΠΎΠΊΠΈΠ΅ знания Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅ΠΌ Π΄Π²ΡƒΡ…-Ρ‚Ρ€Π΅Ρ… upstream- ΠΈ downstream-сСрвисов. Π’ сущности, Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ сцСнариСв ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ достаточно ΠΎΡ‚Π²Π΅Ρ‡Π°Ρ‚ΡŒ Π½Π° вопросы, ΠΊΠ°ΡΠ°ΡŽΡ‰ΠΈΠ΅ΡΡ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ Π½Π°Π±ΠΎΡ€Π° сСрвисов.

Π­Ρ‚ΠΎ ΠΏΠΎΡ…ΠΎΠΆΠ΅ Π½Π° разглядываниС нСбольшого подмноТСства сСрвисов Ρ‡Π΅Ρ€Π΅Π· ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ стСкло Ρ€Π°Π΄ΠΈ скрупулСзного изучСния. Π­Ρ‚ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ насущныС вопросы, ΠΊΠ°ΡΠ°ΡŽΡ‰ΠΈΠ΅ΡΡ комплСксного взаимодСйствия ΠΌΠ΅ΠΆΠ΄Ρƒ этими сСрвисами ΠΈ ΠΈΡ… нСпосрСдствСнными зависимостями. Π­Ρ‚ΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ backtrace’Ρƒ Π² ΠΌΠΈΡ€Π΅ сСрвисов, Π³Π΄Π΅ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ Π·Π½Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π½Π΅ Ρ‚Π°ΠΊ, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ прСдставлСниС ΠΎ происходящСм Π² ΠΎΠΊΡ€ΡƒΠΆΠ°ΡŽΡ‰ΠΈΡ… сСрвисах, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ.

ΠŸΡ€ΠΎΠ΄Π²ΠΈΠ³Π°Π΅ΠΌΡ‹ΠΉ мною ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ β€” это полная ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΊ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρƒ «свСрху Π²Π½ΠΈΠ·Β», основанному Π½Π° traceview, ΠΊΠΎΠ³Π΄Π° Π°Π½Π°Π»ΠΈΠ· начинаСтся со всСго trace’Π°, Π° Π·Π°Ρ‚Π΅ΠΌ постСпСнно спускаСтся Π΄ΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… span’ΠΎΠ². Напротив, ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ «снизу Π²Π²Π΅Ρ€Ρ…Β» начинаСтся с Π°Π½Π°Π»ΠΈΠ·Π° нСбольшого участка, Π±Π»ΠΈΠ·ΠΊΠΎΠ³ΠΎ ΠΊ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅ ΠΈΠ½Ρ†ΠΈΠ΄Π΅Π½Ρ‚Π°, Π° Π·Π°Ρ‚Π΅ΠΌ пространство поиска Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅Ρ‚ΡΡ ΠΏΡ€ΠΈ нСобходимости (с Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ ΠΏΡ€ΠΈΠ²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ΠΌ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΊΠΎΠΌΠ°Π½Π΄ для Π°Π½Π°Π»ΠΈΠ·Π° Π±ΠΎΠ»Π΅Π΅ ΡˆΠΈΡ€ΠΎΠΊΠΎΠ³ΠΎ спСктра сСрвисов). Π’Ρ‚ΠΎΡ€ΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Π»ΡƒΡ‡ΡˆΠ΅ приспособлСн для быстрой ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Ρ… Π³ΠΈΠΏΠΎΡ‚Π΅Π·. ПослС получСния ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊ Π±ΠΎΠ»Π΅Π΅ Ρ†Π΅Π»Π΅Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π½ΠΎΠΌΡƒ ΠΈ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠΌΡƒ Π°Π½Π°Π»ΠΈΠ·Ρƒ.

ΠŸΠΎΡΡ‚Ρ€ΠΎΠ΅Π½ΠΈΠ΅ Ρ‚ΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΠΈ

ΠŸΡ€ΠΈΠ²ΡΠ·Π°Π½Π½Ρ‹Π΅ ΠΊ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌΡƒ сСрвису прСдставлСния ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ нСвСроятно ΠΏΠΎΠ»Π΅Π·Π½Ρ‹, Ссли ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π·Π½Π°Π΅Ρ‚, ΠΊΠ°ΠΊΠΎΠΉ сСрвис ΠΈΠ»ΠΈ Π³Ρ€ΡƒΠΏΠΏΠ° сСрвисов ΠΏΠΎΠ²ΠΈΠ½Π½Π° Π² ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠΈ Π·Π°Π΄Π΅Ρ€ΠΆΠ΅ΠΊ ΠΈΠ»ΠΈ являСтся источником ошибок. Однако Π² слоТной систСмС ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ сСрвиса-Π½Π°Ρ€ΡƒΡˆΠΈΡ‚Π΅Π»Ρ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ Π½Π΅Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ Π·Π°Π΄Π°Ρ‡Π΅ΠΉ Π²ΠΎ врСмя сбоя, особСнно Ссли сообщСния ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ… ΠΎΡ‚ сСрвисов Π½Π΅ поступали.

ΠŸΠΎΡΡ‚Ρ€ΠΎΠ΅Π½ΠΈΠ΅ Ρ‚ΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΠΈ сСрвисов ΠΌΠΎΠΆΠ΅Ρ‚ сильно ΠΏΠΎΠΌΠΎΡ‡ΡŒ ΠΏΡ€ΠΈ выяснСнии, ΠΊΠ°ΠΊΠΎΠΉ сСрвис дСмонстрируСт всплСск частоты ошибок ΠΈΠ»ΠΈ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ, приводящих ΠΊ Π·Π°ΠΌΠ΅Ρ‚Π½ΠΎΠΌΡƒ ΡƒΡ…ΡƒΠ΄ΡˆΠ΅Π½ΠΈΡŽ Ρ€Π°Π±ΠΎΡ‚Ρ‹ сСрвиса. Говоря ΠΎ построСнии Ρ‚ΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΠΈ, я имСю Π² Π²ΠΈΠ΄Ρƒ Π½Π΅ ΠΊΠ°Ρ€Ρ‚Ρƒ сСрвисов, ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‰ΡƒΡŽ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΉΡΡ Π² систСмС сСрвис ΠΈ ΠΈΠ·Π²Π΅ΡΡ‚Π½ΡƒΡŽ своими ΠΊΠ°Ρ€Ρ‚Π°ΠΌΠΈ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ Π² Ρ„ΠΎΡ€ΠΌΠ΅ Π·Π²Π΅Π·Π΄Ρ‹ смСрти. Π’Π°ΠΊΠΎΠ΅ прСдставлСниС Π½ΠΈΡ‡Π΅ΠΌ Π½Π΅ Π»ΡƒΡ‡ΡˆΠ΅, Ρ‡Π΅ΠΌ traceview Π½Π° основС Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π½ΠΎΠ³ΠΎ ацикличСского Π³Ρ€Π°Ρ„Π°. ВмСсто этого ΠΌΠ½Π΅ Ρ…ΠΎΡ‚Π΅Π»ΠΎΡΡŒ Π±Ρ‹ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ динамичСски Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΡƒΡŽ Ρ‚ΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΡŽ сСрвисов, ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΡƒΡŽ Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°Ρ…, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ частота ошибок, врСмя ΠΎΡ‚ΠΊΠ»ΠΈΠΊΠ° ΠΈΠ»ΠΈ Π½Π° любом Π·Π°Π΄Π°Π½Π½ΠΎΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΏΡ€ΠΎΡΡΠ½ΠΈΡ‚ΡŒ ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ с ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΌΠΈ ΠΏΠΎΠ΄ΠΎΠ·Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ сСрвисами.

Π”Π°Π²Π°ΠΉΡ‚Π΅ обратимся ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ. ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΠΌ сСбС Π½Π΅ΠΊΠΈΠΉ гипотСтичСский новостной сайт. БСрвис Π³Π»Π°Π²Π½ΠΎΠΉ страницы (front page) обмСниваСтся Π΄Π°Π½Π½Ρ‹ΠΌΠΈ с Redis, с сСрвисом Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΉ, с Ρ€Π΅ΠΊΠ»Π°ΠΌΠ½Ρ‹ΠΌ сСрвисом ΠΈ видСосСрвисом. ВидСосСрвис Π±Π΅Ρ€Π΅Ρ‚ Π²ΠΈΠ΄Π΅ΠΎΡ€ΠΎΠ»ΠΈΠΊΠΈ с S3, Π° ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅ β€” ΠΈΠ· DynamoDB. БСрвис Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΉ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· DynamoDB, Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· Redis ΠΈ MySQL, ΠΏΠΈΡˆΠ΅Ρ‚ сообщСния Π² Kafka. Π Π΅ΠΊΠ»Π°ΠΌΠ½Ρ‹ΠΉ сСрвис ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· MySQL ΠΈ ΠΏΠΈΡˆΠ΅Ρ‚ сообщСния Π² Kafka.

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΎ схСматичСскоС ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ этой Ρ‚ΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΠΈ (Ρ‚ΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΡŽ строят ΠΌΠ½ΠΎΠ³ΠΈΠ΅ коммСрчСскиС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ для трассировки). Оно ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ³ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ, Ссли Π½ΡƒΠΆΠ½ΠΎ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ Π² зависимостях сСрвисов. Однако Π²ΠΎ врСмя ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ, ΠΊΠΎΠ³Π΄Π° Π½Π΅ΠΊΠΈΠΉ сСрвис (скаТСм, видСосСрвис) дСмонстрируСт ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½Π½ΠΎΠ΅ врСмя ΠΎΡ‚ΠΊΠ»ΠΈΠΊΠ°, подобная топология Π½Π΅ слишком ΠΏΠΎΠ»Π΅Π·Π½Π°.

РаспрСдСлённая трассировка: ΠΌΡ‹ всё Π΄Π΅Π»Π°Π»ΠΈ Π½Π΅ Ρ‚Π°ΠΊ
Π‘Ρ…Π΅ΠΌΠ° сСрвисов гипотСтичСского новостного сайта

Π›ΡƒΡ‡ΡˆΠ΅ подошла Π±Ρ‹ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ°, изобраТСнная Π½ΠΈΠΆΠ΅. На Π½Π΅ΠΉ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ½Ρ‹ΠΉ сСрвис (video) ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ прямо Π² Ρ†Π΅Π½Ρ‚Ρ€Π΅. ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ сразу Π΅Π³ΠΎ Π·Π°ΠΌΠ΅Ρ‡Π°Π΅Ρ‚. Из Π΄Π°Π½Π½ΠΎΠΉ Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ становится понятно, Ρ‡Ρ‚ΠΎ Π²ΠΈΠ΄Π΅ΠΎ-сСрвис Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ аномально ΠΈΠ·-Π·Π° увСличСния Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΎΡ‚ΠΊΠ»ΠΈΠΊΠ° S3, Ρ‡Ρ‚ΠΎ влияСт Π½Π° ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ части Π³Π»Π°Π²Π½ΠΎΠΉ страницы.

РаспрСдСлённая трассировка: ΠΌΡ‹ всё Π΄Π΅Π»Π°Π»ΠΈ Π½Π΅ Ρ‚Π°ΠΊ
ДинамичСская топология, ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‰Π°Ρ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ «интСрСсныС» сСрвисы

ДинамичСски Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ топологичСскиС схСмы ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ Π±ΠΎΠ»Π΅Π΅ эффСктивными, Π½Π΅ΠΆΠ΅Π»ΠΈ статичСскиС ΠΊΠ°Ρ€Ρ‚Ρ‹ сСрвисов, особСнно Π² эластичных, Π°Π²Ρ‚ΠΎΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… инфраструктурах. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΡ€Π°Π²Π½ΠΈΠ²Π°Ρ‚ΡŒ ΠΈ ΡΠΎΠΏΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Ρ‚ΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΠΈ сСрвисов позволяСт ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ вопросы. Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΡ‡Π½Ρ‹Π΅ вопросы ΠΎ систСмС с большСй Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒΡŽ приводят ΠΊ Π»ΡƒΡ‡ΡˆΠ΅ΠΌΡƒ пониманию Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ систСма Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚.

Π‘Ρ€Π°Π²Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅

Π•Ρ‰Π΅ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΡΡ€Π°Π²Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅. Π’ настоящСС врСмя trace’Ρ‹ Π½Π΅ слишком Ρ…ΠΎΡ€ΠΎΡˆΠΎ подходят для сравнСния Π±ΠΎΠΊ ΠΎ Π±ΠΎΠΊ, поэтому ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΡΡ€Π°Π²Π½ΠΈΠ²Π°ΡŽΡ‚ΡΡ span’Ρ‹. А основная идСя этой ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΊΠ°ΠΊ Ρ€Π°Π· ΠΈ состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ span’Ρ‹ слишком Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Ρ‚ΡŒ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Ρ†Π΅Π½Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΈΠ· Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² трассировки.

Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ Π΄Π²ΡƒΡ… trace’ΠΎΠ² Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈΠ°Π»ΡŒΠ½ΠΎ Π½ΠΎΠ²Ρ‹Ρ… Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ. На самом Π΄Π΅Π»Π΅ достаточно Ρ‡Π΅Π³ΠΎ-Ρ‚ΠΎ Π²Ρ€ΠΎΠ΄Π΅ гистограммы, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π΅ΠΉ Ρ‚Ρƒ ΠΆΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, Ρ‡Ρ‚ΠΎ ΠΈ traceview. Π£Π΄ΠΈΠ²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, Π½ΠΎ Π΄Π°ΠΆΠ΅ этот простой ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ‚ принСсти Π³ΠΎΡ€Π°Π·Π΄ΠΎ большС ΠΏΠ»ΠΎΠ΄ΠΎΠ², Ρ‡Π΅ΠΌ простоС ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ Π΄Π²ΡƒΡ… trace’ΠΎΠ² ΠΏΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. Π•Ρ‰Π΅ Π±ΠΎΠ»Π΅Π΅ ΠΌΠΎΡ‰Π½ΠΎΠΉ стала Π±Ρ‹ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ сравнСниС trace’ΠΎΠ² Π² совокупности. Π‘Ρ‹Π»ΠΎ Π±Ρ‹ ΠΊΡ€Π°ΠΉΠ½Π΅ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, ΠΊΠ°ΠΊ Π½Π΅Π΄Π°Π²Π½ΠΎ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… с Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ GC (сборки мусора) влияСт Π½Π° врСмя ΠΎΡ‚ΠΊΠ»ΠΈΠΊΠ° downstream-сСрвиса Π² ΠΌΠ°ΡΡˆΡ‚Π°Π±Π΅ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… часов. Если Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ я ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽ здСсь, каТСтся ΠΏΠΎΡ…ΠΎΠΆΠΈΠΌ Π½Π° А/Π’-Π°Π½Π°Π»ΠΈΠ· влияния инфраструктурных ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π²ΠΎ мноТСствС сСрвисов с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² трассировки, Ρ‚ΠΎ Π²Ρ‹ Π½Π΅ слишком Π΄Π°Π»Π΅ΠΊΠΈ ΠΎΡ‚ истины.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π― Π½Π΅ ΠΏΠΎΠ΄Π²Π΅Ρ€Π³Π°ΡŽ сомнСнию ΠΏΠΎΠ»Π΅Π·Π½ΠΎΡΡ‚ΡŒ самой трассировки. Π˜ΡΠΊΡ€Π΅Π½Π½Π΅ Π²Π΅Ρ€ΡŽ, Ρ‡Ρ‚ΠΎ Π½Π΅Ρ‚ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΡΠΎΠ±ΠΈΡ€Π°Ρ‚ΡŒ Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΆΠ΅ Π±ΠΎΠ³Π°Ρ‚Ρ‹Π΅, ΠΊΠ°Π·ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΈ ΠΊΠΎΠ½Ρ‚Π΅ΠΊΡΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅, ΠΊΠ°ΠΊ Ρ‚Π΅, Ρ‡Ρ‚ΠΎ содСрТатся Π² trace’Π΅. Однако я Ρ‚Π°ΠΊΠΆΠ΅ ΡΡ‡ΠΈΡ‚Π°ΡŽ, Ρ‡Ρ‚ΠΎ всС Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ для трассировки ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ эти Π΄Π°Π½Π½Ρ‹Π΅ Ρ‡Ρ€Π΅Π·Π²Ρ‹Ρ‡Π°ΠΉΠ½ΠΎ нСэффСктивно. Π”ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° инструмСнты для трассировки Π±ΡƒΠ΄ΡƒΡ‚ Π·Π°Ρ†ΠΈΠΊΠ»Π΅Π½Ρ‹ Π½Π° traceview-прСдставлСнии, ΠΎΠ½ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Ρ‹ Π² возмоТности ΠΏΠΎ максимуму ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ†Π΅Π½Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·Π²Π»Π΅Ρ‡ΡŒ ΠΈΠ· Π΄Π°Π½Π½Ρ‹Ρ…, содСрТащихся Π² trace’Π°Ρ…. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, сущСствуСт риск дальнСйшСго развития ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ нСдруТСствСнного ΠΈ Π½Π΅ΠΈΠ½Ρ‚ΡƒΠΈΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ интСрфСйса, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ сильно ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΡƒΡΡ‚Ρ€Π°Π½ΡΡ‚ΡŒ ошибки Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ.

ΠžΡ‚Π»Π°Π΄ΠΊΠ° слоТных систСм, Π΄Π°ΠΆΠ΅ с использованиСм Π½ΠΎΠ²Π΅ΠΉΡˆΠΈΡ… инструмСнтов, нСвСроятно слоТна. Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠΌΠΎΠ³Π°Ρ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ Ρ„ΠΎΡ€ΠΌΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ Π³ΠΈΠΏΠΎΡ‚Π΅Π·Ρƒ, Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ прСдоставляя Ρ€Π΅Π»Π΅Π²Π°Π½Ρ‚Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, выявляя выбросы ΠΈ подмСчая особСнности Π² распрСдСлСнии Π·Π°Π΄Π΅Ρ€ΠΆΠ΅ΠΊ. Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ трассировка стала ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ инструмСнтом Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΏΡ€ΠΈ устранСнии сбоСв Π² production ΠΈΠ»ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, ΠΎΡ…Π²Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‰ΠΈΡ… Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ сСрвисы, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ интСрфСйсы ΠΈ Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, Π² большСй стСпСни ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², ΡΠΎΠ·Π΄Π°ΡŽΡ‰ΠΈΡ… ΠΈ ΡΠΊΡΠΏΠ»ΡƒΠ°Ρ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ… эти сСрвисы.

ΠŸΠΎΡ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ ΡΠ΅Ρ€ΡŒΠ΅Π·Π½Ρ‹Π΅ умствСнныС усилия, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ систСму, которая Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ сигналы, доступныС Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°Ρ… трассировки, способом, ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ для облСгчСния Π°Π½Π°Π»ΠΈΠ·Π° ΠΈ ΡƒΠΌΠΎΠ·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ. НСобходимо ΠΏΡ€ΠΎΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ, ΠΊΠ°ΠΊ Π°Π±ΡΡ‚Ρ€Π°Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΡŽ систСмы Π²ΠΎ врСмя ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΌΠΎΠ³Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ ΠΏΡ€Π΅ΠΎΠ΄ΠΎΠ»Π΅Π²Π°Ρ‚ΡŒ слСпыС Π·ΠΎΠ½Ρ‹, Π½Π΅ заглядывая Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ trace’Ρ‹ ΠΈΠ»ΠΈ span’Ρ‹.

Нам Π½ΡƒΠΆΠ½Ρ‹ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠ΅ возмоТности ΠΏΠΎ Π°Π±ΡΡ‚Ρ€Π°Π³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ ΠΈ Ρ€Π°Π·Π±ΠΈΠ΅Π½ΠΈΡŽ Π½Π° ΡƒΡ€ΠΎΠ²Π½ΠΈ (особСнно Π² UI). Π’Π°ΠΊΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ…ΠΎΡ€ΠΎΡˆΠΎ Π²ΠΏΠΈΡˆΡƒΡ‚ΡΡ Π² процСсс ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ Π½Π° основС Π³ΠΈΠΏΠΎΡ‚Π΅Π·, Π³Π΄Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ вопросы ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ Π³ΠΈΠΏΠΎΡ‚Π΅Π·Ρ‹. Они Π½Π΅ Ρ€Π΅ΡˆΠ°Ρ‚ всС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с Π½Π°Π±Π»ΡŽΠ΄Π°Π΅ΠΌΠΎΡΡ‚ΡŒΡŽ автоматичСски, ΠΎΠ΄Π½Π°ΠΊΠΎ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠΎΠΌΠΎΠ³Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ ΠΎΡ‚Ρ‚Π°Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ ΠΈΠ½Ρ‚ΡƒΠΈΡ†ΠΈΡŽ ΠΈ Ρ„ΠΎΡ€ΠΌΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ Π²Π·Π²Π΅ΡˆΠ΅Π½Π½Ρ‹Π΅ вопросы. Π― ΠΏΡ€ΠΈΠ·Ρ‹Π²Π°ΡŽ ΠΊ Π±ΠΎΠ»Π΅Π΅ Π²Π΄ΡƒΠΌΡ‡ΠΈΠ²ΠΎΠΌΡƒ ΠΈ ΠΈΠ½Π½ΠΎΠ²Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΌΡƒ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρƒ Π² области Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. Π—Π΄Π΅ΡΡŒ Π΅ΡΡ‚ΡŒ Ρ€Π΅Π°Π»ΡŒΠ½Π°Ρ пСрспСктива Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Ρ‹.

P.S. ΠΎΡ‚ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Ρ‡ΠΈΠΊΠ°

Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ Ρ‚Π°ΠΊΠΆΠ΅ Π² нашСм Π±Π»ΠΎΠ³Π΅:

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