ΠŸΡ€ΠΎΡΠ»Π΅Π΄ΡΠ²Π°Π½Π΅ ΠΈ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ Π² Istio: микросСрвизи ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ Π½Π° нСопрСдСлСност

ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ Π½Π° нСопрСдСлСността Π½Π° Π₯Π°ΠΉΠ·Π΅Π½Π±Π΅Ρ€Π³ гласи, Ρ‡Π΅ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΈΠ·ΠΌΠ΅Ρ€Π²Π°Ρ‚ Π΅Π΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΎΠ±Π΅ΠΊΡ‚Π° ΠΈ Π½Π΅Π³ΠΎΠ²Π°Ρ‚Π° скорост. Ако ΠΎΠ±Π΅ΠΊΡ‚ΡŠΡ‚ Π΅ Π² Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅, Ρ‚ΠΎΠΉ няма ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ мСстополоТСниС. А Π°ΠΊΠΎ мСстополоТСниСто Π΅ извСстно - Π·Π½Π°Ρ‡ΠΈ няма скорост.

ΠŸΡ€ΠΎΡΠ»Π΅Π΄ΡΠ²Π°Π½Π΅ ΠΈ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ Π² Istio: микросСрвизи ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ Π½Π° нСопрСдСлСност

Π©ΠΎ сС отнася Π΄ΠΎ микросСрвиситС Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Red Hat OpenShift (ΠΈ управлявани ΠΎΡ‚ Kubernetes), Π±Π»Π°Π³ΠΎΠ΄Π°Ρ€Π΅Π½ΠΈΠ΅ Π½Π° ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½ΠΈΡ софтуСр с ΠΎΡ‚Π²ΠΎΡ€Π΅Π½ ΠΊΠΎΠ΄, Ρ‚Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΅Π΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π΄Π° Π΄ΠΎΠΊΠ»Π°Π΄Π²Π°Ρ‚ ΠΊΠ°ΠΊΡ‚ΠΎ Π·Π° своята производитСлност, Ρ‚Π°ΠΊΠ° ΠΈ Π·Π° ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅Ρ‚ΠΎ си. Бтарият Π₯Π°ΠΉΠ·Π΅Π½Π±Π΅Ρ€Π³ Ρ‚ΠΎΠ²Π°, Ρ€Π°Π·Π±ΠΈΡ€Π° сС, Π½Π΅ ΠΎΠΏΡ€ΠΎΠ²Π΅Ρ€Π³Π°Π²Π°, Π½ΠΎ Π΅Π»ΠΈΠΌΠΈΠ½ΠΈΡ€Π° нСопрСдСлСността ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π° с ΠΎΠ±Π»Π°Ρ‡Π½ΠΈ прилоТСния. Istio позволява лСсно ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° прослСдяванС (трСйсинг) ΠΈ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ Π½Π° Ρ‚Π°ΠΊΠΈΠ²Π° прилоТСния, Π·Π° Π΄Π° Π³ΠΈ Π΄ΡŠΡ€ΠΆΠΈ ΠΏΠΎΠ΄ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ».

ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠΌΠ΅ тСрминологията

Под прослСдяванС (Tracing) Ρ€Π°Π·Π±ΠΈΡ€Π°ΠΌΠ΅ Π»ΠΎΠ³Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° систСмната активност. Π—Π²ΡƒΡ‡ΠΈ доста ΠΎΠ±Ρ‰ΠΎ, Π½ΠΎ Π²ΡΡŠΡ‰Π½ΠΎΡΡ‚ Π΅Π΄Π½ΠΎ ΠΎΡ‚ основнитС ΠΏΡ€Π°Π²ΠΈΠ»Π° Ρ‚ΡƒΠΊ Π΅ Π΄Π° сС записват Π΄Π°Π½Π½ΠΈΡ‚Π΅ ΠΎΡ‚ трСйса Π² ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½ΠΎΡ‚ΠΎ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅, Π±Π΅Π· Π΄Π° сС притСсняватС Π·Π° Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ ΠΈΠΌ. А цялата Ρ€Π°Π±ΠΎΡ‚Π° ΠΏΠΎ Ρ‚ΡŠΡ€ΡΠ΅Π½Π΅ ΠΈ Π°Π½Π°Π»ΠΈΠ· Π½Π° Π΄Π°Π½Π½ΠΈΡ‚Π΅ сС носи ΠΎΡ‚ потрСбитСля ΠΈΠΌ. Π’ Istio сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° систСма Π·Π° прослСдяванС Jaeger, Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Ρ‰Π° ΠΌΠΎΠ΄Π΅Π»Π° Π½Π° Π΄Π°Π½Π½ΠΈΡ‚Π΅ OpenTracing.

ВрСйсовС (Traces, ΠΈ Π΄ΡƒΠΌΠ°Ρ‚Π° β€žΡ‚Ρ€Π΅ΠΉΡΠΎΠ²Π΅β€œ Ρ‚ΡƒΠΊ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π² Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° β€žΡΠ»Π΅Π΄ΠΈβ€œ, ΠΊΠ°ΠΊΡ‚ΠΎ Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π² балистичната СкспСртиза) Ρ‰Π΅ Π½Π°Ρ€ΠΈΡ‡Π°ΠΌΠ΅ Π΄Π°Π½Π½ΠΈΡ‚Π΅, ΠΊΠΎΠΈΡ‚ΠΎ напълно описват ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° заявка ΠΈΠ»ΠΈ Π΅Π΄ΠΈΠ½ΠΈΡ†Π° Ρ€Π°Π±ΠΎΡ‚Π°, ΠΊΠ°ΠΊΡ‚ΠΎ сС ΠΊΠ°Π·Π²Π°, β€žΠΎΡ‚ Π½Π°Ρ‡Π°Π»ΠΎ Π΄ΠΎ ΠΊΡ€Π°ΠΉβ€œ. НапримСр, всичко, ΠΊΠΎΠ΅Ρ‚ΠΎ сС случва ΠΎΡ‚ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°, ΠΊΠΎΠ³Π°Ρ‚ΠΎ потрСбитСлят натиснС Π±ΡƒΡ‚ΠΎΠ½Π° Π½Π° ΡƒΠ΅Π± страницата, Π΄ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° Π½Π° Π²Ρ€ΡŠΡ‰Π°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ, Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ всичкитС микросСрвизи, участващи Π² Ρ‚ΠΎΠ²Π°. МоТС Π΄Π° сС ΠΊΠ°ΠΆΠ΅, Ρ‡Π΅ Π΅Π΄ΠΈΠ½ трСйс напълно описва (ΠΈΠ»ΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€Π°) ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° заявка Π½Π°ΠΏΡ€Π΅Π΄ ΠΈ Π½Π°Π·Π°Π΄. Π’ интСрфСйса Π½Π° Jaeger трСйсовСтС сС Ρ€Π°Π·Π»Π°Π³Π°Ρ‚ Π½Π° ΡΡŠΡΡ‚Π°Π²Π½ΠΈ части ΠΏΠΎ оста Π½Π° Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ, ΠΊΠ°Ρ‚ΠΎ Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠ°ΠΊ Π²Π΅Ρ€ΠΈΠ³Π° ΠΌΠΎΠΆΠ΅ Π΄Π° сС Ρ€Π°Π·Π»ΠΎΠΆΠΈ Π½Π° ΠΎΡ‚Π΄Π΅Π»Π½ΠΈ Π·Π²Π΅Π½Π°. Π‘Π°ΠΌΠΎ Ρ‡Π΅ вмСсто Π·Π²Π΅Π½Π°, трСйса сС ΡΡŠΡΡ‚ΠΎΠΈ ΠΎΡ‚ Ρ‚.Π½Π°Ρ€. span.

