БистСма Π·Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° конфигурацията Π½Π° ΠΌΡ€Π΅ΠΆΠΎΠ²Π°Ρ‚Π° филтрация Qrator

БистСма Π·Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° конфигурацията Π½Π° ΠΌΡ€Π΅ΠΆΠΎΠ²Π°Ρ‚Π° филтрация Qrator

TL;DR: ОписаниС Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚-сСрвСрната Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° Π½Π° Π½Π°ΡˆΠ°Ρ‚Π° Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½Π° систСма Π·Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° конфигурацията Π½Π° ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π°, QControl. Π’ основата ΠΉ Π»Π΅ΠΆΠΈ двустСпСнСн транспортСн ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ», Ρ€Π°Π±ΠΎΡ‚Π΅Ρ‰ с ΠΎΠΏΠ°ΠΊΠΎΠ²Π°Π½ΠΈ Π² gzip ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ Π±Π΅Π· дСкомпрСсия ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΡ€Π°ΠΉΠ½ΠΈ Ρ‚ΠΎΡ‡ΠΊΠΈ. Π Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΡ‚Π΅ Ρ€ΡƒΡ‚Π΅Ρ€ΠΈ ΠΈ ΠΊΡ€Π°ΠΉΠ½ΠΈ Ρ‚ΠΎΡ‡ΠΊΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°Ρ‚ Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π° конфигурацията, Π° самият ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» позволява инсталиранСто Π½Π° Π»ΠΎΠΊΠ°Π»ΠΈΠ·ΠΈΡ€Π°Π½ΠΈ ΠΌΠ΅ΠΆΠ΄ΠΈΠ½Π½ΠΈ Ρ€Π΅Π»Π΅ΠΉΠΊΠΈ. БистСмата Π΅ ΠΈΠ·Π³Ρ€Π°Π΄Π΅Π½Π° ΠΏΠΎ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ° Π΄ΠΈΡ„Π΅Ρ€Π΅Π½Ρ†ΠΈΠ°Π»Π½ΠΎ Π°Ρ€Ρ…ΠΈΠ²ΠΈΡ€Π°Π½Π΅ ('recent-stable', обяснСно ΠΏΠΎ-Π΄ΠΎΠ»Ρƒ) ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π΅Π·ΠΈΠΊΠ° Π½Π° запитвания JMESpath Π·Π°Π΅Π΄Π½ΠΎ с ΡˆΠ°Π±Π»ΠΎΠ½ΠΈΠ·Π°Ρ‚ΠΎΡ€Π° Jinja Π·Π° Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅.

Qrator Labs управлява Π³Π»ΠΎΠ±Π°Π»Π½ΠΎ Ρ€Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π° ΠΌΡ€Π΅ΠΆΠ° Π·Π° Π½Π΅ΡƒΡ‚Ρ€Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° Π°Ρ‚Π°ΠΊΠΈ. ΠΠ°ΡˆΠ°Ρ‚Π° ΠΌΡ€Π΅ΠΆΠ° Ρ€Π°Π±ΠΎΡ‚ΠΈ ΠΏΠΎ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ° Π½Π° anycast, Π° подсСтитС сС анонсират посрСдством BGP. ΠšΠ°Ρ‚ΠΎ BGP anycast ΠΌΡ€Π΅ΠΆΠ°, физичСски Ρ€Π°Π·ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π° Π² няколко Ρ€Π΅Π³ΠΈΠΎΠ½Π° ΠΏΠΎ ЗСмята, ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π°ΠΌΠ΅ ΠΈ Ρ„ΠΈΠ»Ρ‚Ρ€ΠΈΡ€Π°ΠΌΠ΅ Π½Π΅Π»Π΅Π³ΠΈΡ‚ΠΈΠΌΠ΅Π½ Ρ‚Ρ€Π°Ρ„ΠΈΠΊ ΠΏΠΎ-Π±Π»ΠΈΠ·ΠΎ Π΄ΠΎ ядрото Π½Π° ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚ β€” Tier-1 ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΈΡ‚Π΅.

ΠžΡ‚ Π΄Ρ€ΡƒΠ³Π° страна, Π΄Π° бъдСш гСографски Ρ€Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π° ΠΌΡ€Π΅ΠΆΠ° Π½Π΅ Π΅ лСсна Ρ€Π°Π±ΠΎΡ‚Π°. ΠšΠΎΠΌΡƒΠ½ΠΈΠΊΠ°Ρ†ΠΈΡΡ‚Π° ΠΌΠ΅ΠΆΠ΄Ρƒ сСтСвитС Ρ‚ΠΎΡ‡ΠΊΠΈ Π½Π° ΠΏΡ€ΠΈΡΡŠΡΡ‚Π²ΠΈΠ΅ Π΅ ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½ΠΎ Π²Π°ΠΆΠ½Π° Π·Π° доставчика Π½Π° услуги Π·Π° сигурност, Π·Π° Π΄Π° ΠΈΠΌΠ° послСдоватСлна конфигурация Π½Π° всички възли Π½Π° ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π°, обновявайки Π³ΠΈ Π½Π°Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ. Π—Π°Ρ‚ΠΎΠ²Π°, с Ρ†Π΅Π» Π΄Π° прСдоставим максимално възмоТно Π½ΠΈΠ²ΠΎ Π½Π° основната услуга Π·Π° потрСбитСля, Ρ‚Ρ€ΡΠ±Π²Π°ΡˆΠ΅ Π΄Π° Π½Π°ΠΌΠ΅Ρ€ΠΈΠΌ Π½Π°Ρ‡ΠΈΠ½ Π΄Π° синхронизирамС Π½Π°Π΄Π΅ΠΆΠ΄Π½ΠΎ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΈΡ‚Π΅ Π΄Π°Π½Π½ΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠΎΠ½Ρ‚ΠΈΠ½Π΅Π½Ρ‚ΠΈΡ‚Π΅.

Π’ Π½Π°Ρ‡Π°Π»ΠΎΡ‚ΠΎ бСшС Π‘Π»ΠΎΠ²ΠΎΡ‚ΠΎ. Π’ΠΎ Π±ΡŠΡ€Π·ΠΎ стана ΠΊΠΎΠΌΡƒΠ½ΠΈΠΊΠ°Ρ†ΠΈΠΎΠ½Π΅Π½ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ», Π½ΡƒΠΆΠ΄Π°Π΅Ρ‰ сС ΠΎΡ‚ актуализация.


ΠšΡ€Π°ΠΉΡŠΠ³ΡŠΠ»Π½ΠΈΡΡ‚ камък Π½Π° ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Π½Π΅Ρ‚ΠΎ Π½Π° QControl ΠΈ основната ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π° Π·Π° Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΈΡ‚Π΅ инвСстиции Π² Π²Ρ€Π΅ΠΌΠ΅ ΠΈ рСсурси Π·Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅Ρ‚ΠΎ Π½Π° Ρ‚Π°ΠΊΡŠΠ² ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» Π΅ нСобходимостта ΠΎΡ‚ Π΅Π΄ΠΈΠ½Π΅Π½ Π°Π²Ρ‚ΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π΅Π½ ΠΈΠ·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ Π½Π° конфигурация, с ΠΊΠΎΠΉΡ‚ΠΎ Π² ΠΊΡ€Π°ΠΉΠ½Π° смСтка Π΄Π° синхронизирамС Π½Π°ΡˆΠΈΡ‚Π΅ Ρ‚ΠΎΡ‡ΠΊΠΈ Π½Π° ΠΏΡ€ΠΈΡΡŠΡΡ‚Π²ΠΈΠ΅. Π‘Π°ΠΌΠΎΡ‚ΠΎ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ бСшС само Π΅Π΄Π½ΠΎ ΠΎΡ‚ ΠΌΠ½ΠΎΠ³ΠΎΡ‚ΠΎ изисквания ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π° Π½Π° QControl. ОсвСн Ρ‚ΠΎΠ²Π°, Π½ΡƒΠΆΠ΄Π°Π΅Ρ…ΠΌΠ΅ сС ΠΎΡ‚ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ с Π½Π°Π»ΠΈΡ‡Π½ΠΈ ΠΈ ΠΏΠ»Π°Π½ΠΈΡ€Π°Π½ΠΈ услуги Π½Π° Ρ‚ΠΎΡ‡ΠΊΠΈΡ‚Π΅ Π½Π° ΠΏΡ€ΠΈΡΡŠΡΡ‚Π²ΠΈΠ΅ (ВП), ΠΈΠ½Ρ‚Π΅Π»ΠΈΠ³Π΅Π½Ρ‚Π½ΠΈ (ΠΈ настраиваСми) ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈ Π·Π° валидация Π½Π° Π΄Π°Π½Π½ΠΈ, ΠΈ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π°Π²Π°Π½Π΅ Π½Π° Π΄ΠΎΡΡ‚ΡŠΠΏΠ°. Π˜ΡΠΊΠ°Ρ…ΠΌΠ΅ ΡΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° Π΄Π° управлявамС Ρ‚Π°Π·ΠΈ систСма Ρ‡Ρ€Π΅Π· ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ, Π° Π½Π΅ Ρ‡Ρ€Π΅Π· модификация Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅. ΠŸΡ€Π΅Π΄ΠΈ QControl, Π΄Π°Π½Π½ΠΈΡ‚Π΅ сС ΠΈΠ·ΠΏΡ€Π°Ρ‰Π°Ρ…Π° към Ρ‚ΠΎΡ‡ΠΊΠΈΡ‚Π΅ Π½Π° ΠΏΡ€ΠΈΡΡŠΡΡ‚Π²ΠΈΠ΅ ΠΏΠΎΡ‡Ρ‚ΠΈ Ρ€ΡŠΡ‡Π½ΠΎ. Ако Π΅Π΄Π½Π° ΠΎΡ‚ Ρ‚ΠΎΡ‡ΠΊΠΈΡ‚Π΅ Π½Π° ΠΏΡ€ΠΈΡΡŠΡΡ‚Π²ΠΈΠ΅ бСшС Π½Π΅Π΄ΠΎΡΡ‚ΡŠΠΏΠ½Π° ΠΈ Π·Π°Π±Ρ€Π°Π²Π΅Ρ…ΠΌΠ΅ Π΄Π° я Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π°ΠΌΠ΅ ΠΏΠΎ-късно, конфигурацията ΡΡ‚Π°Π²Π°ΡˆΠ΅ нСсинхронизирана β€” налагашС сС Π΄Π° ΠΎΡ‚Π΄Π΅Π»ΠΈΠΌ Π²Ρ€Π΅ΠΌΠ΅ Π·Π° Π²ΡŠΠ·ΡΡ‚Π°Π½ΠΎΠ²ΡΠ²Π°Π½Π΅ Π½Π° Π½Π΅ΠΉΠ½Π°Ρ‚Π° Ρ€Π°Π±ΠΎΡ‚Π°.

Π’ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ Π½Π° Ρ‚ΠΎΠ²Π° измислихмС слСдната схСма:
БистСма Π·Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° конфигурацията Π½Π° ΠΌΡ€Π΅ΠΆΠΎΠ²Π°Ρ‚Π° филтрация Qrator
ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΈΡΡ‚ ΡΡŠΡ€Π²ΡŠΡ€ Π΅ ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€Π΅Π½ Π·Π° валидация Π½Π° Π΄Π°Π½Π½ΠΈ ΠΈ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅, Ρ€ΡƒΡ‚Π΅Ρ€ΡŠΡ‚ ΠΈΠΌΠ° няколко Π΅Π½Π΄ΠΏΠΎΠΉΠ½Ρ‚Π°, ΠΊΠΎΠΈΡ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°Ρ‚ ΠΈ ΠΏΡ€Π΅Π΄Π°Π²Π°Ρ‚ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΈ обновлСния ΠΎΡ‚ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΈΡ‚Π΅ ΠΈ Π΅ΠΊΠΈΠΏΠ° Π·Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° ΡΡŠΡ€Π²Π΅Ρ€Π°, Π° ΠΎΡ‚ ΡΡŠΡ€Π²Π΅Ρ€Π° към Ρ‚ΠΎΡ‡ΠΊΠΈΡ‚Π΅ Π½Π° ΠΏΡ€ΠΈΡΡŠΡΡ‚Π²ΠΈΠ΅.

ΠšΠ°Ρ‡Π΅ΡΡ‚Π²ΠΎΡ‚ΠΎ Π½Π° ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚ ΡΠ²ΡŠΡ€Π·Π°Π½ΠΎΡΡ‚Ρ‚Π° всС ΠΎΡ‰Π΅ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ Π²Π°Ρ€ΠΈΡ€Π° Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ части Π½Π° свСта β€” Π·Π° ΠΈΠ»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΡ Π½Π° Ρ‚Π°Π·ΠΈ Ρ‚Π΅Π·Π°, Π½Π΅ΠΊΠ° ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅ΠΌ Π½Π° прост MTR ΠΎΡ‚ ΠŸΡ€Π°Π³Π°, ЧСшка Π Π΅ΠΏΡƒΠ±Π»ΠΈΠΊΠ° Π΄ΠΎ Π‘ΠΈΠ½Π³Π°ΠΏΡƒΡ€ ΠΈ Π₯ΠΎΠ½ΠΊΠΎΠ½Π³.

