БистСма Π·Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° конфигурацията Π½Π° ΠΌΡ€Π΅ΠΆΠΎΠ²Π°Ρ‚Π° филтрация 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