Span – Ρ‚ΠΎΠ²Π° Π΅ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»ΡŠΡ‚ ΠΎΡ‚ Π½Π°Ρ‡Π°Π»ΠΎΡ‚ΠΎ Π½Π° ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡ†Π° Ρ€Π°Π±ΠΎΡ‚Π° Π΄ΠΎ Π½Π΅ΠΉΠ½ΠΎΡ‚ΠΎ Π·Π°Π²ΡŠΡ€ΡˆΠ²Π°Π½Π΅. ΠŸΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠ°Π²Π°ΠΉΠΊΠΈ аналогията, ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΊΠ°ΠΆΠ΅, Ρ‡Π΅ всСки span прСдставлява ΠΎΡ‚Π΄Π΅Π»Π½ΠΎ Π·Π²Π΅Π½ΠΎ Π½Π° Π²Π΅Ρ€ΠΈΠ³Π°Ρ‚Π°. Span ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠΌΠ° (ΠΈΠ»ΠΈ Π΄Π° няма) Π΅Π΄ΠΈΠ½ ΠΈΠ»ΠΈ няколко Π΄ΡŠΡ‰Π΅Ρ€Π½ΠΈ span. Π’ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ Π½Π° Ρ‚ΠΎΠ²Π°, span Π½Π° Π½Π°ΠΉ-високо Π½ΠΈΠ²ΠΎ (root span) Ρ‰Π΅ ΠΈΠΌΠ° ΡΡŠΡ‰Π°Ρ‚Π° ΠΎΠ±Ρ‰Π° ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠΈΡ‚Π΅Π»Π½ΠΎΡΡ‚, ΠΊΠ°ΠΊΠ²Π°Ρ‚ΠΎ ΠΈΠΌΠ° трСйса, към която сС отнася.

ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ – Π²ΡΡŠΡ‰Π½ΠΎΡΡ‚, Ρ‚ΠΎΠ²Π° Π΅ самото наблюдСниС Π½Π° Π²Π°ΡˆΠ°Ρ‚Π° систСма – Ρ‡Ρ€Π΅Π· интСрфСйса ΠΈΠ»ΠΈ срСдства Π·Π° автоматизация. ΠžΡΠ½ΠΎΠ²Π°Ρ‚Π° Π½Π° ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° сС ΡΡŠΡΡ‚ΠΎΠΈ ΠΎΡ‚ Ρ‚Ρ€Π°ΡΠΈΡ€ΠΎΠ²ΡŠΡ‡Π½ΠΈ Π΄Π°Π½Π½ΠΈ. Π’ Istio ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ΡŠΡ‚ Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Prometheus ΠΈ ΠΈΠΌΠ° ΡΡŠΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²Π°Ρ‰ интСрфСйс. Prometheus ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π΅Π½ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° извСстия Alerts ΠΈ Alert Managers.

ΠžΡΡ‚Π°Π²ΡΠΌΠ΅ Π±Π΅Π»Π΅Π·ΠΈ

Π—Π° Π΄Π° станС възмоТно трасировката, ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ трябва Π΄Π° създадС колСкция ΠΎΡ‚ span-ΠΎΠ²Π΅. Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° Ρ‚Π΅ трябва Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ Скспортирани Π² Jaeger, Π·Π° Π΄Π° ΠΌΠΎΠΆΠ΅ Ρ‚ΠΎΠΉ Π΄Π° създадС Π²ΠΈΠ·ΡƒΠ°Π»Π½ΠΎ прСдставянС Π½Π° трасировката. Π‘Ρ€Π΅Π΄ Π΄Ρ€ΡƒΠ³ΠΎΡ‚ΠΎ, Ρ‚Π΅Π·ΠΈ span-ΠΎΠ²Π΅ ΠΌΠ°Ρ€ΠΊΠΈΡ€Π°Ρ‚ ΠΈΠΌΠ΅Ρ‚ΠΎ Π½Π° опСрацията, ΠΊΠ°ΠΊΡ‚ΠΎ ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π²ΠΈΡ‚Π΅ ΠΌΠ°Ρ€ΠΊΠΈ Π½Π° Π½Π΅ΠΉΠ½ΠΎΡ‚ΠΎ Π½Π°Ρ‡Π°Π»ΠΎ ΠΈ Π·Π°Π²ΡŠΡ€ΡˆΠ²Π°Π½Π΅. ΠŸΡ€Π΅Π΄Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° span-ΠΎΠ²Π΅Ρ‚Π΅ сС ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π° Ρ‡Ρ€Π΅Π· прСнасочванС Π½Π° Π·Π°Π³Π»Π°Π²ΠΊΠΈΡ‚Π΅ Π½Π° HTTP-заявкитС, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈ Π·Π° Jaeger, ΠΎΡ‚ входящитС запитвания към изходящитС запитвания. Π’ зависимост ΠΎΡ‚ използвания Π΅Π·ΠΈΠΊ Π·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½Π΅, Π·Π° Ρ‚ΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° сС Π½Π°Π»ΠΎΠΆΠΈ ΠΌΠ°Π»ΠΊΠ° модификация Π½Π° изходния ΠΊΠΎΠ΄ Π½Π° прилоТСнията. По-Π΄ΠΎΠ»Ρƒ Π΅ Π΄Π°Π΄Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅Π½ ΠΊΠΎΠ΄ Π½Π° Java (ΠΏΡ€ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Ρ„Ρ€Π΅ΠΉΠΌΡƒΡŠΡ€ΠΊΠ° Spring Boot), ΠΊΠΎΠΉΡ‚ΠΎ добавя Π·Π°Π³Π»Π°Π²ΠΊΠΈΡ‚Π΅ B3 (ΠΏΠΎ Zipkin стил) към Π²Π°ΡˆΠ΅Ρ‚ΠΎ Π·Π°ΠΏΠΈΡ‚Π²Π°Π½Π΅ Π² конфигурационния клас Π½Π° Spring:

ΠŸΡ€ΠΎΡΠ»Π΅Π΄ΡΠ²Π°Π½Π΅ ΠΈ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ Π² Istio: микросСрвизи ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ Π½Π° нСопрСдСлСност
Π˜Π·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ сС слСднитС настройки Π½Π° Π·Π°Π³Π»Π°Π²ΠΊΠΈΡ‚Π΅:

ΠŸΡ€ΠΎΡΠ»Π΅Π΄ΡΠ²Π°Π½Π΅ ΠΈ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ Π² Istio: микросСрвизи ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ Π½Π° нСопрСдСлСност
Ако ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ Java, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π½Π΅ промСнятС ΠΊΠΎΠ΄Π°, Π° просто Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΡ‚Π΅ няколко Ρ€Π΅Π΄Π° Π² POM Ρ„Π°ΠΉΠ»Π° Π½Π° Maven ΠΈ Π΄Π° Π·Π°Π΄Π°Π΄Π΅Ρ‚Π΅ ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ Π½Π° срСдата. Π•Ρ‚ΠΎ ΠΊΠ°ΠΊΠ²ΠΈ Ρ€Π΅Π΄ΠΎΠ²Π΅ трябва Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΡ‚Π΅ Π² POM.XML Ρ„Π°ΠΉΠ»Π°, Π·Π° Π΄Π° Π²Π½Π΅Π΄Ρ€ΠΈΡ‚Π΅ Jaeger Tracer Resolver:

ΠŸΡ€ΠΎΡΠ»Π΅Π΄ΡΠ²Π°Π½Π΅ ΠΈ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ Π² Istio: микросСрвизи ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ Π½Π° нСопрСдСлСност
А ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ Π½Π° срСдата сС Π·Π°Π΄Π°Π²Π°Ρ‚ Π² Dockerfile:

ΠŸΡ€ΠΎΡΠ»Π΅Π΄ΡΠ²Π°Π½Π΅ ΠΈ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ Π² Istio: микросСрвизи ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ Π½Π° нСопрСдСлСност
Всичко, сСга всичко Π΅ настроСно ΠΈ Π½Π°ΡˆΠΈΡ‚Π΅ микросСрвизи Ρ‰Π΅ Π·Π°ΠΏΠΎΡ‡Π½Π°Ρ‚ Π΄Π° Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Ρ‚ Π΄Π°Π½Π½ΠΈ Π·Π° трасировката.

НаблюдавамС Π² ΠΎΠ±Ρ‰ΠΈ Π»ΠΈΠ½ΠΈΠΈ

Π‘ΡŠΡΡ‚Π°Π²ΡŠΡ‚ Π½Π° Istio Π²ΠΊΠ»ΡŽΡ‡Π²Π° прост ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅Π½ ΠΏΠ°Π½Π΅Π» Π½Π° Π±Π°Π·Π°Ρ‚Π° Π½Π° Grafana. ΠšΠΎΠ³Π°Ρ‚ΠΎ всичко Π΅ настроСно ΠΈ Ρ€Π°Π±ΠΎΡ‚ΠΈ Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Red Hat OpenShift PaaS (Π² нашия ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Red Hat OpenShift ΠΈ Kubernetes са Ρ€Π°Π·ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈ Π½Π° minishift), Ρ‚ΠΎΠ·ΠΈ ΠΏΠ°Π½Π΅Π» сС стартира с слСдната ΠΊΠΎΠΌΠ°Π½Π΄Π°:

open "$(minishift openshift service grafana -u)/d/1/istio-dashboard?refresh=5⩝Id=1"

ΠŸΠ°Π½Π΅Π»ΡŠΡ‚ Grafana позволява Π±ΡŠΡ€Π·ΠΎ оцСняванС Π½Π° Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° Π½Π° систСмата. Π€Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ ΠΎΡ‚ Ρ‚ΠΎΠ·ΠΈ ΠΏΠ°Π½Π΅Π» Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ Π½Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ ΠΏΠΎ-Π΄ΠΎΠ»Ρƒ:

ΠŸΡ€ΠΎΡΠ»Π΅Π΄ΡΠ²Π°Π½Π΅ ΠΈ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ Π² Istio: микросСрвизи ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ Π½Π° нСопрСдСлСност
Π’ΡƒΠΊ Π²ΠΈΠΆΠ΄Π°ΠΌΠ΅, Ρ‡Π΅ микросСрвис customer ΠΈΠ·Π²ΠΈΠΊΠ²Π° микросСрвиза preference v1, ΠΊΠΎΠΉΡ‚ΠΎ ΠΎΡ‚ своя страна ΠΈΠ·Π²ΠΈΠΊΠ²Π° микросСрвиситС recommendation v1 ΠΈ v2. Π’ ΠΏΠ°Π½Π΅Π»Π° Π½Π° Grafana ΠΈΠΌΠ° Π±Π»ΠΎΠΊ Dashboard Row Π·Π° високо Π½ΠΈΠ²ΠΎ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ, ΠΊΠ°Ρ‚ΠΎ ΠΎΠ±Ρ‰ΠΎ количСство заявки (Global Request Volume), дял Π½Π° ΡƒΡΠΏΠ΅ΡˆΠ½ΠΈΡ‚Π΅ заявки (success rates) ΠΈ Π³Ρ€Π΅ΡˆΠΊΠΈ 4xx. ОсвСн Ρ‚ΠΎΠ²Π°, Ρ‚Π°ΠΌ ΠΈΠΌΠ° прСдставянС Server Mesh с Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ Π·Π° всСки сСрвис ΠΈ Π±Π»ΠΎΠΊ Services Row Π·Π° ΠΏΡ€Π΅Π³Π»Π΅Π΄ Π½Π° ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΈ Π΄Π°Π½Π½ΠΈ Π·Π° всСки ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ Π½Π° всСки сСрвис.

Π‘Π΅Π³Π° Π΄Π° Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΠΏΠΎ-дълбоко

Π‘ ΠΏΡ€Π°Π²ΠΈΠ»Π½ΠΎ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Π½Π° трасировка Istio, ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΊΠ°Π·Π²Π°ΠΌΠ΅, Ρ€Π°Π±ΠΎΡ‚ΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ ΠΎΡ‚ кутията ΠΈ позволява Π΄ΡŠΠ»Π±ΠΎΡ‡ΠΈΠ½Π½ΠΎ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° производитСлността Π½Π° систСмата. Π’ потрСбитСлския интСрфСйс Π½Π° Jaeger ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΏΡ€Π΅Π³Π»Π΅ΠΆΠ΄Π°Ρ‚Π΅ трасировкитС ΠΈ Π΄Π° Π²ΠΈΠ΄ΠΈΡ‚Π΅ ΠΊΠΎΠ»ΠΊΠΎ дълбоко ΠΈ Π΄Π°Π»Π΅Ρ‡ Ρ‚Π΅ стигат, Π° ΡΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° ΠΈ Π²ΠΈΠ·ΡƒΠ°Π»Π½ΠΎ Π΄Π° Π»ΠΎΠΊΠ°Π»ΠΈΠ·ΠΈΡ€Π°Ρ‚Π΅ натискащи Ρ‚ΠΎΡ‡ΠΊΠΈ Π² производитСлността. ΠŸΡ€ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Red Hat OpenShift Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° minishift, стартиратС Jaeger UI с слСдната ΠΊΠΎΠΌΠ°Π½Π΄Π°:

minishift openshift service jaeger-query --in-browser

ΠŸΡ€ΠΎΡΠ»Π΅Π΄ΡΠ²Π°Π½Π΅ ΠΈ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ Π² Istio: микросСрвизи ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ Π½Π° нСопрСдСлСност
Какво ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΊΠ°ΠΆΠ΅ΠΌ Π·Π° трасировката Π½Π° Ρ‚ΠΎΠ·ΠΈ ΡΠΊΡ€ΠΈΠΉΠ½ΡˆΠΎΡ‚:

  • Вя сС Ρ€Π°Π·Π±ΠΈΠ²Π° Π½Π° 7 span-Π°.
  • ΠžΠ±Ρ‰ΠΎΡ‚ΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π·Π° изпълнСниС Π΅ 6.99 ms.
  • Π—Π° микросСрвиза recommendation, ΠΊΠΎΠΉΡ‚ΠΎ Π΅ послСдният Π² Π²Π΅Ρ€ΠΈΠ³Π°Ρ‚Π°, сС отдСлят 0.69 ms.

Π”ΠΈΠ°Π³Ρ€Π°ΠΌΠΈΡ‚Π΅ ΠΎΡ‚ Ρ‚ΠΎΠ·ΠΈ Ρ‚ΠΈΠΏ позволяват Π±ΡŠΡ€Π·ΠΎ Π΄Π° сС Ρ€Π°Π·Π±Π΅Ρ€Π΅ ситуацията, ΠΊΠΎΠ³Π°Ρ‚ΠΎ ΠΏΠΎΡ€Π°Π΄ΠΈ някой Π½Π΅Ρ€Π°Π±ΠΎΡ‚Π΅Ρ‰ сСрвис страда производитСлността Π½Π° цялата систСма.

А сСга Π΄Π° услоТним Π·Π°Π΄Π°Ρ‡Π°Ρ‚Π° ΠΈ Π΄Π° стартирамС Π΄Π²Π° СкзСмпляра Π½Π° микросСрвиза recommendation:v2 с ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° oc scale --replicas=2 deployment/recommendation-v2. Π•Ρ‚ΠΎ ΠΊΠ°ΠΊΠ²ΠΈ Ρ‰Π΅ ΠΈΠΌΠ°ΠΌΠ΅ pod-ΠΎΠ²Π΅ слСд Ρ‚ΠΎΠ²Π°:

ΠŸΡ€ΠΎΡΠ»Π΅Π΄ΡΠ²Π°Π½Π΅ ΠΈ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ Π² Istio: микросСрвизи ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ Π½Π° нСопрСдСлСност
Ако сСга сС Π²ΡŠΡ€Π½Π΅ΠΌ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π² Jaeger ΠΈ Ρ€Π°Π·Π³ΡŠΠ½Π΅ΠΌ span-Π° Π·Π° сСрвиза recommendation, Ρ‰Π΅ Π²ΠΈΠ΄ΠΈΠΌ Π½Π° ΠΊΠΎΠΉ pod сС ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·ΠΈΡ€Π°Ρ‚ заявкитС. По Ρ‚ΠΎΠ·ΠΈ Π½Π°Ρ‡ΠΈΠ½, ΠΌΠΎΠΆΠ΅ΠΌ лСсно Π΄Π° Π»ΠΎΠΊΠ°Π»ΠΈΠ·ΠΈΡ€Π°ΠΌΠ΅ забавянСто Π½Π° Π½ΠΈΠ²ΠΎΡ‚ΠΎ Π½Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π΅Π½ pod. Врябва Π΄Π° сС Π³Π»Π΅Π΄Π° Π½Π° ΠΏΠΎΠ»Π΅Ρ‚ΠΎ node_id:

ΠŸΡ€ΠΎΡΠ»Π΅Π΄ΡΠ²Π°Π½Π΅ ΠΈ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ Π² Istio: микросСрвизи ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ Π½Π° нСопрСдСлСност

КъдС ΠΈ ΠΊΠ°ΠΊ всичко ΠΌΠΈΠ½Π°Π²Π°

Π‘Π΅Π³Π° ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Π²Π°ΠΌΠ΅ Π² интСрфСйса Π½Π° Prometheus ΠΈ съвсСм ΠΎΡ‡Π°ΠΊΠ²Π°Π½ΠΎ Π²ΠΈΠΆΠ΄Π°ΠΌΠ΅, Ρ‡Π΅ заявкитС ΠΌΠ΅ΠΆΠ΄Ρƒ Π²Ρ‚ΠΎΡ€Π°Ρ‚Π° ΠΈ ΠΏΡŠΡ€Π²Π°Ρ‚Π° вСрсия Π½Π° сСрвиза recommendation сС дСлят Π² ΡΡŠΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ 2:1, строго ΠΏΠΎ количСството Π½Π° Ρ€Π°Π±ΠΎΡ‚Π΅Ρ‰ΠΈΡ‚Π΅ pod-ΠΎΠ²Π΅. Π’Π°ΠΆΠ½ΠΎ Π΅ Π΄Π° сС ΠΎΡ‚Π±Π΅Π»Π΅ΠΆΠΈ, Ρ‡Π΅ Ρ‚Π°Π·ΠΈ Π³Ρ€Π°Ρ„ΠΈΠΊΠ° Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π½ΠΎ Ρ‰Π΅ сС промСня ΠΏΡ€ΠΈ ΠΌΠ°Ρ‰Π°Π±ΠΈΡ€Π°Π½Π΅ Π½Π° pod-ΠΎΠ²Π΅Ρ‚Π΅ Π½Π°Π³ΠΎΡ€Π΅-Π½Π°Π΄ΠΎΠ»Ρƒ, ΠΊΠΎΠ΅Ρ‚ΠΎ Ρ‰Π΅ Π΅ особСно ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΏΡ€ΠΈ Canary Deployment (Ρ‰Π΅ Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ Ρ‚ΠΎΠ·ΠΈ ΠΌΠΎΠ΄Π΅Π» Π½Π° Ρ€Π°Π·Π³Ρ€ΡŠΡ‰Π°Π½Π΅ ΠΏΠΎ-ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ слСдващия ΠΏΡŠΡ‚).

ΠŸΡ€ΠΎΡΠ»Π΅Π΄ΡΠ²Π°Π½Π΅ ΠΈ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ Π² Istio: микросСрвизи ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ Π½Π° нСопрСдСлСност

Всичко Π΅Π΄Π²Π° Π·Π°ΠΏΠΎΡ‡Π²Π°

Π’ΡΡŠΡ‰Π½ΠΎΡΡ‚ днСс сС докоснахмС Π΄ΠΎ ΡΡŠΠΊΡ€ΠΎΠ²ΠΈΡ‰Π½ΠΈΡ†Π° ΠΎΡ‚ ΠΏΠΎΠ»Π΅Π·Π½Π° информация Π·Π° Jaeger, Grafana ΠΈ Prometheus. Π’ ΠΎΠ±Ρ‰ΠΈ Π»ΠΈΠ½ΠΈΠΈ, Ρ‚ΠΎΠ²Π° бСшС Ρ†Π΅Π»Ρ‚Π° Π½ΠΈ – Π΄Π° Π²ΠΈ насочим Π² ΠΏΡ€Π°Π²ΠΈΠ»Π½Π°Ρ‚Π° посока ΠΈ Π΄Π° ΠΎΡ‚ΠΊΡ€ΠΈΠ΅ΠΌ пСрспСктивитС Π½Π° Istio.

И Π½Π΅ забравяйтС, всичко Ρ‚ΠΎΠ²Π° Π΅ Π²Π΅Ρ‡Π΅ Π²Π³Ρ€Π°Π΄Π΅Π½Π° част ΠΎΡ‚ Istio. ΠŸΡ€ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ½ΠΈ Π΅Π·ΠΈΠΊΠΎΠ²Π΅ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Java) ΠΈ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠ²Π΅ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Spring Boot) всичко Ρ‚ΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½ΠΎ, Π±Π΅Π· Π΄Π° сС докосва Π΄ΠΎ самия ΠΊΠΎΠ΄ Π½Π° прилоТСнията. Π”Π°, Ρ‰Π΅ трябва Π΄Π° ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€Π°Ρ‚Π΅ ΠΊΠΎΠ΄Π° ΠΌΠ°Π»ΠΊΠΎ, Π°ΠΊΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ Π΄Ρ€ΡƒΠ³ΠΈ Π΅Π·ΠΈΡ†ΠΈ, Π½Π°ΠΉ-Π²Π΅Ρ‡Π΅ става Π΄ΡƒΠΌΠ° Π·Π° Nodejs ΠΈΠ»ΠΈ C#. Но Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ прослСдимостта (Ρ‡Π΅Ρ‚ΠΈ, β€žΡ‚Ρ€Π°ΡΠΈΡ€ΠΎΠ²ΠΊΠ°β€œ) Π΅ Π΅Π΄Π½ΠΎ ΠΎΡ‚ Π·Π°Π΄ΡŠΠ»ΠΆΠΈΡ‚Π΅Π»Π½ΠΈΡ‚Π΅ условия Π·Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Π½Π° Π½Π°Π΄Π΅ΠΆΠ΄Π½ΠΈ ΠΎΠ±Π»Π°Ρ‡Π½ΠΈ систСми, Ρ‚Π°ΠΊΠ° ΠΈΠ»ΠΈ ΠΈΠ½Π°Ρ‡Π΅ Ρ‰Π΅ трябва Π΄Π° Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€Π°Ρ‚Π΅ ΠΊΠΎΠ΄Π°, нСзависимо Π΄Π°Π»ΠΈ ΠΈΠΌΠ°Ρ‚Π΅ Istio ΠΈΠ»ΠΈ Π½Π΅. Π—Π°Ρ‰ΠΎ Π΄Π° Π½Π΅ Π²Π»ΠΎΠΆΠΈΡ‚Π΅ усилията си с ΠΏΠΎ-голяма ΠΏΠΎΠ»Π·Π°?

Най-ΠΌΠ°Π»ΠΊΠΎΡ‚ΠΎ, Π·Π° Π΄Π° отговарятС Π½Π° Π²ΡŠΠΏΡ€ΠΎΡΠΈΡ‚Π΅ β€žΠΊΡŠΠ΄Π΅?β€œ ΠΈ β€žΠΊΠΎΠ»ΠΊΠΎ Π±ΡŠΡ€Π·ΠΎ?β€œ с 100% сигурност.

Π₯аос инТСнСрство Π² Istio: Ρ‚Π°ΠΊΠ° Π΅ замислСно.

Π£ΠΌΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π΄Π° Ρ‡ΡƒΠΏΠΈΡ‚Π΅ Π½Π΅Ρ‰Π° ΠΏΠΎΠΌΠ°Π³Π° Π΄Π° Π³ΠΈ Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ ΠΏΠΎ-Π½Π°Π΄Π΅ΠΆΠ΄Π½ΠΈ.

ВСстванСто Π½Π° софтуСр Π΅ Π½Π΅ само слоТно, Π½ΠΎ ΠΈ Π²Π°ΠΆΠ½ΠΎ. Π’ ΡΡŠΡ‰ΠΎΡ‚ΠΎ Π²Ρ€Π΅ΠΌΠ΅ тСстванСто Π·Π° корСктност (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π΄Π°Π»ΠΈ функцията Π²Ρ€ΡŠΡ‰Π° правилния Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚) Π΅ Π΅Π΄Π½ΠΎ, Π° тСстванСто Π² условия Π½Π° Π½Π΅Π½Π°Π΄Π΅ΠΆΠ΄Π½Π° ΠΌΡ€Π΅ΠΆΠ° Π΅ съвсСм Π΄Ρ€ΡƒΠ³Π° Π·Π°Π΄Π°Ρ‡Π° (чСсто сС смята, Ρ‡Π΅ ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π° Π²ΠΈΠ½Π°Π³ΠΈ Ρ€Π°Π±ΠΎΡ‚ΠΈ Π±Π΅Π· ΠΏΡ€Π΅ΠΊΡŠΡΠ²Π°Π½ΠΈΡ, ΠΈ Ρ‚ΠΎΠ²Π° Π΅ Π΅Π΄Π½ΠΎ ΠΎΡ‚ осСмтС Π·Π°Π±Π»ΡƒΠ΄ΠΈ относно Ρ€Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΡ‚Π΅ изчислСния). Π•Π΄Π½Π° ΠΎΡ‚ трудноститС ΠΏΡ€ΠΈ Ρ€Π΅ΡˆΠ°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Ρ‚Π°Π·ΠΈ Π·Π°Π΄Π°Ρ‡Π° Π΅ ΠΊΠ°ΠΊ Π΄Π° сС симулират нСуспСхи Π² систСмата ΠΈΠ»ΠΈ Π΄Π° сС причинят Π½Π°Ρ€ΠΎΡ‡Π½ΠΎ, изпълнявайки Ρ‚Π°ΠΊΠ° Π½Π°Ρ€Π΅Ρ‡Π΅Π½ΠΎΡ‚ΠΎ fault injection. Π’ΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° сС Π½Π°ΠΏΡ€Π°Π²ΠΈ Ρ‡Ρ€Π΅Π· ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€Π°Π½Π΅ Π½Π° изходния ΠΊΠΎΠ΄ Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ. Но Ρ‚ΠΎΠ³Π°Π²Π° Π²ΠΈΠ΅ Π²ΡΡŠΡ‰Π½ΠΎΡΡ‚ Ρ‰Π΅ тСстватС Π½Π΅ оригиналния си ΠΊΠΎΠ΄, Π° Π½Π΅Π³ΠΎΠ²Π°Ρ‚Π° вСрсия, която спСциално ΠΈΠΌΠΈΡ‚ΠΈΡ€Π° нСуспСхи. Π’ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ Π½Π° Ρ‚ΠΎΠ²Π° рискуватС Π΄Π° ΠΏΠΎΠΏΠ°Π΄Π½Π΅Ρ‚Π΅ Π² ΡΠΌΡŠΡ€Ρ‚ΠΎΠ½ΠΎΡΠ½Π° зависимост ΠΎΡ‚ fault injection ΠΈ Π΄Π° сС ΡΠ±Π»ΡŠΡΠΊΠ°Ρ‚Π΅ с Π³Π΅ΠΉΠ·Π΅Π½Π±Π°Π³ΠΎΠ²Π΅ – нСуспСхи, ΠΊΠΎΠΈΡ‚ΠΎ ΠΈΠ·Ρ‡Π΅Π·Π²Π°Ρ‚ ΠΏΡ€ΠΈ ΠΎΠΏΠΈΡ‚ Π·Π° ΠΎΡ‚ΠΊΡ€ΠΈΡ‚ΠΈΠ΅.