БистСма Π·Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° конфигурацията Π½Π° ΠΌΡ€Π΅ΠΆΠΎΠ²Π°Ρ‚Π° филтрация Qrator
MTR ΠΎΡ‚ ΠŸΡ€Π°Π³Π° Π΄ΠΎ Π‘ΠΈΠ½Π³Π°ΠΏΡƒΡ€

БистСма Π·Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° конфигурацията Π½Π° ΠΌΡ€Π΅ΠΆΠΎΠ²Π°Ρ‚Π° филтрация Qrator
Π‘ΡŠΡ‰ΠΎΡ‚ΠΎ Π΄ΠΎ Π₯ΠΎΠ½ΠΊΠΎΠ½Π³

ВисокитС закъснСния ΠΎΠ·Π½Π°Ρ‡Π°Π²Π°Ρ‚ ΠΏΠΎ-ниска скорост. ОсвСн Ρ‚ΠΎΠ²Π°, ΠΈΠΌΠ° Π·Π°Π³ΡƒΠ±Π° Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ. Π¨ΠΈΡ€ΠΎΡ‡ΠΈΠ½Π°Ρ‚Π° Π½Π° ΠΊΠ°Π½Π°Π»ΠΈΡ‚Π΅ Π½Π΅ компСнсира Ρ‚ΠΎΠ·ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, ΠΊΠΎΠΉΡ‚ΠΎ Π²ΠΈΠ½Π°Π³ΠΈ трябва Π΄Π° бъдС Π²Π·Π΅Ρ‚ ΠΏΠΎΠ΄ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΏΡ€ΠΈ ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π΄Π΅Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½ΠΈ систСми.

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

Π”ΠΈΠ·Π°ΠΉΠ½ recent-stable

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

Π’ ΠΊΡ€Π°ΠΉΠ½Π° смСтка стигнахмС Π΄ΠΎ доста интСрСсно Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ β€” ΠΈΠΌΠ°ΠΌΠ΅ само Π΅Π΄ΠΈΠ½ ΠΎΠΏΠΎΡ€Π΅Π½ слой, фиксиран, Π½Π΅ΠΊΠ° Π³ΠΎ Π½Π°Ρ€Π΅Ρ‡Π΅ΠΌ stable, ΠΈ само Π΅Π΄ΠΈΠ½ Π΄ΠΈΡ„ Π·Π° Π½Π΅Π³ΠΎ β€” recent. ВсСки recent Π΅ основан Π½Π° послСдния създадСн stable ΠΈ Π΅ Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π΅Π½ Π·Π° рСконструиранС Π½Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΈΡ‚Π΅ Π΄Π°Π½Π½ΠΈ. Π‘Π»Π΅Π΄ ΠΊΠ°Ρ‚ΠΎ новият recent достигнС Π΄ΠΎ мСстоназначСниСто, старият Π²Π΅Ρ‡Π΅ Π½Π΅ Π΅ Π½ΡƒΠΆΠ΅Π½.

ΠžΡΡ‚Π°Π²Π° само ΠΎΡ‚ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° Π²Ρ€Π΅ΠΌΠ΅ Π΄Π° ΠΈΠ·ΠΏΡ€Π°Ρ‰Π°ΠΌΠ΅ свСТа stable конфигурация, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π·Π°Ρ‰ΠΎΡ‚ΠΎ recent Π΅ станал Ρ‚Π²ΡŠΡ€Π΄Π΅ голям. Π‘ΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° Π΅ Π²Π°ΠΆΠ½ΠΎ Π΄Π° ΠΎΡ‚Π±Π΅Π»Π΅ΠΆΠΈΠΌ, Ρ‡Π΅ разпространявамС всички Ρ‚Π΅Π·ΠΈ обновлСния Π² Ρ€Π΅ΠΆΠΈΠΌ Π½Π° бродкаст/мултикаст, Π±Π΅Π· Π΄Π° сС Ρ‚Ρ€Π΅Π²ΠΎΠΆΠΈΠΌ Π·Π° ΠΎΡ‚Π΄Π΅Π»Π½ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚Π΅Π»ΠΈ ΠΈ тяхната способност Π΄Π° ΡΡŠΠ±Π΅Ρ€Π°Ρ‚ ΠΏΠ°Ρ€Ρ‡Π΅Ρ‚Π°Ρ‚Π° Π΄Π°Π½Π½ΠΈ. Π‘Π»Π΅Π΄ ΠΊΠ°Ρ‚ΠΎ сС ΡƒΠ²Π΅Ρ€ΠΈΠΌ, Ρ‡Π΅ всички ΠΏΡ€ΠΈΡ‚Π΅ΠΆΠ°Π²Π°Ρ‚ ΠΊΠΎΡ€Π΅ΠΊΡ‚Π΅Π½ stable β€” ΠΈΠ·ΠΏΡ€Π°Ρ‰Π°ΠΌΠ΅ само Π½ΠΎΠ²ΠΈΡ‚Π΅ recent. Π‘Ρ‚Ρ€ΡƒΠ²Π° Π»ΠΈ си Π΄Π° уточнявамС, Ρ‡Π΅ Ρ‚ΠΎΠ²Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ? Π Π°Π±ΠΎΡ‚ΠΈ. Stable сС ΠΊΠ΅ΡˆΠΈΡ€Π° Π½Π° конфигурационния ΡΡŠΡ€Π²ΡŠΡ€ ΠΈ Ρƒ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚Π΅Π»ΠΈΡ‚Π΅, recent сС създава ΠΏΡ€ΠΈ нСобходимост.

АрхитСктура Π½Π° двуслойния транспорт

Π—Π°Ρ‰ΠΎ ΠΈΠ·Π³Ρ€Π°Π΄ΠΈΡ…ΠΌΠ΅ нашия транспорт Π½Π° Π΄Π²Π° слоя? ΠžΡ‚Π³ΠΎΠ²ΠΎΡ€ΡŠΡ‚ Π΅ Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½ΠΎ прост β€” искахмС Π΄Π° ΠΎΡ‚Π΄Π΅Π»ΠΈΠΌ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΡΡ‚Π° ΠΎΡ‚ високо Π½ΠΈΠ²ΠΎ Π»ΠΎΠ³ΠΈΠΊΠ°, Ρ‡Π΅Ρ€ΠΏΠ΅ΠΉΠΊΠΈ Π²Π΄ΡŠΡ…Π½ΠΎΠ²Π΅Π½ΠΈΠ΅ ΠΎΡ‚ ΠΌΠΎΠ΄Π΅Π»Π° OSI с нСговия транспортСн слой ΠΈ слой Π½Π° прилоТСнията. Π—Π° транспортСн ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» ΠΈΠ·Π±Ρ€Π°Ρ…ΠΌΠ΅ Thrift, Π° Π·Π° високо Π½ΠΈΠ²ΠΎ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Π½Π° управляващитС ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ β€” Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Π½Π° сСриализация msgpack. ΠŸΠΎΡ€Π°Π΄ΠΈ Ρ‚ΠΎΠ²Π° Ρ€ΡƒΡ‚Π΅Ρ€ΡŠΡ‚ (ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π°Ρ‰ multicast/broadcast/relay) Π½Π΅ Ρ€Π°Π·Π³Π»Π΅ΠΆΠ΄Π° ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° msgpack, Π½Π΅ Ρ€Π°Π·ΠΏΠ°ΠΊΠΎΠ²Π° ΠΈ Π½Π΅ ΠΎΠΏΠ°ΠΊΠΎΠ²Π° ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Π½ΠΈΠ΅Ρ‚ΠΎ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ ΠΈ само ΠΎΡΡŠΡ‰Π΅ΡΡ‚Π²ΡΠ²Π° прСноса Π½Π° Π΄Π°Π½Π½ΠΈ.

Thrift (ΠΎΡ‚ Π°Π½Π³Π». Β«Π±Π΅Ρ€Π΅ΠΆΠ»ΠΈΠ²ΠΎΡΡ‚ΡŒΒ», произносится ΠΊΠ°ΠΊ [ΞΈrift]) β€” язык описания интСрфСйсов, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠΉΡΡ для опрСдСлСния ΠΈ создания слуТб для Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… языков программирования. Он являСтся Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠΌ для ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ (RPC). Π‘ΠΎΡ‡Π΅Ρ‚Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€ с Π΄Π²ΠΈΠΆΠΊΠΎΠΌ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ΄Π° для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ слуТб, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ эффСктивно ΠΈ просто Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΌΠ΅ΠΆΠ΄Ρƒ языками.

