ΠΡΠ½ΠΎΠ²Π½ΠΈ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ Π½Π° ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ΡΠΎ:
- ΠΡΠ²Π΅Π΄Π΅Π½ Π½ΠΎΠ² API
ΠΠ»Π°Π½ Π·Π° Π΄Π°Π½Π½ΠΈ , ΠΊΠΎΠ΅ΡΠΎ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΡΠΏΡΠ°Π²Π»ΡΠ²Π°ΡΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈΡΠ΅ Π½Π° HAProxy Π² Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ ΡΡΠ΅Π· REST Web API. ΠΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ½ΠΎ Π΄Π° Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ ΠΈ ΠΏΡΠ΅ΠΌΠ°Ρ Π²Π°ΡΠ΅ Π±Π΅ΠΊΠ΅Π½Π΄ΠΎΠ²Π΅ ΠΈ ΡΡΡΠ²ΡΡΠΈ, Π΄Π° ΡΡΠ·Π΄Π°Π²Π°ΡΠ΅ ACL, Π΄Π° ΠΏΡΠΎΠΌΠ΅Π½ΡΡΠ΅ ΠΌΠ°ΡΡΡΡΡΠΈΠ·ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° Π·Π°ΡΠ²ΠΊΠΈ, Π΄Π° ΠΏΡΠΎΠΌΠ΅Π½ΡΡΠ΅ ΠΎΠ±Π²ΡΡΠ·Π²Π°Π½ΠΈΡΡΠ° Π½Π° ΠΌΠ°Π½ΠΈΠΏΡΠ»Π°ΡΠΎΡΠ° ΠΊΡΠΌ IP; - ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π°ΡΠ° nbthread, ΠΊΠΎΡΡΠΎ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°ΡΠ΅ Π±ΡΠΎΡ Π½Π° Π½ΠΈΡΠΊΠΈΡΠ΅, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ Π² HAProxy, Π·Π° Π΄Π° ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠ°ΡΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° Π½Π° ΠΌΠ½ΠΎΠ³ΠΎΡΠ΄ΡΠ΅Π½ΠΈ ΠΏΡΠΎΡΠ΅ΡΠΎΡΠΈ. ΠΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ Π±ΡΠΎΡΡ Π½Π° ΡΠ°Π±ΠΎΡΠ½ΠΈΡΠ΅ Π½ΠΈΡΠΊΠΈ ΡΠ΅ ΠΈΠ·Π±ΠΈΡΠ° Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ ΠΎΡ Π½Π°Π»ΠΈΡΠ½ΠΈΡΠ΅ CPU ΡΠ΄ΡΠ° Π² ΡΠ΅ΠΊΡΡΠ°ΡΠ° ΡΡΠ΅Π΄Π°, Π° Π² ΠΎΠ±Π»Π°ΡΠ½ΠΈΡΠ΅ ΡΡΠ΅Π΄ΠΈ ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ Π΅ Π΅Π΄Π½Π° Π½ΠΈΡΠΊΠ°. ΠΠ° Π·Π°Π΄Π°Π²Π°Π½Π΅ Π½Π° ΡΠ²ΡΡΠ΄ΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ ΡΠ° Π΄ΠΎΠ±Π°Π²Π΅Π½ΠΈ ΠΎΠΏΡΠΈΠΈ Π·Π° Π°ΡΠ΅ΠΌΠ±Π»ΠΈΡΠ°Π½Π΅ MAX_THREADS ΠΈ MAX_PROCS, ΠΎΠ³ΡΠ°Π½ΠΈΡΠ°Π²Π°ΡΠΈ Π³ΠΎΡΠ½Π°ΡΠ° Π³ΡΠ°Π½ΠΈΡΠ° Π½Π° Π±ΡΠΎΡ Π½Π° Π½ΠΈΡΠΊΠΈΡΠ΅ ΠΈ ΠΏΡΠΎΡΠ΅ΡΠΈΡΠ΅;
- ΠΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π°ΡΠ° Π·Π° ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ Π·Π° ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ Π½Π° ΠΌΠ°Π½ΠΈΠΏΡΠ»Π°ΡΠΎΡΠΈ ΠΊΡΠΌ ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈ Π°Π΄ΡΠ΅ΡΠΈ Π΅ ΠΎΠΏΡΠΎΡΡΠ΅Π½ΠΎ. ΠΡΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠ°ΡΠ° Π²Π΅ΡΠ΅ Π½Π΅ Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° ΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠ° - ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ Π²ΡΡΠ·ΠΊΠΈΡΠ΅ ΡΠ΅ Π±ΡΠ΄Π°Ρ ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈ ΠΌΠ΅ΠΆΠ΄Ρ Π½ΠΈΡΠΊΠΈΡΠ΅ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ ΠΎΡ Π±ΡΠΎΡ Π½Π° Π°ΠΊΡΠΈΠ²Π½ΠΈΡΠ΅ Π²ΡΡΠ·ΠΊΠΈ.
- ΠΠ°ΡΡΡΠΎΠΉΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ° Π² ΠΈΠ·ΠΎΠ»ΠΈΡΠ°Π½ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ Π΅ ΠΎΠΏΡΠΎΡΡΠ΅Π½ΠΎ - ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΈΡΡ ΡΠ°ΠΉΠ» Π²Π΅ΡΠ΅ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΠΈΠ·ΠΏΡΠ°ΡΠ΅Π½ Π΄ΠΎ stdout ΠΈ stderr, ΠΊΠ°ΠΊΡΠΎ ΠΈ Π΄ΠΎ Π²ΡΠ΅ΠΊΠΈ ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°Ρ ΡΠ°ΠΉΠ»ΠΎΠ² Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ βlog fd@1 local0β);
- ΠΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°ΡΠ° Π·Π° HTX (Native HTTP Representation) Π΅ Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½Π° ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅, ΠΊΠΎΠ΅ΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π±Π°Π»Π°Π½ΡΠΈΡΠ°Π½Π΅ ΠΏΡΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΊΠ°ΡΠΎ HTTP/2 ΠΎΡ ΠΊΡΠ°ΠΉ Π΄ΠΎ ΠΊΡΠ°ΠΉ, Layer 7 Retries ΠΈ gRPC. HTX Π½Π΅ Π·Π°ΠΌΠ΅ΡΡΠ²Π° Π·Π°Π³Π»Π°Π²ΠΊΠΈΡΠ΅ Π½Π° ΠΌΡΡΡΠΎ, Π½ΠΎ Π½Π°ΠΌΠ°Π»ΡΠ²Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΡΠ° ΠΏΠΎ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΡ Π΄ΠΎ ΠΏΡΠ΅ΠΌΠ°Ρ Π²Π°Π½Π΅ ΠΈ Π΄ΠΎΠ±Π°Π²ΡΠ½Π΅ Π½Π° Π½ΠΎΠ²Π° Π·Π°Π³Π»Π°Π²ΠΊΠ° Π² ΠΊΡΠ°Ρ Π½Π° ΡΠΏΠΈΡΡΠΊΠ°, ΠΊΠΎΠ΅ΡΠΎ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΠΌΠ°Π½ΠΈΠΏΡΠ»ΠΈΡΠ°ΡΠ΅ Π²ΡΠΈΡΠΊΠΈ ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈ Π²Π°ΡΠΈΠ°Π½ΡΠΈ Π½Π° HTTP ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π°, ΠΊΠ°ΡΠΎ Π·Π°ΠΏΠ°Π·Π²Π°ΡΠ΅ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»Π½Π°ΡΠ° ΡΠ΅ΠΌΠ°Π½ΡΠΈΠΊΠ° Π½Π° Π·Π°Π³Π»Π°Π²ΠΊΠΈΡΠ΅ ΠΈ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°Ρ Π·Π° ΠΏΠΎΡΡΠΈΠ³Π°Π½Π΅ Π½Π° ΠΏΠΎ-Π²ΠΈΡΠΎΠΊΠ° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡ ΠΏΡΠΈ ΠΏΡΠ΅Π²ΠΎΠ΄ Π½Π° HTTP/2 Π² HTTP/1.1 ΠΈ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ;
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΎΡΠΈΡΠΈΠ°Π»Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΡΠ΅ΠΆΠΈΠΌ HTTP/2 ΠΎΡ ΠΊΡΠ°ΠΉ Π΄ΠΎ ΠΊΡΠ°ΠΉ (ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° Π²ΡΠΈΡΠΊΠΈ Π΅ΡΠ°ΠΏΠΈ Π² HTTP/2, Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½ΠΈΡ ΠΊΡΠΌ Π±Π΅ΠΊΠ΅Π½Π΄Π°, Π° Π½Π΅ ΡΠ°ΠΌΠΎ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΡΠΎΠΊΡΠΈΡΠΎ ΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°);
- ΠΡΠ»Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° Π΄Π²ΡΠΏΠΎΡΠΎΡΠ½ΠΎ ΠΏΡΠΎΠΊΡΠΈ Π½Π° gRPC ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π° Π΅ Π²Π½Π΅Π΄ΡΠ΅Π½Π° Ρ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° gRPC ΠΏΠΎΡΠΎΡΠΈ, ΠΏΠΎΠ΄ΡΠ΅ΡΡΠ°Π²Π°Π½Π΅ Π½Π° ΠΎΡΠ΄Π΅Π»Π½ΠΈ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ, ΠΎΡΡΠ°Π·ΡΠ²Π°Π½Π΅ Π½Π° gRPC ΡΡΠ°ΡΠΈΠΊΠ° Π² ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΈΡ ΡΠ°ΠΉΠ» ΠΈ ΡΠΈΠ»ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ ΡΡΠ΅Π· ACL. gRPC Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΈΡΠ°ΡΠ΅ ΡΠ°Π±ΠΎΡΠ°ΡΠ° Π½Π° ΠΌΠΈΠΊΡΠΎΡΡΠ»ΡΠ³ΠΈ Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π΅Π·ΠΈΡΠΈ Π·Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅, ΠΊΠΎΠΈΡΠΎ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²Π°Ρ ΠΏΠΎΠΌΠ΅ΠΆΠ΄Ρ ΡΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»Π΅Π½ API. ΠΡΠ΅ΠΆΠΎΠ²Π°ΡΠ° ΠΊΠΎΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΡ Π² gRPC ΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ° Π²ΡΡΡ Ρ HTTP/2 ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π° ΠΈ ΡΠ΅ ΠΎΡΠ½ΠΎΠ²Π°Π²Π° Π½Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π½ΠΈ Π±ΡΡΠ΅ΡΠΈ Π·Π° ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ.
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΡΠ΅ΠΆΠΈΠΌΠ° βLayer 7 Retriesβ, ΠΊΠΎΠΉΡΠΎ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΠΈΠ·ΠΏΡΠ°ΡΠ°ΡΠ΅ ΠΏΠΎΠ²ΡΠ°ΡΡΡΠΈ ΡΠ΅ HTTP Π·Π°ΡΠ²ΠΊΠΈ Π² ΡΠ»ΡΡΠ°ΠΉ Π½Π° ΡΠΎΡΡΡΠ΅ΡΠ½ΠΈ ΠΏΠΎΠ²ΡΠ΅Π΄ΠΈ, ΠΊΠΎΠΈΡΠΎ Π½Π΅ ΡΠ° ΡΠ²ΡΡΠ·Π°Π½ΠΈ Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ ΠΏΡΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΡΠ²Π°Π½Π΅ Π½Π° ΠΌΡΠ΅ΠΆΠΎΠ²Π° Π²ΡΡΠ·ΠΊΠ° (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π°ΠΊΠΎ Π½ΡΠΌΠ° ΠΎΡΠ³ΠΎΠ²ΠΎΡ ΠΈΠ»ΠΈ ΠΏΡΠ°Π·Π΅Π½ ΠΎΡΠ³ΠΎΠ²ΠΎΡ Π½Π° POST Π·Π°ΡΠ²ΠΊΠ°). ΠΠ° Π΄Π° Π΄Π΅Π°ΠΊΡΠΈΠ²ΠΈΡΠ°ΡΠ΅ ΡΠ΅ΠΆΠΈΠΌΠ°, ΡΠ»Π°Π³ΡΡ βdisable-l7-retryβ Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½ ΠΊΡΠΌ ΠΎΠΏΡΠΈΡΡΠ° βhttp-requestβ ΠΈ ΠΎΠΏΡΠΈΡΡΠ° βretry-onβ Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° Π·Π° ΡΠΈΠ½Π° Π½Π°ΡΡΡΠΎΠΉΠΊΠ° Π² ΡΠ΅ΠΊΡΠΈΠΈΡΠ΅ ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅, ΡΠ»ΡΡΠ°Π½Π΅ ΠΈ Π±Π΅ΠΊΠ΅Π½Π΄. Π‘Π»Π΅Π΄Π½ΠΈΡΠ΅ Π·Π½Π°ΡΠΈ ΡΠ° Π½Π°Π»ΠΈΡΠ½ΠΈ Π·Π° ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ ΠΈΠ·ΠΏΡΠ°ΡΠ°Π½Π΅: all-retryable-errors, none, conn-failure, empty-response, junk-response, response-timeout, 0rtt-rejected, ΠΊΠ°ΠΊΡΠΎ ΠΈ ΠΎΠ±Π²ΡΡΠ·Π²Π°Π½Π΅ Π·Π° Π²ΡΡΡΠ°Π½Π΅ Π½Π° ΠΊΠΎΠ΄ΠΎΠ²Π΅ Π·Π° ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ (404 ΠΈ Ρ.Π½.) ;
- ΠΡΠ²Π΅Π΄Π΅Π½ Π΅ Π½ΠΎΠ² ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡΡ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠΈ, ΠΊΠΎΠΉΡΠΎ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°ΡΠ΅ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ΡΠΎ Π½Π° Π²ΡΠ½ΡΠ½ΠΈ ΠΈΠ·ΠΏΡΠ»Π½ΠΈΠΌΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ Ρ ΠΌΠ°Π½ΠΈΠΏΡΠ»Π°ΡΠΎΡΠΈ Π·Π° HAProxy.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Data Plan API (/usr/sbin/dataplaneapi), ΠΊΠ°ΠΊΡΠΎ ΠΈ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΌΠ°ΡΠΈΠ½ΠΈ Π·Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΠΏΠΎΡΠΎΡΠΈ Π·Π° ΡΠ°Π·ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅, ΡΠ° Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈ ΠΏΠΎΠ΄ ΡΠΎΡΠΌΠ°ΡΠ° Π½Π° ΡΠ°ΠΊΡΠ² Π²ΡΠ½ΡΠ΅Π½ ΠΌΠ°Π½ΠΈΠΏΡΠ»Π°ΡΠΎΡ; - ΠΠΎΠ±Π°Π²Π΅Π½ΠΈ ΡΠ° ΠΎΠ±Π²ΡΡΠ·Π²Π°Π½ΠΈΡ Π·Π° .NET Core, Go, Lua ΠΈ Python Π·Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π°Π½Π΅ Π½Π° SPOE (Stream Processing Offload Engine) ΠΈ SPOP (Stream Processing Offload Protocol) ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈΡ. ΠΡΠ΅Π΄ΠΈ ΡΠΎΠ²Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈΡ ΡΠ΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°ΡΠ΅ ΡΠ°ΠΌΠΎ Π² C;
- ΠΠΎΠ±Π°Π²Π΅Π½ Π²ΡΠ½ΡΠ΅Π½ ΠΌΠ°Π½ΠΈΠΏΡΠ»Π°ΡΠΎΡ Π½Π° spoa-mirror (/usr/sbin/spoa-mirror) Π·Π° ΠΎΡΡΠ°Π·ΡΠ²Π°Π½Π΅ Π½Π° Π·Π°ΡΠ²ΠΊΠΈ ΠΊΡΠΌ ΠΎΡΠ΄Π΅Π»Π΅Π½ ΡΡΡΠ²ΡΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π·Π° ΠΊΠΎΠΏΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ°ΡΡ ΠΎΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½ΠΈΡ ΡΡΠ°ΡΠΈΠΊ Π·Π° ΡΠ΅ΡΡΠ²Π°Π½Π΅ Π½Π° Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»Π½Π° ΡΡΠ΅Π΄Π° ΠΏΡΠΈ ΡΠ΅Π°Π»Π½ΠΎ Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅);
- ΠΠ·ΠΏΡΠ°ΡΠ΅Π½ΠΎ ΠΎΡ
HAProxy Kubernetes Π²Ρ ΠΎΠ΄Π΅Π½ ΠΊΠΎΠ½ΡΡΠΎΠ»Π΅Ρ Π·Π° ΠΎΡΠΈΠ³ΡΡΡΠ²Π°Π½Π΅ Π½Π° ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° Kubernetes; - ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ Π²Π³ΡΠ°Π΄Π΅Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° Π΅ΠΊΡΠΏΠΎΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ° ΠΊΡΠΌ ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° Π·Π° ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³
ΠΡΠΎΠΌΠ΅ΡΠ΅ΠΉ ; - ΠΡΠΎΡΠΎΠΊΠΎΠ»ΡΡ Peers, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ Π·Π° ΠΎΠ±ΠΌΠ΅Π½ Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Ρ Π΄ΡΡΠ³ΠΈ Π²ΡΠ·Π»ΠΈ, ΡΠ°Π±ΠΎΡΠ΅ΡΠΈ Ρ HAProxy, Π΅ ΡΠ°Π·ΡΠΈΡΠ΅Π½. ΠΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° Heartbeat ΠΈ ΠΊΡΠΈΠΏΡΠΈΡΠ°Π½ΠΎ ΠΏΡΠ΅Π΄Π°Π²Π°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ;
- ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡΡΡ βΠΏΡΠΎΠ±Π°β Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½ ΠΊΡΠΌ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π°ΡΠ° βΠ΄Π½Π΅Π²Π½ΠΈΠΊβ, ΠΊΠΎΠ΅ΡΠΎ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΠΈΠ·Ρ Π²ΡΡΠ»ΠΈΡΠ΅ ΡΠ°ΠΌΠΎ ΡΠ°ΡΡ ΠΎΡ Π·Π°ΡΠ²ΠΊΠΈΡΠ΅ Π² ΠΆΡΡΠ½Π°Π»Π°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ 1 ΠΎΡ 10, Π·Π° Π΄Π° ΡΠΎΡΠΌΠΈΡΠ°ΡΠ΅ Π°Π½Π°Π»ΠΈΡΠΈΡΠ½Π° ΠΈΠ·Π²Π°Π΄ΠΊΠ°;
- ΠΠΎΠ±Π°Π²Π΅Π½ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅Π½ ΡΠ΅ΠΆΠΈΠΌ Π½Π° ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠ°Π½Π΅ (Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π° profiling.tasks, ΠΊΠΎΡΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΡΠΈΠ΅ΠΌΠ° ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈΡΠ΅ auto, on ΠΈ off). ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎΡΠΎ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠ°Π½Π΅ Π΅ Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½ΠΎ, Π°ΠΊΠΎ ΡΡΠ΅Π΄Π½Π°ΡΠ° Π»Π°ΡΠ΅Π½ΡΠ½ΠΎΡΡ Π½Π°Π΄Π²ΠΈΡΠ°Π²Π° 1000 ms. ΠΠ° Π΄Π° Π²ΠΈΠ΄ΠΈΡΠ΅ Π΄Π°Π½Π½ΠΈΡΠ΅ Π·Π° ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠ°Π½Π΅, ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° βΠΏΠΎΠΊΠ°ΠΆΠΈ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠ°Π½Π΅β Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° ΠΊΡΠΌ API Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΄Π° Π½ΡΠ»ΠΈΡΠ°ΡΠ΅ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ°ΡΠ° Π² Π΄Π½Π΅Π²Π½ΠΈΠΊΠ°;
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ Π±Π΅ΠΊΠ΅Π½Π΄ ΡΡΡΠ²ΡΡΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π° SOCKS4;
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° ΠΎΡ ΠΊΡΠ°ΠΉ Π΄ΠΎ ΠΊΡΠ°ΠΉ Π·Π° ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ° Π·Π° Π±ΡΡΠ·ΠΎ ΠΎΡΠ²Π°ΡΡΠ½Π΅ Π½Π° TCP Π²ΡΡΠ·ΠΊΠΈ (TFO - TCP Fast Open, RFC 7413), ΠΊΠΎΠ΅ΡΠΎ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° Π½Π°ΠΌΠ°Π»ΠΈΡΠ΅ Π±ΡΠΎΡ Π½Π° ΡΡΡΠΏΠΊΠΈΡΠ΅ Π·Π° Π½Π°ΡΡΡΠΎΠΉΠΊΠ° Π½Π° Π²ΡΡΠ·ΠΊΠ°ΡΠ°, ΠΊΠ°ΡΠΎ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠ°ΡΠ΅ ΠΏΡΡΠ²Π°ΡΠ° Π² Π΅Π΄Π½Π° Π·Π°ΡΠ²ΠΊΠ° ΠΈ Π²ΡΠΎΡΠ°ΡΠ° ΡΡΡΠΏΠΊΠ° Π½Π° ΠΊΠ»Π°ΡΠΈΡΠ΅ΡΠΊΠΈΡΡ ΠΏΡΠΎΡΠ΅Ρ Π½Π° Π΄ΠΎΠ³ΠΎΠ²Π°ΡΡΠ½Π΅ Π½Π° Π²ΡΡΠ·ΠΊΠ° Π² 3 ΡΡΡΠΏΠΊΠΈ ΠΈ Π΄Π°Π²Π° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΠΈΠ·ΠΏΡΠ°ΡΠ°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ Π² Π½Π°ΡΠ°Π»Π½ΠΈΡ Π΅ΡΠ°ΠΏ Π½Π° ΡΡΡΠ°Π½ΠΎΠ²ΡΠ²Π°Π½Π΅ Π½Π° Π²ΡΡΠ·ΠΊΠ°;
- ΠΠΎΠ±Π°Π²Π΅Π½ΠΈ Π½ΠΎΠ²ΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ:
- "http-request replace-uri" Π·Π° Π·Π°ΠΌΡΠ½Π° Π½Π° URL Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΡΠ΅Π³ΡΠ»ΡΡΠ΅Π½ ΠΈΠ·ΡΠ°Π·;
- βtcp-request content do-resolveβ ΠΈ βhttp-request do-resolveβ Π·Π° ΡΠ°Π·ΡΠ΅ΡΠ°Π²Π°Π½Π΅ Π½Π° ΠΈΠΌΠ΅ΡΠΎ Π½Π° Ρ ΠΎΡΡΠ°;
- βtcp-request content set-dstβ ΠΈ βtcp-request content set-dst-portβ Π·Π° Π·Π°ΠΌΠ΅ΡΡΠ²Π°Π½Π΅ Π½Π° ΡΠ΅Π»Π΅Π²ΠΈΡ IP Π°Π΄ΡΠ΅Ρ ΠΈ ΠΏΠΎΡΡ.
- ΠΠΎΠ±Π°Π²Π΅Π½ΠΈ Π½ΠΎΠ²ΠΈ ΠΌΠΎΠ΄ΡΠ»ΠΈ Π·Π° ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ²Π°Π½Π΅:
- aes_gcm_dev Π·Π° Π΄Π΅ΡΠΈΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΠΎΡΠΎΡΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° Π°Π»Π³ΠΎΡΠΈΡΠΌΠΈ AES128-GCM, AES192-GCM ΠΈ AES256-GCM;
- protobuf Π·Π° ΠΈΠ·Π²Π»ΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΠΎΠ»Π΅ΡΠ° ΠΎΡ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ Π½Π° ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π½ΠΈ Π±ΡΡΠ΅ΡΠΈ;
- ungrpc Π·Π° ΠΈΠ·Π²Π»ΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΠΎΠ»Π΅ΡΠ° ΠΎΡ gRPC ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru