ΡΠ΅Π»ΠΈΠ· Π½Π° Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²ΡΠΈΠΊΠ° Π½Π° Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅ , ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°Ρ ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° HTTP ΡΡΠ°ΡΠΈΠΊ ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»Π½ΠΈ TCP Π·Π°ΡΠ²ΠΊΠΈ ΠΌΠ΅ΠΆΠ΄Ρ Π³ΡΡΠΏΠ° ΡΡΡΠ²ΡΡΠΈ, ΠΊΠ°ΡΠΎ Π²Π·Π΅ΠΌΠ° ΠΏΡΠ΅Π΄Π²ΠΈΠ΄ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΠ°ΠΊΡΠΎΡΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΎΠ²Π΅ΡΡΠ²Π° Π½Π°Π»ΠΈΡΠ½ΠΎΡΡΡΠ° Π½Π° ΡΡΡΠ²ΡΡΠΈ, ΠΎΡΠ΅Π½ΡΠ²Π° Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅ΡΠΎ, ΠΏΡΠ΅Π΄Π»Π°Π³Π° ΡΡΠ΅Π΄ΡΡΠ²Π° Π·Π° Π·Π°ΡΠΈΡΠ° ΡΡΠ΅ΡΡ DDoS Π°ΡΠ°ΠΊΠΈ) ΠΈ ΠΈΠ·Π²ΡΡΡΠ²Π° ΠΏΡΡΠ²ΠΈΡΠ½Π° ΡΠΈΠ»ΡΡΠ°ΡΠΈΡ Π½Π° Π΄Π°Π½Π½ΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΠΎΠΆΠ΅ Π΄Π° Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠ° HTTP Π·Π°Π³Π»Π°Π²ΠΈΡ, Π΄Π° ΡΠΈΠ»ΡΡΠΈΡΠ° ΠΏΡΠ΅Π΄Π°Π²Π°Π½Π΅ Π½Π° Π½Π΅ΠΊΠΎΡΠ΅ΠΊΡΠ½ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ Π½Π° Π·Π°ΡΠ²ΠΊΠ°ΡΠ°, Π΄Π° Π±Π»ΠΎΠΊΠΈΡΠ° SQL ΠΈΠ½ΠΆΠ΅ΠΊΡΠΈΠΈ ΠΈ XSS, Π΄Π° ΡΠ²ΡΡΠ·Π²Π° Π°Π³Π΅Π½ΡΠΈ Π·Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅ΡΠΎ). HAProxy ΡΡΡΠΎ ΠΌΠΎΠΆΠ΅ Π·Π° ΠΊΠΎΠΎΡΠ΄ΠΈΠ½ΠΈΡΠ°Π½Π΅ Π½Π° Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ΡΠΎ Π½Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈΡΠ΅ Π² ΡΠΈΡΡΠ΅ΠΌΠΈ, Π±Π°Π·ΠΈΡΠ°Π½ΠΈ Π½Π° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° Π½Π° ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΠ·ΠΈ. ΠΠΎΠ΄ΡΡ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° Π΅ Π½Π°ΠΏΠΈΡΠ°Π½ Π½Π° C ΠΈ Π΅ ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π·ΠΈΡ GPLv2. ΠΡΠΎΠ΅ΠΊΡΡΡ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π½Π° ΠΌΠ½ΠΎΠ³ΠΎ Π³ΠΎΠ»Π΅ΠΌΠΈ ΡΠ°ΠΉΡΠΎΠ²Π΅, Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ Airbnb, Alibaba, GitHub, Imgur, Instagram, Reddit, StackOverflow, Tumblr, Twitter ΠΈ Vimeo.
ΠΠ»ΡΡΠΎΠ²ΠΈ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ Π½Π° Π²Π΅ΡΡΠΈΡΡΠ°:
- ΠΡΠ΅Π΄ΡΡΠ°Π²Π΅Π½ Π΅ Π½ΠΎΠ² API , ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°Ρ Π½Π° Π»Π΅ΡΠ° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° Π½Π°ΡΡΡΠΎΠΉΠΊΠΈΡΠ΅ Π½Π° HAProxy ΡΡΠ΅Π· REST Web API. ΠΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΡΠ½Π΅ ΠΈ ΠΏΡΠ΅ΠΌΠ°Ρ Π²Π°Π½Π΅ Π½Π° Π±Π΅ΠΊΠ΅Π½Π΄ΠΈ ΠΈ ΡΡΡΠ²ΡΡΠΈ, ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° ACL, ΠΏΡΠΎΠΌΡΠ½Π° Π½Π° ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΡΡΠ° Π½Π° Π·Π°ΡΠ²ΠΊΠΈΡΠ΅, ΠΏΡΠΎΠΌΡΠ½Π° Π½Π° ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π°ΡΠΈΡΠ΅ IP;
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π° nbthread, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°ΡΠ° Π½Π°ΡΡΡΠΎΠΉΠΊΠ° Π½Π° Π±ΡΠΎΡ Π½Π° ΠΏΠΎΡΠΎΠΊΠΎΠ²Π΅ΡΠ΅, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ Π² HAProxy Π·Π° ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ Π½Π° ΡΠ°Π±ΠΎΡΠ°ΡΠ° Π½Π° ΠΌΠ½ΠΎΠ³ΠΎΡΠ΄ΡΠ΅Π½ΠΈ CPU. ΠΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ Π±ΡΠΎΡΡ Π½Π° ΡΠ°Π±ΠΎΡΠ½ΠΈΡΠ΅ ΠΏΠΎΡΠΎΡΠΈ ΡΠ΅ ΠΈΠ·Π±ΠΈΡΠ° Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ ΠΎΡ Π½Π°Π»ΠΈΡΠ½ΠΈΡΠ΅ ΡΠ΄ΡΠ° CPU Π² ΡΠ΅ΠΊΡΡΠ°ΡΠ° ΡΡΠ΅Π΄Π°, Π° Π² ΠΎΠ±Π»Π°ΡΠ½ΠΈ ΡΡΠ΅Π΄ΠΈ ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ ΡΠ΅ Π·Π°Π΄Π°Π²Π° Π΅Π΄ΠΈΠ½ ΠΏΠΎΡΠΎΠΊ. ΠΠ° Π·Π°Π΄Π°Π²Π°Π½Π΅ Π½Π° ΡΡΡΠΎΠ³ΠΈ Π»ΠΈΠΌΠΈΡΠΈ ΡΠ° Π΄ΠΎΠ±Π°Π²Π΅Π½ΠΈ ΠΎΠΏΡΠΈΠΈ Π·Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Π½Π΅ MAX_THREADS ΠΈ MAX_PROCS, ΠΊΠΎΠΈΡΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ°Π²Π°Ρ Π³ΠΎΡΠ½Π°ΡΠ° Π³ΡΠ°Π½ΠΈΡΠ° Π·Π° Π±ΡΠΎΡ Π½Π° ΠΏΠΎΡΠΎΠΊΠΎΠ²Π΅ΡΠ΅ ΠΈ ΠΏΡΠΎΡΠ΅ΡΠΈΡΠ΅;
- ΠΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠ°Π½ΠΎ Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π°ΡΠ° bind Π·Π° ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ Π½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΡΠΈ ΠΊΡΠΌ ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈ Π°Π΄ΡΠ΅ΡΠΈ. ΠΡΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠ°ΡΠ° Π²Π΅ΡΠ΅ Π½Π΅ Π΅ Π·Π°Π΄ΡΠ»ΠΆΠΈΡΠ΅Π»Π½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π΅ΡΠΎ Π½Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠ° β ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ Π²ΡΡΠ·ΠΊΠΈΡΠ΅ ΡΠ΅ ΡΠ΅ ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»ΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΠΎΡΠΎΠΊΠΎΠ²Π΅ΡΠ΅ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ ΠΎΡ Π±ΡΠΎΡ Π½Π° Π°ΠΊΡΠΈΠ²Π½ΠΈΡΠ΅ Π²ΡΡΠ·ΠΊΠΈ.
- ΠΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠ°Π½ΠΎ Π΅ Π½Π°ΡΡΡΠΎΠΉΠ²Π°Π½Π΅ΡΠΎ Π½Π° Π»ΠΎΠ³ΠΎΠ²Π΅ΡΠ΅ ΠΏΡΠΈ ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π² ΠΈΠ·ΠΎΠ»ΠΈΡΠ°Π½ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ β Π»ΠΎΠ³ΠΎΠ²Π΅ΡΠ΅ ΡΠ΅Π³Π° ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ Π½Π°ΡΠΎΡΠ΅Π½ΠΈ ΠΊΡΠΌ stdout ΠΈ stderr, ΠΊΠ°ΠΊΡΠΎ ΠΈ ΠΊΡΠΌ Π²ΡΠ΅ΠΊΠΈ ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°Ρ ΡΠ°ΠΉΠ»ΠΎΠ² Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, "log fd@1 local0");
- ΠΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ Π΅ Π²ΠΊΠ»ΡΡΠ΅Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° HTX (Native HTTP Representation), ΠΊΠΎΠ΅ΡΠΎ ΠΎΡΠΈΠ³ΡΡΡΠ²Π° Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²ΠΊΠ° ΠΏΡΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΊΠ°ΡΠΎ end-to-end HTTP/2, Layer 7 Retries ΠΈ gRPC. HTX Π½Π΅ Π·Π°ΠΌΠ΅Π½Ρ Π·Π°Π³Π»Π°Π²ΠΈΡΡΠ° Π½Π° ΠΌΡΡΡΠΎ, Π° ΡΠ²Π΅ΠΆΠ΄Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΡΠ° Π½Π° ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΡ Π΄ΠΎ ΠΏΡΠ΅ΠΌΠ°Ρ Π²Π°Π½Π΅ ΠΈ Π΄ΠΎΠ±Π°Π²ΡΠ½Π΅ Π½Π° Π½ΠΎΠ²ΠΎ Π·Π°Π³Π»Π°Π²ΠΈΠ΅ Π² ΠΊΡΠ°Ρ Π½Π° ΡΠΏΠΈΡΡΠΊΠ°, ΠΊΠΎΠ΅ΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΠΌΠ°Π½ΠΈΠΏΡΠ»ΠΈΡΠ°Π½Π΅ Ρ Π²ΡΡΠΊΠ°ΠΊΠ²ΠΈ ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈ Π²Π°ΡΠΈΠ°Π½ΡΠΈ Π½Π° ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π° HTTP, Π·Π°ΠΏΠ°Π·Π²Π°ΠΉΠΊΠΈ ΠΏΡΡΠ²ΠΎΠ½Π°ΡΠ°Π»Π½Π°ΡΠ° ΡΠ΅ΠΌΠ°Π½ΡΠΈΠΊΠ° Π½Π° Π·Π°Π³Π»Π°Π²ΠΈΡΡΠ° ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°ΠΉΠΊΠΈ ΠΏΠΎΡΡΠΈΠ³Π°Π½Π΅ Π½Π° ΠΏΠΎ-Π²ΠΈΡΠΎΠΊΠ° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡ ΠΏΡΠΈ ΡΡΠ°Π½ΡΠ»Π°ΡΠΈΡ Π½Π° HTTP/2 Π² HTTP/1.1 ΠΈ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ;
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΎΡΠΈΡΠΈΠ°Π»Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΡΠ΅ΠΆΠΈΠΌΠ° End-to-End HTTP/2 (ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° Π²ΡΠΈΡΠΊΠΈ Π΅ΡΠ°ΠΏΠΈ Π² HTTP/2, Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ Π·Π°ΠΏΠΈΡΠ²Π°Π½ΠΈΡ ΠΊΡΠΌ Π±Π΅ΠΊΠ΅Π½Π΄, Π° Π½Π΅ ΡΠ°ΠΌΠΎ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Π½Π° ΠΏΡΠΎΠΊΡΠΈ Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°);
- Π Π΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π° Π΅ ΠΏΡΠ»Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° Π΄Π²ΡΠΏΠΎΡΠΎΡΠ½ΠΎ ΠΏΡΠΎΠΊΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π° gRPC Ρ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΠΎΡΠΎΡΠΈΡΠ΅ gRPC, ΠΎΡΠ΄Π΅Π»ΡΠΉΠΊΠΈ ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡΠ°Π»Π½ΠΈ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ, ΠΎΡΡΠ°Π·ΡΠ²Π°ΠΉΠΊΠΈ ΡΡΠ°ΡΠΈΠΊΠ° Π½Π° gRPC Π² Π»ΠΎΠ³ΠΎΠ²Π΅ΡΠ΅ ΠΈ ΡΠΈΠ»ΡΡΠΈΡΠ°ΠΉΠΊΠΈ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ACL. gRPC ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ°Π±ΠΎΡΠ° Π½Π° ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΠ·ΠΈ Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π΅Π·ΠΈΡΠΈ Π·Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅, ΠΊΠΎΠΈΡΠΎ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²Π°Ρ ΠΏΠΎΠΌΠ΅ΠΆΠ΄Ρ ΡΠΈ ΡΡΠ΅Π· ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»Π΅Π½ API. ΠΡΠ΅ΠΆΠΎΠ²ΠΎΡΠΎ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Π² gRPC Π΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΎ Π½Π°Π΄ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π° HTTP/2 ΠΈ ΡΠ΅ ΠΎΡΠ½ΠΎΠ²Π°Π²Π° Π½Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° Protocol Buffers Π·Π° ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° Π΄Π°Π½Π½ΠΈΡΠ΅.
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΡΠ΅ΠΆΠΈΠΌΠ° "Layer 7 Retries", ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°ΡΠ° ΠΈΠ·ΠΏΡΠ°ΡΠ°Π½Π΅ Π½Π° ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΈ HTTP-Π·Π°ΠΏΠΈΡΠ²Π°Π½ΠΈΡ Π² ΡΠ»ΡΡΠ°ΠΉ Π½Π° ΡΠΎΡΡΡΠ΅ΡΠ½ΠΈ ΡΡΠΈΠ²ΠΎΠ²Π΅, Π½Π΅ΡΠ²ΡΡΠ·Π°Π½ΠΈ Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ ΠΏΡΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΠΌΡΠ΅ΠΆΠΎΠ²Π° Π²ΡΡΠ·ΠΊΠ° (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΈ Π»ΠΈΠΏΡΠ° Π½Π° ΠΎΡΠ³ΠΎΠ²ΠΎΡ ΠΈΠ»ΠΈ ΠΏΡΠ°Π·Π΅Π½ ΠΎΡΠ³ΠΎΠ²ΠΎΡ Π½Π° POST-Π·Π°ΠΏΠΈΡΠ²Π°Π½Π΅). ΠΠ° Π΄Π΅Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ΅ΠΆΠΈΠΌΠ° Π² ΠΎΠΏΡΠΈΡΡΠ° "http-request" Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½ ΡΠ»Π°Π³ "disable-l7-retry", Π° Π·Π° ΡΠΈΠ½Π° Π½Π°ΡΡΡΠΎΠΉΠΊΠ° Π² ΡΠ΅ΠΊΡΠΈΠΈ defaults, listen ΠΈ backend Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° ΠΎΠΏΡΠΈΡ "retry-on". ΠΠ° ΡΠ°Π·ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ° ΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ ΠΏΡΠΈΠ·Π½Π°ΡΠΈ Π·Π° ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ ΠΈΠ·ΠΏΡΠ°ΡΠ°Π½Π΅: all-retryable-errors, none, conn-failure, empty-response, junk-response, response-timeout, 0rtt-rejected, ΠΊΠ°ΠΊΡΠΎ ΠΈ ΠΏΡΠΈΠ²ΡΡΠ·Π²Π°Π½Π΅ ΠΊΡΠΌ Π²ΡΡΡΠ°Π½ΠΈΡΠ΅ ΠΊΠΎΠ΄ΠΎΠ²Π΅ Π½Π° ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ (404 ΠΈ Π΄Ρ.);
- Π Π΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½ Π΅ Π½ΠΎΠ² ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡΡ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠΈ (Process Manager), ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠ° Π½Π° ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° Π²ΡΠ½ΡΠ½ΠΈ ΠΈΠ·ΠΏΡΠ»Π½ΠΈΠΌΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΡΠΈ Π·Π° HAProxy.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΡΠΎΠ»ΡΡΠ° Π½Π° ΡΠ°ΠΊΡΠ² Π²ΡΠ½ΡΠ΅Π½ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ Π΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½ API Data Plan ( /usr/sbin/dataplaneapi), ΠΊΠ°ΠΊΡΠΎ ΠΈ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠΈ Π·Π° Offload-ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΠΏΠΎΡΠΎΡΠΈΡΠ΅; - ΠΠΎΠ±Π°Π²Π΅Π½ΠΈ ΡΠ° Π±ΠΈΠ½Π΄ΠΈΠ½Π³ΠΈ Π·Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈΡ Π·Π° SPOE (Stream Processing Offload Engine) ΠΈ SPOP (Stream Processing Offload Protocol) Π·Π° .NET Core, Go, Lua ΠΈ Python. ΠΠΎ-ΡΠ°Π½ΠΎ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°ΡΠ° Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈΡ Π±Π΅ΡΠ΅ ΡΠ°ΠΌΠΎ Π½Π° C;
- ΠΠΎΠ±Π°Π²Π΅Π½ Π΅ Π²ΡΠ½ΡΠ΅Π½ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ spoa-mirror (\/usr\/sbin\/spoa-mirror) Π·Π° Π·Π΅ΡΠΊΠ°Π»Π΅Π½Π΅ Π½Π° Π·Π°ΡΠ²ΠΊΠΈ ΠΊΡΠΌ ΠΎΡΠ΄Π΅Π»Π΅Π½ ΡΡΡΠ²ΡΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π·Π° ΠΊΠΎΠΏΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ°ΡΡ ΠΎΡ ΡΠ°Π±ΠΎΡΠ½ΠΈΡ ΡΡΠ°ΡΠΈΠΊ Π·Π° ΡΠ΅ΡΡΠ²Π°Π½Π΅ Π½Π° Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»Π½Π° ΡΡΠ΅Π΄Π° Ρ ΡΠ΅Π°Π»Π½ΠΎ Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅);
- ΠΡΠ΅Π΄ΡΡΠ°Π²Π΅Π½ Π·Π° ΠΎΡΠΈΠ³ΡΡΡΠ²Π°Π½Π΅ Π½Π° ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° Kubernetes;
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ Π²Π³ΡΠ°Π΄Π΅Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° Π΅ΠΊΡΠΏΠΎΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ° Π² ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ΠΎΠ²Π° ΡΠΈΡΡΠ΅ΠΌΠ° ;
- Π Π°Π·ΡΠΈΡΠ΅Π½ Π΅ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΡΡ Peers Protocol, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ Π·Π° ΠΎΠ±ΠΌΠ΅Π½ Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Ρ Π΄ΡΡΠ³ΠΈ Π²ΡΠ·Π»ΠΈ Ρ HAProxy. ΠΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° Heartbeat ΠΈ ΠΊΡΠΈΠΏΡΠΈΡΠ°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ;
- Π Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π°ΡΠ° βlogβ Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡΡΡ βsampleβ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°Ρ Π·Π°ΠΏΠΈΡΠ²Π°Π½Π΅ Π² Π»ΠΎΠ³ ΡΠ°ΠΌΠΎ Π½Π° ΡΠ°ΡΡ ΠΎΡ Π·Π°ΡΠ²ΠΊΠΈΡΠ΅, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ 1 ΠΎΡ 10, Π·Π° ΡΠΎΡΠΌΠΈΡΠ°Π½Π΅ Π½Π° Π°Π½Π°Π»ΠΈΡΠΈΡΠ½Π° ΠΈΠ·Π²Π°Π΄ΠΊΠ°;
- ΠΠΎΠ±Π°Π²Π΅Π½ Π΅ ΡΠ΅ΠΆΠΈΠΌ Π½Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠ°Π½Π΅ (Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π° profiling.tasks, ΠΊΠΎΡΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΡΠΈΠ΅ΠΌΠ° ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ auto, on ΠΈ off). ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎΡΠΎ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠ°Π½Π΅ ΡΠ΅ Π°ΠΊΡΠΈΠ²ΠΈΡΠ°, Π°ΠΊΠΎ ΡΡΠ΅Π΄Π½Π°ΡΠ° ΡΡΠΎΠΉΠ½ΠΎΡΡ Π½Π° Π·Π°Π±Π°Π²ΡΠ½Π΅ΡΠΎ Π½Π°Π΄Π²ΠΈΡΠΈ 1000 ΠΌΡ. ΠΠ° ΠΏΡΠ΅Π³Π»Π΅Π΄ Π½Π° Π΄Π°Π½Π½ΠΈΡΠ΅ Π·Π° ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠ°Π½Π΅ Π² Runtime API Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° βshow profilingβ ΠΈΠ»ΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° Π½ΡΠ»ΠΈΡΠ°Π½Π΅ Π½Π° ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ°ΡΠ° Π² Π»ΠΎΠ³;
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ Π±Π΅ΠΊΠ΅Π½Π΄ ΡΡΡΠ²ΡΡΠΈ Ρ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΠΏΡΠΎΡΠΎΠΊΠΎΠ» SOCKS4;
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΊΡΠ°ΠΉΠ½Π° (end-to-end, ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° Π·Π°ΡΠ²ΠΊΠ°ΡΠ°, ΠΎΠ±Ρ Π²Π°ΡΠ°ΡΠ° Π±Π΅ΠΊΠ΅Π½Π΄Π°) ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ° Π·Π° Π±ΡΡΠ·ΠΎ ΠΎΡΠ²Π°ΡΡΠ½Π΅ Π½Π° 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 Π·Π° ΠΈΠ·Π²Π»ΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΠΎΠ»Π΅ΡΠ° ΠΎΡ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ Protocol Buffers;
- ungrpc Π·Π° ΠΈΠ·Π²Π»ΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΠΎΠ»Π΅ΡΠ° ΠΎΡ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ gRPC.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