Нами Π±Ρ‹Π» Π²Ρ‹Π±Ρ€Π°Π½ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ Thrift ΠΈΠ·-Π·Π° Π΅Π³ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ RPC ΠΈ мноТСства языков. Как ΠΈ оТидалось, наимСньшими частями стали ΠΊΠ»ΠΈΠ΅Π½Ρ‚ ΠΈ сСрвСр. Однако Ρ€ΠΎΡƒΡ‚Π΅Ρ€ стал настоящим испытаниСм, отчасти ΠΈΠ·-Π·Π° отсутствия Π³ΠΎΡ‚ΠΎΠ²Ρ‹Ρ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ Π² процСссС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ.

БистСма Π·Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° конфигурацията Π½Π° ΠΌΡ€Π΅ΠΆΠΎΠ²Π°Ρ‚Π° филтрация QratorΠ‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρ‹, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ protobuf/gRPC, Π½ΠΎ Π² Π½Π°Ρ‡Π°Π»Π΅ нашСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° gRPC Π±Ρ‹Π» Π΅Ρ‰Π΅ достаточно ΠΌΠΎΠ»ΠΎΠ΄Ρ‹ΠΌ, ΠΈ ΠΌΡ‹ Π½Π΅ Ρ€Π΅ΡˆΠΈΠ»ΠΈΡΡŒ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ.

ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΌΡ‹ ΠΌΠΎΠ³Π»ΠΈ (ΠΈ, Π½Π° самом Π΄Π΅Π»Π΅, Ρ‚Π°ΠΊ ΠΈ слСдовало Π±Ρ‹) ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ своС. Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ», ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‰ΠΈΠΉ нашим трСбованиям, Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΠΏΡ€ΠΎΡ‰Π΅, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΊΠ»ΠΈΠ΅Π½Ρ‚-сСрвСрная Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ проста Π² Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, Ρ‡Π΅ΠΌ постройка Ρ€ΠΎΡƒΡ‚Π΅Ρ€Π° Π½Π° Thrift. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΠΊ самописным ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°ΠΌ ΠΈ рСализациям популярных Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ (Π½Π΅Π±Π΅Π·ΠΎΡΠ½ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ) сущСствуСт прСдвзятоС ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅, Π° Ρ‚Π°ΠΊΠΆΠ΅ всСгда Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ вопрос: «Как ΠΌΡ‹ это Π±ΡƒΠ΄Π΅ΠΌ ΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ языки?Β». ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΈΠ΄Π΅ΠΈ ΠΎ создании собствСнного Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π±Ρ‹Π»ΠΈ сразу ΠΎΡ‚Π²Π΅Ρ€Π³Π½ΡƒΡ‚Ρ‹.

Msgpack β€” это Π°Π½Π°Π»ΠΎΠ³ JSON, Π½ΠΎ Π±ΠΎΠ»Π΅Π΅ быстрый ΠΈ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½Ρ‹ΠΉ. Π­Ρ‚ΠΎ Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ сСриализации Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт ΠΎΠ±ΠΌΠ΅Π½ΠΈΠ²Π°Ρ‚ΡŒΡΡ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ мноТСством языков.

На ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅ Ρƒ нас находится Thrift с минимально Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ для Ρ€ΠΎΡƒΡ‚Π΅Ρ€Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ΅Ρ€Π΅ΡΡ‹Π»Π°Ρ‚ΡŒ сообщСния. На Π²Ρ‚ΠΎΡ€ΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅ β€” ΡƒΠΏΠ°ΠΊΠΎΠ²Π°Π½Π½Ρ‹Π΅ структуры msgpack.

ΠœΡ‹ Π²Ρ‹Π±Ρ€Π°Π»ΠΈ msgpack, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½ быстрСС ΠΈ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½Π΅Π΅ JSON. Но Ρ‡Ρ‚ΠΎ Π΅Ρ‰Π΅ Π²Π°ΠΆΠ½Π΅Π΅, ΠΎΠ½ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‡Ρ‚ΠΎ позволяСт Π½Π°ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ интСрСсныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° сырых Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ»ΠΈ особых ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‰ΠΈΡ… отсутствиС Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‡Ρ‚ΠΎ Π±Ρ‹Π»ΠΎ критичСски Π²Π°ΠΆΠ½Ρ‹ΠΌ для нашСй схСмы Β«recent-stableΒ».