Π‘Π΅Π³Π° Ρ‰Π΅ ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌ ΠΊΠ°ΠΊ Istio ΠΏΠΎΠΌΠ°Π³Π° Π΄Π° сС справитС с Ρ‚Π΅Π·ΠΈ трудности Π·Π° Π½ΡƒΠ»Π° Π²Ρ€Π΅ΠΌΠ΅.

Как ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° всичко, ΠΊΠΎΠ³Π°Ρ‚ΠΎ всичко Π΅ ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ.

НСка Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ слСдния сцСнарий: ΠΈΠΌΠ°ΠΌΠ΅ Π΄Π²Π° pod’а Π·Π° нашия микросСрвиз recommendation, ΠΊΠΎΠΉΡ‚ΠΎ Π²Π·Π΅Ρ…ΠΌΠ΅ ΠΎΡ‚ ΡƒΡ‡Π΅Π±Π½ΠΈΠΊΠ° ΠΏΠΎ Istio. Π•Π΄ΠΈΠ½ pod Π΅ ΠΌΠ°Ρ€ΠΊΠΈΡ€Π°Π½ ΠΊΠ°Ρ‚ΠΎ v1, Π° другият – ΠΊΠ°Ρ‚ΠΎ v2. ΠšΠ°ΠΊΡ‚ΠΎ Π²ΠΈΠΆΠ΄Π°ΠΌΠ΅, засСга всичко Ρ€Π°Π±ΠΎΡ‚ΠΈ ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ:

ΠŸΡ€ΠΎΡΠ»Π΅Π΄ΡΠ²Π°Π½Π΅ ΠΈ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ Π² Istio: микросСрвизи ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ Π½Π° нСопрСдСлСност
(ΠœΠ΅ΠΆΠ΄Ρƒ Π΄Ρ€ΡƒΠ³ΠΎΡ‚ΠΎ, числото вдясно – Ρ‚ΠΎΠ²Π° Π΅ просто Π±Ρ€ΠΎΡΡ‡ΡŠΡ‚ Π½Π° извикванията Π·Π° всСки pod’.)

Но Π½Π°Π»ΠΈ Π½Π΅ Π΅ Ρ‚ΠΎΠ²Π°, ΠΎΡ‚ ΠΊΠΎΠ΅Ρ‚ΠΎ сС Π½ΡƒΠΆΠ΄Π°Π΅ΠΌ? Π₯Π°ΠΉΠ΄Π΅ Π΄Π° ΠΎΠΏΠΈΡ‚Π°ΠΌΠ΅ Π΄Π° Ρ€Π°Π·Ρ€ΡƒΡˆΠΈΠΌ всичко, Π±Π΅Π· Π΄Π° ΠΏΠΈΠΏΠ°ΠΌΠ΅ изходния ΠΊΠΎΠ΄.

БъздавамС ΠΏΡ€Π΅ΠΊΡŠΡΠ²Π°Π½ΠΈΡ Π² Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° Π½Π° микросСрвиса

По-Π΄ΠΎΠ»Ρƒ Π΅ yaml Ρ„Π°ΠΉΠ» Π·Π° ΠΏΡ€Π°Π²ΠΈΠ»ΠΎΡ‚ΠΎ Π·Π° ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° Istio, ΠΊΠΎΠ΅Ρ‚ΠΎ Π² ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π°Ρ‚Π° случаи Ρ‰Π΅ Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π° Π³Ρ€Π΅ΡˆΠΊΠ°. ΡΡŠΡ€Π²ΡŠΡ€ 503):

ΠŸΡ€ΠΎΡΠ»Π΅Π΄ΡΠ²Π°Π½Π΅ ΠΈ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ Π² Istio: микросСрвизи ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ Π½Π° нСопрСдСлСност
ΠžΠ±ΡŠΡ€Π½Π΅Ρ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Π΅ явно ΡƒΠΊΠ°Π·Π²Π°ΠΌΠ΅, Ρ‡Π΅ Π² ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π°Ρ‚Π° случаи трябва Π΄Π° сС Π²Ρ€ΡŠΡ‰Π° Π³Ρ€Π΅ΡˆΠΊΠ° 503.

Π•Ρ‚ΠΎ ΠΊΠ°ΠΊ Ρ‰Π΅ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° Π΅ΠΊΡ€Π°Π½Π½Π°Ρ‚Π° снимка Π½Π° стартираната Π² Ρ†ΠΈΠΊΡŠΠ» ΠΊΠΎΠΌΠ°Π½Π΄Π° curl, слСд ΠΊΠ°Ρ‚ΠΎ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°ΠΌΠ΅ Ρ‚ΠΎΠ²Π° ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Π·Π° Π΄Π° симулирамС Π³Ρ€Π΅ΡˆΠΊΠΈ. ΠšΠ°ΠΊΡ‚ΠΎ Π²ΠΈΠΆΠ΄Π°ΠΌΠ΅, ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π°Ρ‚Π° ΠΎΡ‚ заявкитС Π²Ρ€ΡŠΡ‰Π°Ρ‚ Π³Ρ€Π΅ΡˆΠΊΠ° 503, нСзависимо ΠΎΡ‚ Ρ‚ΠΎΠ²Π° Π½Π° ΠΊΠΎΠΉ pod – v1 ΠΈΠ»ΠΈ v2 – сС ΠΈΠ·ΠΏΡ€Π°Ρ‰Π°Ρ‚:

ΠŸΡ€ΠΎΡΠ»Π΅Π΄ΡΠ²Π°Π½Π΅ ΠΈ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ Π² Istio: микросСрвизи ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ Π½Π° нСопрСдСлСност
Π—Π° Π΄Π° Π²ΡŠΠ·ΡΡ‚Π°Π½ΠΎΠ²ΠΈΠΌ Π½ΠΎΡ€ΠΌΠ°Π»Π½Π°Ρ‚Π° Ρ€Π°Π±ΠΎΡ‚Π°, просто трябва Π΄Π° ΠΈΠ·Ρ‚Ρ€ΠΈΠ΅ΠΌ Ρ‚ΠΎΠ²Π° ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Π² нашия случай с ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° istioctl delete routerule recommendation-503 -n tutorial. Π’ΡƒΠΊ Tutorial Π΅ ΠΈΠΌΠ΅Ρ‚ΠΎ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Red Hat OpenShift, Π² ΠΊΠΎΠΉΡ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚ΠΈ Π½Π°ΡˆΠΈΡΡ‚ ΡƒΡ‡Π΅Π±Π½ΠΈΠΊ ΠΏΠΎ Istio.

Π’ΡŠΠ²Π΅ΠΆΠ΄Π°ΠΌΠ΅ изкуствСни забавяния

