Врасировка ΠΈ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ Π² Istio: микросСрвизи ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ Π½Π° нСопрСдСлСност

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

Врасировка ΠΈ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ Π² Istio: микросСрвизи ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ Π½Π° нСопрСдСлСност

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

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

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

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

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

ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ – Ρ‚ΠΎΠ²Π° Π²ΡΡŠΡ‰Π½ΠΎΡΡ‚ Π΅ Π½Π°Π±Π»ΡŽΠ΄Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° Π²Π°ΡˆΠ°Ρ‚Π° систСма – ΠΏΡ€Π΅Π· ΠΎΡ‡ΠΈΡ‚Π΅, Ρ‡Ρ€Π΅Π· UI ΠΈΠ»ΠΈ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ. Π’ основата Π½Π° ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° Π»Π΅ΠΆΠ°Ρ‚ Π΄Π°Π½Π½ΠΈ Π·Π° трасировката. Π’ Istio ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ΡŠΡ‚ Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½ Ρ‡Ρ€Π΅Π· Prometheus ΠΈ ΠΈΠΌΠ° ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½ΠΈΡ UI. 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 ΠΏΠΎΠΌΠ°Π³Π° Π΄Π° сС справитС с Ρ‚Π΅Π·ΠΈ трудности с Π»Π΅ΠΊΠΎΡ‚Π°.

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

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

Врасировка ΠΈ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ Π² Istio: микросСрвизи ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ Π½Π° нСопрСдСлСност
(ΠœΠ΅ΠΆΠ΄Ρƒ Π΄Ρ€ΡƒΠ³ΠΎΡ‚ΠΎ, числото отдясно просто Π΅ брояч Π½Π° извикванията Π·Π° всСки ΠΏΠΎΠ΄.)

Но Ρ‚ΠΎΠ²Π° Π½Π΅ Π΅ Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚ΠΎΠ²Π°, ΠΎΡ‚ ΠΊΠΎΠ΅Ρ‚ΠΎ сС Π½ΡƒΠΆΠ΄Π°Π΅ΠΌ, Π½Π°Π»ΠΈ? Π”ΠΎΠ±Ρ€Π΅, Π½Π΅ΠΊΠ° ΠΎΠΏΠΈΡ‚Π°ΠΌΠ΅ Π΄Π° счупим всичко, Π±Π΅Π· Π΄Π° засягамС изходния ΠΊΠΎΠ΄.

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

По-Π΄ΠΎΠ»Ρƒ Π΅ 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, Ρ‚ΠΎΠ²Π° закъснСниС Π΅ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ наблюдаСмо Π² интСрфСйса Π½Π° 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), Π·Π° Π΄Π° симулирамС Π±Π°Π²Π½Π°Ρ‚Π° Ρ€Π°Π±ΠΎΡ‚Π° Π½Π° ΡΡŠΡ€Π²ΠΈΡΠ°. Π—Π° съТалСниС, ΠΈΠ½Π°Ρ‡Π΅ Π½Π΅ става.

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

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

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

А сСга всичко Π½Π°ΠΊΡƒΠΏ

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

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

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