JMESPath
JMESPath β€” это язык запросов ΠΊ JSON.
Π’Π°ΠΊΠ° ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° описаниСто, ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°ΠΌΠ΅ ΠΎΡ‚ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»Π½Π°Ρ‚Π° докумСнтация Π½Π° JMESPath, Π½ΠΎ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° Ρ‚ΠΎ ΠΏΡ€Π΅Π΄Π»Π°Π³Π° ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ²Π΅Ρ‡Π΅. JMESPath позволява Ρ‚ΡŠΡ€ΡΠ΅Π½Π΅ ΠΈ Ρ„ΠΈΠ»Ρ‚Ρ€ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΏΠΎΠ΄Π΄ΡŠΡ€Π²Π΅Ρ‚Π° Π² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»Π½Π° Π΄ΡŠΡ€Π²ΠΎΠ²ΠΈΠ΄Π½Π° структура, ΠΊΠ°ΠΊΡ‚ΠΎ ΠΈ ΠΏΡ€ΠΈΠ»Π°Π³Π°Π½Π΅ Π½Π° ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ Π² Π΄Π°Π½Π½ΠΈΡ‚Π΅ Π² Ρ€Π΅Π°Π»Π½ΠΎ Π²Ρ€Π΅ΠΌΠ΅. ОсвСн Ρ‚ΠΎΠ²Π°, Ρ‚ΠΎΠΉ позволява добавянС Π½Π° спСциални Ρ„ΠΈΠ»Ρ‚Ρ€ΠΈ ΠΈ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ΠΈ Π·Π° трансформация Π½Π° Π΄Π°Π½Π½ΠΈ. Π’ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‚ΠΎΠ²Π°, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ изисква усилиС Π·Π° Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅.

Jinja
Π—Π° някои ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈ Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° ΠΏΡ€Π΅Π²ΡŠΡ€Π½Π΅ΠΌ конфигурацията Π² Ρ„Π°ΠΉΠ» β€” Π·Π°Ρ‚ΠΎΠ²Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ шаблонСн Π΄Π²ΠΈΠ³Π°Ρ‚Π΅Π» ΠΈ Jinja Π΅ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π΅Π½ ΠΈΠ·Π±ΠΎΡ€. Π‘ нСя Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°ΠΌΠ΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π΅Π½ Ρ„Π°ΠΉΠ» ΠΎΡ‚ шаблона ΠΈ Π΄Π°Π½Π½ΠΈΡ‚Π΅, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈ Π½Π° Ρ‚ΠΎΡ‡ΠΊΠ°Ρ‚Π° Π½Π° Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

Π—Π° Π΄Π° Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°ΠΌΠ΅ конфигурационния Ρ„Π°ΠΉΠ», Π½ΠΈ Π΅ Π½ΡƒΠΆΠ΅Π½ JMESPath заявка, шаблон Π·Π° мСстополоТСниСто Π½Π° Ρ„Π°ΠΉΠ»Π° Π² Ρ„Π°ΠΉΠ»ΠΎΠ²Π°Ρ‚Π° систСма ΠΈ шаблон Π·Π° самата конфигурация. ОсвСн Ρ‚ΠΎΠ²Π°, Π½Π° Ρ‚ΠΎΠ·ΠΈ Π΅Ρ‚Π°ΠΏ Π΅ Π΄ΠΎΠ±Ρ€Π΅ Π΄Π° ΡƒΡ‚ΠΎΡ‡Π½ΠΈΠΌ ΠΏΡ€Π°Π²Π°Ρ‚Π° Π·Π° Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ Ρ„Π°ΠΉΠ»Π°. Всичко Ρ‚ΠΎΠ²Π° успяхмС ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ Π΄Π° ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€Π°ΠΌΠ΅ Π² Π΅Π΄ΠΈΠ½ Ρ„Π°ΠΉΠ» β€” ΠΏΡ€Π΅Π΄ΠΈ Π½Π°Ρ‡Π°Π»ΠΎΡ‚ΠΎ Π½Π° конфигурационния шаблон поставямС Π·Π°Π³Π»Π°Π²ΠΈΠ΅ Π² YAML Ρ„ΠΎΡ€ΠΌΠ°Ρ‚, описващо останалото.