Π˜Π·ΠΊΡƒΡΡ‚Π²Π΅Π½ΠΈΡ‚Π΅ Π³Ρ€Π΅ΡˆΠΊΠΈ 503 ΠΏΠΎΠΌΠ°Π³Π°Ρ‚ Π·Π° тСстванС Π½Π° систСмата Π·Π° устойчивост Π½Π° ΠΏΠΎΠ²Ρ€Π΅Π΄ΠΈ, Π½ΠΎ способността Π΄Π° сС ΠΏΡ€ΠΎΠ³Π½ΠΎΠ·ΠΈΡ€Π° ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π° забавянС трябва Π΄Π° Π²ΠΈ Π²ΠΏΠ΅Ρ‡Π°Ρ‚Π»ΠΈ ΠΎΡ‰Π΅ ΠΏΠΎΠ²Π΅Ρ‡Π΅. Π’ дСйствитСлност забавянията Π² рСалния ΠΆΠΈΠ²ΠΎΡ‚ сС случват ΠΏΠΎ-чСсто ΠΎΡ‚ ΠΏΠΎΠ²Ρ€Π΅Π΄ΠΈΡ‚Π΅. Π‘Π°Π²Π½ΠΎ работаСщият микросСрвиз Π΅ ядро, ΠΎΡ‚ ΠΊΠΎΠ΅Ρ‚ΠΎ страда цялата систСма. Π‘Π»Π°Π³ΠΎΠ΄Π°Ρ€Π΅Π½ΠΈΠ΅ Π½Π° Istio ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° тСствамС ΠΊΠΎΠ΄Π°, ΡΠ²ΡŠΡ€Π·Π°Π½ с ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π° Π½Π° забавяния, Π±Π΅Π· Π΄Π° Π³ΠΎ промСнямС. ΠŸΡŠΡ€Π²ΠΎ Ρ‰Π΅ ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌ ΠΊΠ°ΠΊ Π΄Π° Π³ΠΎ Π½Π°ΠΏΡ€Π°Π²ΠΈΠΌ Π² случай Π½Π° изкуствСно ΠΏΡ€Π΅Π΄ΠΈΠ·Π²ΠΈΠΊΠ°Π½ΠΈ забавяния Π² ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π°.

ΠžΠ±ΡŠΡ€Π½Π΅Ρ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Π΅ слСд Ρ‚Π°ΠΊΠΎΠ²Π° тСстванС, ΠΌΠΎΠΆΠ΅ Π΄Π° сС Π½Π°Π»ΠΎΠΆΠΈ (ΠΈΠ»ΠΈ Π΄Π° искатС) Π΄Π° Π΄ΠΎΡ€Π°Π±ΠΎΡ‚ΠΈΡ‚Π΅ ΠΊΠΎΠ΄Π° си. Π”ΠΎΠ±Ρ€Π°Ρ‚Π° Π½ΠΎΠ²ΠΈΠ½Π° Π΅, Ρ‡Π΅ Π² Ρ‚ΠΎΠ·ΠΈ случай Ρ‰Π΅ дСйстватС ΠΏΡ€ΠΎΠ°ΠΊΡ‚ΠΈΠ²Π½ΠΎ, Π° Π½Π΅ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ. Π’Π°ΠΊΠ° трябва Π΄Π° ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° Ρ†ΠΈΠΊΡŠΠ»ΡŠΡ‚ Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°: ΠΊΠΎΠ΄ΠΈΡ€Π°Π½Π΅-тСстиранС-ΠΎΠ±Ρ€Π°Ρ‚Π½Π° Π²Ρ€ΡŠΠ·ΠΊΠ°-ΠΊΠΎΠ΄ΠΈΡ€Π°Π½Π΅-тСстиранС…

Π•Ρ‚ΠΎ ΠΊΠ°ΠΊ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° ΠΏΡ€Π°Π²ΠΈΠ»ΠΎΡ‚ΠΎ, коСто… Π—Π½Π°Π΅Ρ‚Π΅ Π»ΠΈ ΠΊΠ°ΠΊΠ²ΠΎ? Istio Π΅ Ρ‚ΠΎΠ»ΠΊΠΎΠ²Π° просто ΠΈ Ρ‚ΠΎΠ·ΠΈ yaml Ρ„Π°ΠΉΠ» Π΅ Ρ‚ΠΎΠ»ΠΊΠΎΠ²Π° ясСн, Ρ‡Π΅ всичко Π² Ρ‚ΠΎΠ·ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π³ΠΎΠ²ΠΎΡ€ΠΈ само Π·Π° сСбС си, просто ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅Ρ‚Π΅:

ΠŸΡ€ΠΎΡΠ»Π΅Π΄ΡΠ²Π°Π½Π΅ ΠΈ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ Π² Istio: микросСрвизи ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ Π½Π° нСопрСдСлСност
Π’ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π°Ρ‚Π° ΠΎΡ‚ случаитС Ρ‰Π΅ ΠΈΠΌΠ°ΠΌΠ΅ 7-сСкундна закъснСниС. И Ρ‚ΠΎΠ²Π° Π½Π΅ Π΅ ΡΡŠΡ‰ΠΎΡ‚ΠΎ, ΠΊΠ°ΠΊΡ‚ΠΎ Π°ΠΊΠΎ бяхмС Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π° sleep Π² изходния ΠΊΠΎΠ΄, Π·Π°Ρ‰ΠΎΡ‚ΠΎ Istio Ρ€Π΅Π°Π»Π½ΠΎ Π·Π°Π΄ΡŠΡ€ΠΆΠ° заявката Π·Π° 7 сСкунди. Въй ΠΊΠ°Ρ‚ΠΎ Istio ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° трасировка Jaeger, Ρ‚ΠΎΠ²Π° закъснСниС ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС ясно наблюдавано Π² UI Π½Π° Jaeger, ΠΊΠ°ΠΊΡ‚ΠΎ Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° ΡΠΊΡ€ΠΈΠΉΠ½ΡˆΠΎΡ‚Π° ΠΏΠΎ-Π΄ΠΎΠ»Ρƒ. ΠžΠ±ΡŠΡ€Π½Π΅Ρ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Π΄ΡŠΠ»Π³Π°Ρ‚Π° заявка Π² горния дСсСн ъгъл Π½Π° Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠ°Ρ‚Π° – Π½Π΅ΠΉΠ½ΠΎΡ‚ΠΎ ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠΈΡ‚Π΅Π»Π½ΠΎΡΡ‚ Π΅ 7.02 сСкунди:

ΠŸΡ€ΠΎΡΠ»Π΅Π΄ΡΠ²Π°Π½Π΅ ΠΈ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ Π² Istio: микросСрвизи ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ Π½Π° нСопрСдСлСност
Π’ΠΎΠ·ΠΈ сцСнарий позволява Π΄Π° тСствамС ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΈ условия Π½Π° ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈ закъснСния. И Π΅ ясно, Ρ‡Π΅ Π°ΠΊΠΎ ΠΏΡ€Π΅ΠΌΠ°Ρ…Π½Π΅ΠΌ Ρ‚ΠΎΠ²Π° ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Ρ‰Π΅ ΠΏΡ€Π΅ΠΌΠ°Ρ…Π½Π΅ΠΌ изкуствСното закъснСниС. ΠŸΠΎΠ²Ρ‚Π°Ρ€ΡΠΌΠ΅, Π½ΠΎ ΠΎΡ‚Π½ΠΎΠ²ΠΎ Π½Π°ΠΏΡ€Π°Π²ΠΈΡ…ΠΌΠ΅ всичко Ρ‚ΠΎΠ²Π°, Π±Π΅Π· Π΄Π° докосвамС изходния ΠΊΠΎΠ΄.

НС ΠΎΡ‚ΡΡ‚ΡŠΠΏΠ²Π°ΠΉΡ‚Π΅ ΠΈ Π½Π΅ сС ΠΏΡ€Π΅Π΄Π°Π²Π°ΠΉΡ‚Π΅