НапримСр:

---
сСлСктор: "[@][?@.fft._meta.version == `42`] | items([0].fft_config || `{}`)"
Ρ†Π΅Π»Π΅Π²ΠΈ_Ρ„Π°ΠΉΠ»: "fft/{{ match[0] }}.json"
Ρ€Π΅ΠΆΠΈΠΌ_Π½Π°_Ρ„Π°ΠΉΠ»: 0644
ΠΏΡ€Π΅Π·Π°Ρ€Π΅Π΄ΠΈ_Π΄Π΅ΠΌΠΎΠ½ΠΈ: [fft]
...
{{ dict(match[1]) | json(indent=2, sort_keys=True) }}

Π—Π° Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΠΌ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π΅Π½ Ρ„Π°ΠΉΠ» Π·Π° Π½ΠΎΠ²Π° услуга, добавямС само Π½ΠΎΠ² Ρ„Π°ΠΉΠ» шаблон. НС са Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ Π² изходния ΠΊΠΎΠ΄ ΠΈΠ»ΠΈ софтуСра Π½Π° Ρ‚ΠΎΡ‡ΠΊΠΈΡ‚Π΅ Π½Π° ΠΏΡ€ΠΈΡΡŠΡΡ‚Π²ΠΈΠ΅.

Какви ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ Π½Π°ΡΡ‚ΡŠΠΏΠΈΡ…Π° слСд внСдряванСто Π½Π° QControl Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½Π°Ρ‚Π° дСйност? ΠŸΡŠΡ€Π²ΠΎΡ‚ΠΎ ΠΈ Π½Π°ΠΉ-Π²Π°ΠΆΠ½ΠΎ β€” послСдоватСлна ΠΈ Π½Π°Π΄Π΅ΠΆΠ΄Π½Π° доставка Π½Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΈ Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π΄ΠΎ всички възли Π² ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π°. Π’Ρ‚ΠΎΡ€ΠΎΡ‚ΠΎ β€” ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°Π½Π΅ Π½Π° ΠΌΠΎΡ‰Π΅Π½ инструмСнт Π·Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° конфигурацията ΠΈ ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π°Π½Π΅ Π½Π° ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ ΠΎΡ‚ нашия Π΅ΠΊΠΈΠΏ Π·Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ°, ΠΊΠ°ΠΊΡ‚ΠΎ ΠΈ ΠΎΡ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈΡ‚Π΅ Π½Π° услугата.

УспяхмС Π΄Π° постигнСм всичко Ρ‚ΠΎΠ²Π°, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ схСмата Π·Π° Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ recent-stable Π·Π° опростяванС Π½Π° комуникацията ΠΌΠ΅ΠΆΠ΄Ρƒ конфигурационния ΡΡŠΡ€Π²ΡŠΡ€ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚Π΅Π»ΠΈΡ‚Π΅ Π½Π° конфигурацията. Използвайки двустСпСнСн ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» Π·Π° ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Π½Π΅ Π½Π° нСзависим ΠΎΡ‚ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π°Ρ‡ΠΈΠ½ Π½Π° ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈΡ‚Π΅. УспСшно ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€Π°ΠΉΠΊΠΈ базирания Π½Π° Jinja Π΄Π²ΠΈΠ³Π°Ρ‚Π΅Π» Π·Π° Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Π½Π΅ Π½Π° конфигурация Π² Ρ€Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π°Ρ‚Π° ΠΌΡ€Π΅ΠΆΠ° Π·Π° Ρ„ΠΈΠ»Ρ‚Ρ€ΠΈΡ€Π°Π½Π΅. Π’Π°Π·ΠΈ систСма ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° ΡˆΠΈΡ€ΠΎΠΊ Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈ Π·Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Π½Π΅ Π·Π° Π½Π°ΡˆΠ°Ρ‚Π° Ρ€Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π° ΠΈ Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·Π½Π° пСрифСрия.

Π‘Π»Π°Π³ΠΎΠ΄Π°Ρ€ΠΈΠΌ Π²ΠΈ Π·Π° ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° ΠΏΡ€ΠΈ написванСто Π½Π° ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π° VolanDamrod, serenheit, NoN.

Английската вСрсия поста.

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

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