Π”Ρ€ΡƒΠ³Π° ΠΏΠΎΠ»Π΅Π·Π½Π° функция Π½Π° Istio Π·Π° хаос ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ΠΈΠ½Π³ Π΅ Π΄Π° ΠΏΡ€Π°Π²ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΈ ΠΎΠΏΠΈΡ‚ΠΈ Π·Π° ΡΠ²ΡŠΡ€Π·Π²Π°Π½Π΅ със слуТбата ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ Π±Ρ€ΠΎΠΉ ΠΏΡŠΡ‚ΠΈ. Π˜Π΄Π΅ΡΡ‚Π° Π΅ Π΄Π° Π½Π΅ спиратС ΠΎΠΏΠΈΡ‚ΠΈΡ‚Π΅, ΠΊΠΎΠ³Π°Ρ‚ΠΎ ΠΏΡŠΡ€Π²Π°Ρ‚Π° заявка Π·Π°Π²ΡŠΡ€ΡˆΠ²Π° с Π³Ρ€Π΅ΡˆΠΊΠ° 503 – ΠΈ Ρ‚Π°ΠΊΠ°, ΠΌΠΎΠΆΠ΅ Π±ΠΈ, ΠΏΡ€ΠΈ N-ия ΠΎΠΏΠΈΡ‚ Ρ‰Π΅ ΠΈΠΌΠ°ΠΌΠ΅ ΠΊΡŠΡΠΌΠ΅Ρ‚. МоТС Π±ΠΈ, услугата просто Π΅ ΠΈΠΌΠ°Π»Π° Π½ΡƒΠΆΠ΄Π° ΠΎΡ‚ ΠΌΠ°Π»ΠΊΠΎ ΠΏΠΎΡ‡ΠΈΠ²ΠΊΠ° ΠΏΠΎ Π΅Π΄Π½Π° ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³Π° ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°. Π”Π°, трябва Π΄Π° Ρ€Π°Π·ΠΊΡ€ΠΈΠ΅ΠΌ ΠΈ отстраним ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°Ρ‚Π°. Но Ρ‚ΠΎΠ²Π° Π΅ Π·Π° ΠΏΠΎ-късно, Π° Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° Π½Π΅ΠΊΠ° ΠΎΠΏΠΈΡ‚Π°ΠΌΠ΅ Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΠΌ Ρ‚Π°ΠΊΠ°, Ρ‡Π΅ систСмата Π΄Π° ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠΈ Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ.

И Ρ‚Π°ΠΊΠ°, искамС услугата ΠΎΡ‚ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° Π²Ρ€Π΅ΠΌΠ΅ Π΄Π° Π²Ρ€ΡŠΡ‰Π° Π³Ρ€Π΅ΡˆΠΊΠ° 503, Π° Istio слСд Ρ‚ΠΎΠ²Π° Π΄Π° сС ΠΎΠΏΠΈΡ‚Π° Π΄Π° сС ΡΠ²ΡŠΡ€ΠΆΠ΅ ΠΎΡ‚Π½ΠΎΠ²ΠΎ. И ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ Π½ΠΈ трябва Π½Π°Ρ‡ΠΈΠ½ Π΄Π° Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°ΠΌΠ΅ Π³Ρ€Π΅ΡˆΠΊΠ° 503, Π±Π΅Π· Π΄Π° ΠΏΠΈΠΏΠ°ΠΌΠ΅ самия код…

Π‘Ρ‚ΠΎΠΏ, ΠΈΠ·Ρ‡Π°ΠΊΠ°ΠΉΡ‚Π΅! НиС Ρ‚ΠΎΠΊΡƒ-Ρ‰ΠΎ Π³ΠΎ Π½Π°ΠΏΡ€Π°Π²ΠΈΡ…ΠΌΠ΅.

Π’ΠΎΠ·ΠΈ Ρ„Π°ΠΉΠ» Ρ‰Π΅ Π½Π°ΠΏΡ€Π°Π²ΠΈ Ρ‚Π°ΠΊΠ°, Ρ‡Π΅ слуТбата recommendation-v2 Π΄Π° Π²Ρ€ΡŠΡ‰Π° Π³Ρ€Π΅ΡˆΠΊΠ° 503 Π² ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π°Ρ‚Π° случаи:

ΠŸΡ€ΠΎΡΠ»Π΅Π΄ΡΠ²Π°Π½Π΅ ΠΈ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ Π² Istio: микросСрвизи ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ Π½Π° нСопрСдСлСност
ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ Π΅, Ρ‡Π΅ част ΠΎΡ‚ заявкитС Ρ‰Π΅ Π·Π°Π²ΡŠΡ€ΡˆΠ²Π°Ρ‚ с нСуспСх:

ΠŸΡ€ΠΎΡΠ»Π΅Π΄ΡΠ²Π°Π½Π΅ ΠΈ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ Π² Istio: микросСрвизи ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ Π½Π° нСопрСдСлСност
Π‘Π΅Π³Π° Ρ‰Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ функцията Π·Π° ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΈ ΠΎΠΏΠΈΡ‚ΠΈ Π½Π° Istio:

ΠŸΡ€ΠΎΡΠ»Π΅Π΄ΡΠ²Π°Π½Π΅ ΠΈ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ Π² Istio: микросСрвизи ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ Π½Π° нСопрСдСлСност
Π’ΠΎΠ²Π° ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ Π·Π° ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΡ ΠΏΡ€Π°Π²ΠΈ Ρ‚Ρ€ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΈ ΠΎΠΏΠΈΡ‚Π° с двусСкундСн ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π» ΠΈ трябва Π΄Π° Π½Π°ΠΌΠ°Π»ΠΈ (Π° Π² идСалния случай ΠΈ напълно Π΄Π° ΠΏΡ€Π΅ΠΌΠ°Ρ…Π½Π΅) Π³Ρ€Π΅ΡˆΠΊΠΈΡ‚Π΅ 503:

ΠŸΡ€ΠΎΡΠ»Π΅Π΄ΡΠ²Π°Π½Π΅ ΠΈ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ Π² Istio: микросСрвизи ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ Π½Π° нСопрСдСлСност
Π’ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅: Π½Π°ΠΏΡ€Π°Π²ΠΈΡ…ΠΌΠ΅ Ρ‚Π°ΠΊΠ°, Ρ‡Π΅ Istio, ΠΎΡ‚ Π΅Π΄Π½Π° страна, Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π° Π³Ρ€Π΅ΡˆΠΊΠ° 503 Π·Π° ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π°Ρ‚Π° ΠΎΡ‚ заявкитС. А ΠΎΡ‚ Π΄Ρ€ΡƒΠ³Π° страна, ΡΡŠΡ‰ΠΈΡΡ‚ Istio ΠΏΡ€Π°Π²ΠΈ Ρ‚Ρ€ΠΈ ΠΎΠΏΠΈΡ‚Π° Π΄Π° сС ΡΠ²ΡŠΡ€ΠΆΠ΅ ΠΎΡ‚Π½ΠΎΠ²ΠΎ с услугата ΠΏΡ€ΠΈ възникванС Π½Π° Π³Ρ€Π΅ΡˆΠΊΠ° 503. Π’ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ всичко Ρ€Π°Π±ΠΎΡ‚ΠΈ просто ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ. Π’Π°ΠΊΠ° с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° функцията Π·Π° ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΈ ΠΎΠΏΠΈΡ‚ΠΈ ΠΈΠ·ΠΏΡŠΠ»Π½ΠΈΡ…ΠΌΠ΅ ΠΎΠ±Π΅Ρ‰Π°Π½ΠΈΠ΅Ρ‚ΠΎ си Π΄Π° Π½Π΅ ΠΎΡ‚ΡΡ‚ΡŠΠΏΠ²Π°ΠΌΠ΅ ΠΈ Π½Π΅ сС ΠΏΡ€Π΅Π΄Π°Π²Π°ΠΌΠ΅.

И Π΄Π°, ΠΎΡ‚Π½ΠΎΠ²ΠΎ Π³ΠΎ Π½Π°ΠΏΡ€Π°Π²ΠΈΡ…ΠΌΠ΅, напълно Π±Π΅Π· Π΄Π° ΠΏΠΈΠΏΠ°ΠΌΠ΅ ΠΊΠΎΠ΄Π°. Всичко, ΠΊΠΎΠ΅Ρ‚ΠΎ Π½ΠΈ бСшС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ, бяха Π΄Π²Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π° Π·Π° ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΡ Π½Π° Istio:

ΠŸΡ€ΠΎΡΠ»Π΅Π΄ΡΠ²Π°Π½Π΅ ΠΈ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ Π² Istio: микросСрвизи ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ Π½Π° нСопрСдСлСност

Как Π΄Π° Π½Π΅ ΠΏΠΎΠ΄Π²Π΅Π΄Π΅ΠΌ потрСбитСля ΠΈΠ»ΠΈ сСдСм Π΄ΡƒΡˆΠΈ Π½Π΅ Ρ‡Π°ΠΊΠ°Ρ‚

А сСга Ρ‰Π΅ ΠΎΠ±ΡŠΡ€Π½Π΅ΠΌ ситуацията Π½Π°ΠΎΠΏΠ°ΠΊΠΈ ΠΈ Ρ‰Π΅ Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ сцСнарий, ΠΏΡ€ΠΈ ΠΊΠΎΠΉΡ‚ΠΎ Π½Π΅ Π±ΠΈΠ²Π° Π΄Π° сС ΠΎΡ‚ΡΡ‚ΡŠΠΏΠ²Π° ΠΈ ΠΎΡ‚ΠΊΠ°Π·Π²Π° СдинствСно Π·Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ фиксирован ΠΏΠ΅Ρ€ΠΈΠΎΠ΄. А слСд Ρ‚ΠΎΠ²Π° просто трябва Π΄Π° спрСм ΠΎΠΏΠΈΡ‚ΠΈΡ‚Π΅ Π·Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° заявкитС, Π·Π° Π΄Π° Π½Π΅ ΠΏΡ€ΠΈΠ½ΡƒΠΆΠ΄Π°Π²Π°ΠΌΠ΅ всички Π΄Π° Ρ‡Π°ΠΊΠ°Ρ‚ Π·Π° някаква Π·Π°Π±Π°Π²Π΅Π½Π° услуга. Π‘ Π΄Ρ€ΡƒΠ³ΠΈ Π΄ΡƒΠΌΠΈ, няма Π΄Π° Π·Π°Ρ‰ΠΈΡ‚Π°Π²Π°ΠΌΠ΅ Π·Π°Π³ΡƒΠ±Π΅Π½Π°Ρ‚Π° позиция, Π° Ρ‰Π΅ сС ΠΎΡ‚Ρ‚Π΅Π³Π»ΠΈΠΌ Π½Π° Ρ€Π΅Π·Π΅Ρ€Π²Π½Π° линия, Π·Π° Π΄Π° Π½Π΅ ΠΏΠΎΠ΄Π²Π΅Π΄Π΅ΠΌ потрСбитСля ΠΈ Π΄Π° Π½Π΅ Π³ΠΎ оставим Π² Π½Π΅Π²Π΅Π΄Π΅Π½ΠΈΠ΅.

Π’ Istio ΠΌΠΎΠΆΠ΅ Π΄Π° сС Π·Π°Π΄Π°Π΄Π΅ Ρ‚Π°ΠΉΠΌΠ°ΡƒΡ‚ Π·Π° изпълнСниС Π½Π° заявката. Ако услугата ΠΏΡ€Π΅Π²ΠΈΡˆΠΈ Ρ‚ΠΎΠ·ΠΈ Ρ‚Π°ΠΉΠΌΠ°ΡƒΡ‚, сС Π²Ρ€ΡŠΡ‰Π° Π³Ρ€Π΅ΡˆΠΊΠ° 504 (Gateway Timeout) – всичко Ρ‚ΠΎΠ²Π° сС ΠΏΡ€Π°Π²ΠΈ Ρ‡Ρ€Π΅Π· конфигурацията Π½Π° Istio. Но Ρ‰Π΅ трябва Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π² изходния ΠΊΠΎΠ΄ Π½Π° услугата ΠΊΠΎΠΌΠ°Π½Π΄Π° sleep (ΠΈ слСд Ρ‚ΠΎΠ²Π°, Ρ€Π°Π·Π±ΠΈΡ€Π° сС, Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΠΌ rebuild ΠΈ redeploy), Π·Π° Π΄Π° симулирамС Π±Π°Π²Π½Π°Ρ‚Π° Ρ€Π°Π±ΠΎΡ‚Π° Π½Π° услугата. Π£Π²ΠΈ, Π±Π΅Π· Ρ‚ΠΎΠ²Π° Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ.

И Ρ‚Π°ΠΊΠ°, Π΄ΠΎΠ±Π°Π²ΠΈΡ…ΠΌΠ΅ трисСкундно забавянС Π² ΠΊΠΎΠ΄Π° Π½Π° услугата recommendation v2, ΠΏΡ€Π΅ΠΈΠ·Π³Ρ€Π°Π΄ΠΈΡ…ΠΌΠ΅ ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½ΠΈΡ ΠΎΠ±Ρ€Π°Π· ΠΈ Π½Π°ΠΏΡ€Π°Π²ΠΈΡ…ΠΌΠ΅ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π΅Π½ Π΄Π΅ΠΏΠ»ΠΎΠΉ Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°, Π° сСга Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Ρ‚Π°ΠΉΠΌΠ°ΡƒΡ‚ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° слСдното ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ Π·Π° ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΡ Π² Istio:

ΠŸΡ€ΠΎΡΠ»Π΅Π΄ΡΠ²Π°Π½Π΅ ΠΈ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ Π² Istio: микросСрвизи ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ Π½Π° нСопрСдСлСност
На ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚Π° ΠΏΠΎ-Π³ΠΎΡ€Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π²ΠΈΠ΄ΠΈΡ‚Π΅, Ρ‡Π΅ спирамС ΠΎΠΏΠΈΡ‚ΠΈΡ‚Π΅ Π΄Π° сС ΡΠ²ΡŠΡ€ΠΆΠ΅ΠΌ с услугата recommendation, Π°ΠΊΠΎ Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€ Π² Ρ€Π°ΠΌΠΊΠΈΡ‚Π΅ Π½Π° Π΅Π΄Π½Π° сСкунда, тоСст ΠΎΡ‰Π΅ ΠΏΡ€Π΅Π΄ΠΈ Π΄Π° възникнС Π³Ρ€Π΅ΡˆΠΊΠ° 504. Π‘Π»Π΅Π΄ ΠΏΡ€ΠΈΠ»Π°Π³Π°Π½Π΅Ρ‚ΠΎ Π½Π° Ρ‚ΠΎΠ²Π° ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ Π·Π° ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΡ (ΠΈ добавянСто Π½Π° трисСкундно забавянС Π² ΠΊΠΎΠ΄Π° Π½Π° услугата recommendation:v2), ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°ΠΌΠ΅ слСдното:

ΠŸΡ€ΠΎΡΠ»Π΅Π΄ΡΠ²Π°Π½Π΅ ΠΈ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ Π² Istio: микросСрвизи ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ Π½Π° нСопрСдСлСност
ΠžΡ‚Π½ΠΎΠ²ΠΎ повтарямС, Π½ΠΎ Ρ‚Π°ΠΉΠΌΠ°ΡƒΡ‚ΡŠΡ‚ ΠΌΠΎΠΆΠ΅ Π΄Π° сС Π·Π°Π΄Π°Π΄Π΅, Π±Π΅Π· Π΄Π° ΠΏΠΈΠΏΠ°ΠΌΠ΅ изходния ΠΊΠΎΠ΄. А Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΎΡ‚ΠΎ прСдимство Ρ‚ΡƒΠΊ Π΅, Ρ‡Π΅ Π²Π΅Ρ‡Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€Π°Ρ‚Π΅ ΠΊΠΎΠ΄Π° си, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ Π΄Π° Ρ€Π΅Π°Π³ΠΈΡ€Π° Π½Π° Ρ‚Π°ΠΉΠΌΠ°ΡƒΡ‚Π° ΠΈ лСсно Π΄Π° тСстватС Ρ‚Π΅Π·ΠΈ Π΄ΠΎΡ€Π°Π±ΠΎΡ‚ΠΊΠΈ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Istio.

А сСга всичко Π·Π°Π΅Π΄Π½ΠΎ

ВнСдряванСто Π½Π° ΠΌΠ°Π»ΠΊΠΎ хаос Ρ‡Ρ€Π΅Π· Istio Π΅ ΠΎΡ‚Π»ΠΈΡ‡Π΅Π½ Π½Π°Ρ‡ΠΈΠ½ Π΄Π° тСстватС ΠΊΠΎΠ΄Π° си ΠΈ надСТдността Π½Π° систСмата ΠΊΠ°Ρ‚ΠΎ цяло. Π¨Π°Π±Π»ΠΎΠ½ΠΈΡ‚Π΅ fallback, bulkhead ΠΈ circuit breaker, ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΈΡ‚Π΅ Π·Π° създаванС Π½Π° изкуствСни ΠΏΠΎΠ²Ρ€Π΅Π΄ΠΈ ΠΈ забавяния, ΠΊΠ°ΠΊΡ‚ΠΎ ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΈΡ‚Π΅ извиквания ΠΈ Ρ‚Π°ΠΉΠΌΠ°ΡƒΡ‚ΠΈΡ‚Π΅ Ρ‰Π΅ Π±ΡŠΠ΄Π°Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΈ ΠΏΡ€ΠΈ ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅Ρ‚ΠΎ Π½Π° отказоустойчиви ΠΎΠ±Π»Π°Ρ‡Π½ΠΈ систСми. Π’ комбинация с Kubernetes ΠΈ Red Hat OpenShift Ρ‚Π΅Π·ΠΈ инструмСнти Ρ‰Π΅ ΠΏΠΎΠΌΠΎΠ³Π½Π°Ρ‚ Π΄Π° сС срСщнС Π±ΡŠΠ΄Π΅Ρ‰Π΅Ρ‚ΠΎ с увСрСност.

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

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