ΠΠΎΠ²ΡΠΎΡΠ½ΠΎ Π³ΠΎ ΠΎΠ±ΡΠ°Π²ΡΠ²Π°ΠΌΠ΅ ΡΡΠ°Π½ΡΠΊΡΠΈΠΏΡΠΎΡ ΠΎΠ΄ ΠΈΠ·Π²Π΅ΡΡΠ°ΡΠΎΡ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΡΠ΅Π½ΡΠΈΡΠ°ΡΠ° 2016 Π³ΠΎΠ΄ΠΈΠ½Π°, ΡΡΠΎ ΡΠ΅ ΠΎΠ΄ΡΠΆΠ° Π²ΠΎ Π‘ΠΊΠΎΠ»ΠΊΠΎΠ²ΠΎ ΠΊΡΠ°Ρ ΠΠΎΡΠΊΠ²Π° Π½Π° 7-8 Π½ΠΎΠ΅ΠΌΠ²ΡΠΈ ΠΌΠΈΠ½Π°ΡΠ°ΡΠ° Π³ΠΎΠ΄ΠΈΠ½Π°. ΠΎΠ±ΡΠ°ΡΠ½ΡΠ²Π° ΠΊΠ°ΠΊΠΎ Π΄Π° ΡΠ΅ ΠΏΡΠΎΡΠΈΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡΠ° Π½Π° NGINX ΡΠΎ OpenResty ΠΈ Lua.
ΠΠ΄ΡΠ°Π²ΠΎ Π½Π° ΡΠΈΡΠ΅, ΡΠ°Ρ ΡΠ΅ Π²ΠΈΠΊΠ°ΠΌ ΠΠ»Π°Π΄ΠΈΠΌΠΈΡ ΠΡΠΎΡΠ°ΡΠΎΠ², ΡΠ°Π±ΠΎΡΠ°ΠΌ Π²ΠΎ ΠΠ°ΡΠ°Π»Π΅Π»ΠΈ. ΠΠ΅ Π²ΠΈ ΠΊΠ°ΠΆΠ°ΠΌ ΠΌΠ°Π»ΠΊΡ Π·Π° ΡΠ΅Π±Π΅. ΠΠΎΠΌΠΈΠ½ΡΠ²Π°ΠΌ ΡΡΠΈ ΡΠ΅ΡΠ²ΡΡΠΈΠ½ΠΈ ΠΎΠ΄ ΠΌΠΎΡΠΎΡ ΠΆΠΈΠ²ΠΎΡ ΠΏΠΈΡΡΠ²Π°ΡΡΠΈ ΠΊΠΎΠ΄. Π‘ΡΠ°Π½Π°Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ΅Ρ Π΄ΠΎ ΡΡΠΆ Π²ΠΎ Π±ΡΠΊΠ²Π°Π»Π½Π° ΡΠΌΠΈΡΠ»Π°: ΠΏΠΎΠ½Π΅ΠΊΠΎΠ³Π°Ρ Π³Π»Π΅Π΄Π°ΠΌ ΠΊΠΎΠ΄ Π²ΠΎ ΠΌΠΎΠΈΡΠ΅ ΡΠΎΠ½ΠΈΡΡΠ°. ΠΠ΄Π½Π° ΡΠ΅ΡΠ²ΡΡΠΈΠ½Π° ΠΎΠ΄ ΠΆΠΈΠ²ΠΎΡΠΎΡ Π΅ ΠΈΠ½Π΄ΡΡΡΡΠΈΡΠΊΠΈ ΡΠ°Π·Π²ΠΎΡ, ΠΏΠΈΡΡΠ²Π°ΡΠ΅ ΠΊΠΎΠ΄ ΠΊΠΎΡ ΠΎΠ΄ΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ Π²ΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²ΠΎ. ΠΠΎΠ΄ ΡΡΠΎ Π½Π΅ΠΊΠΎΠΈ ΠΎΠ΄ Π²Π°Ρ Π³ΠΎ ΠΊΠΎΡΠΈΡΡΠ°Ρ, Π½ΠΎ Π½Π΅ Π³ΠΎ ΡΡΠ°ΡΠ°Π°Ρ.
ΠΠ½Π°ΡΠΈ ΡΠ°Π·Π±ΠΈΡΠ°Ρ ΠΊΠΎΠ»ΠΊΡ Π±Π΅ΡΠ΅ Π»ΠΎΡΠΎ. ΠΠΎΠ³Π° Π±Π΅Π² ΠΌΠ°Π»ΠΊΡ ΠΏΠΎΠΌΠ»Π°Π΄, Π΄ΠΎΡΠ΄ΠΎΠ² ΠΈ ΠΌΠΈ Π³ΠΈ Π΄Π°Π΄ΠΎΠ° ΠΎΠ²ΠΈΠ΅ Π±Π°Π·ΠΈ Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ ΠΎΠ΄ Π΄Π²Π° ΡΠ΅ΡΠ°Π±Π°ΡΡΠΈ. Π‘Π΅Π³Π° Π΅ Π³ΠΎΠ»Π΅ΠΌ ΡΠΎΠ²Π°Ρ Π·Π° ΡΠΈΡΠ΅ ΠΎΠ²Π΄Π΅. ΠΡΠΈΠ΄ΠΎΠ² Π½Π° ΠΊΠΎΠ½ΡΠ΅ΡΠ΅Π½ΡΠΈΠΈ ΠΈ ΠΏΡΠ°ΡΠ°Π²: βΠΠΎΠΌΡΠΈ, ΠΊΠ°ΠΆΠ΅ΡΠ΅ ΠΌΠΈ, ΠΈΠΌΠ°ΡΠ΅ Π³ΠΎΠ»Π΅ΠΌΠΈ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ, Π΄Π°Π»ΠΈ Π΅ ΡΓ¨ ΠΊΡΠ»? ΠΠΎΠ»ΠΊΡ Π±Π°Π·ΠΈ ΠΈΠΌΠ°Ρ ΡΠ°ΠΌΡ? Π’ΠΈΠ΅ ΠΌΠΈ ΠΎΠ΄Π³ΠΎΠ²ΠΎΡΠΈΡΠ°: βΠΠΌΠ°ΠΌΠ΅ 100 Π³ΠΈΠ³Π°Π±Π°ΡΡΠΈ! Π Π΅ΠΊΠΎΠ²: βΠΠ»Π°Π΄ΠΎ, 100 Π³ΠΈΠ³Π°Π±Π°ΡΡΠΈ!β Π ΡΠΈ ΡΠ°Π·ΠΌΠΈΡΠ»ΡΠ²Π°Π² ΠΊΠ°ΠΊΠΎ Π²Π½ΠΈΠΌΠ°ΡΠ΅Π»Π½ΠΎ Π΄Π° Π³ΠΎ ΠΎΠ΄ΡΠΆΠ°ΠΌ ΠΌΠΎΠ΅ΡΠΎ ΠΏΠΎΠΊΠ΅ΡΡΠΊΠΎ Π»ΠΈΡΠ΅. ΠΠΈΡΠ»ΠΈΡ, Π΄Π°, ΠΌΠΎΠΌΡΠΈΡΠ΅ ΡΠ΅ ΠΊΡΠ», Π° ΠΏΠΎΡΠΎΠ° ΡΠ΅ Π²ΡΠ°ΡΠ°Ρ ΠΈ Π³ΠΈ ΡΠ΅ΠΏΠΊΠ°Ρ ΠΎΠ²ΠΈΠ΅ Π±Π°Π·ΠΈ Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ ΠΎΠ΄ ΠΏΠΎΠ²Π΅ΡΠ΅ ΡΠ΅ΡΠ°Π±Π°ΡΡΠΈ. Π ΠΎΠ²Π° Π΅ Π΄Π° ΡΠ΅ Π±ΠΈΠ΄Π΅ ΠΏΠΎΠΌΠ»Π°Π΄. ΠΠΎΠΆΠ΅ΡΠ΅ Π»ΠΈ Π΄Π° Π·Π°ΠΌΠΈΡΠ»ΠΈΡΠ΅ ΠΊΠ°ΠΊΠΎΠ² ΡΠ΄Π°Ρ Π΅ ΠΎΠ²Π°?
ΠΠ½Π°ΠΌ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΎΠ΄ 20 ΠΏΡΠΎΠ³ΡΠ°ΠΌΡΠΊΠΈ ΡΠ°Π·ΠΈΡΠΈ. ΠΠ²Π° Π΅ Π½Π΅ΡΡΠΎ ΡΡΠΎ ΠΌΠΎΡΠ°Π² Π΄Π° Π³ΠΎ ΡΡΠ°ΡΠ°ΠΌ Π΄ΠΎΠ΄Π΅ΠΊΠ° ΡΠ°Π±ΠΎΡΠ΅Π². Π’ΠΈ Π΄Π°Π²Π°Π°Ρ ΠΊΠΎΠ΄ Π²ΠΎ Erlang, C, C++, Lua, Python, Ruby, Π½Π΅ΡΡΠΎ Π΄ΡΡΠ³ΠΎ, Π° ΡΠΈ ΡΡΠ΅Π±Π° ΡΠ΅ΡΠΎ ΡΠΎΠ° Π΄Π° Π³ΠΎ ΠΏΡΠ΅ΡΠ΅ΡΠ΅Ρ. ΠΠΎ ΠΏΡΠΈΠ½ΡΠΈΠΏ, ΠΌΠΎΡΠ°Π². ΠΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΠ΅ ΠΏΡΠ΅ΡΠΌΠ΅ΡΠ° ΡΠΎΡΠ½ΠΈΠΎΡ Π±ΡΠΎΡ, Π½ΠΎ Π½Π΅ΠΊΠ°Π΄Π΅ ΠΎΠΊΠΎΠ»Ρ 20-ΡΠΈ Π±ΡΠΎΡΠΎΡ ΡΠ΅ ΠΈΠ·Π³ΡΠ±ΠΈ.
ΠΠΈΠ΄Π΅ΡΡΠΈ ΡΠΈΡΠ΅ ΠΏΡΠΈΡΡΡΠ½ΠΈ Π·Π½Π°Π°Ρ ΡΡΠΎ Π΅ ΠΠ°ΡΠ°Π»Π΅Π»ΠΈ ΠΈ ΡΡΠΎ ΠΏΡΠ°Π²ΠΈΠΌΠ΅, Π½Π΅ΠΌΠ° Π΄Π° Π·Π±ΠΎΡΡΠ²Π°ΠΌ Π·Π° ΡΠΎΠ° ΠΊΠΎΠ»ΠΊΡ ΡΠΌΠ΅ ΠΊΡΠ» ΠΈ ΡΡΠΎ ΠΏΡΠ°Π²ΠΈΠΌΠ΅. Π‘Π°ΠΌΠΎ ΡΠ΅ Π²ΠΈ ΠΊΠ°ΠΆΠ°ΠΌ Π΄Π΅ΠΊΠ° ΠΈΠΌΠ°ΠΌΠ΅ 13 ΠΊΠ°Π½ΡΠ΅Π»Π°ΡΠΈΠΈ ΡΠΈΡΡΠΌ ΡΠ²Π΅ΡΠΎΡ, ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΎΠ΄ 300 Π²ΡΠ°Π±ΠΎΡΠ΅Π½ΠΈ, ΡΠ°Π·Π²ΠΎΡ Π²ΠΎ ΠΠΎΡΠΊΠ²Π°, Π’Π°Π»ΠΈΠ½ ΠΈ ΠΠ°Π»ΡΠ°. ΠΠΊΠΎ ΡΠ°ΠΊΠ°ΡΠ΅, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π³ΠΎ Π·Π΅ΠΌΠ΅ΡΠ΅ ΠΈ Π΄Π° ΡΠ΅ ΠΏΡΠ΅ΡΠ΅Π»ΠΈΡΠ΅ Π²ΠΎ ΠΠ°Π»ΡΠ° Π°ΠΊΠΎ Π΅ ΡΡΡΠ΄Π΅Π½ΠΎ Π²ΠΎ Π·ΠΈΠΌΠ° ΠΈ ΡΡΠ΅Π±Π° Π΄Π° Π³ΠΎ Π·Π°Π³ΡΠ΅Π΅ΡΠ΅ Π³ΡΠ±ΠΎΡ.
ΠΠΎΡΠΎΡΠ½ΠΎ, Π½Π°ΡΠΈΠΎΡ ΠΎΠ΄Π΄Π΅Π» ΠΏΠΈΡΡΠ²Π° Π²ΠΎ Python 2. ΠΠΈΠ΅ ΡΠΌΠ΅ Π²ΠΎ Π±ΠΈΠ·Π½ΠΈΡ ΠΈ Π½Π΅ΠΌΠ°ΠΌΠ΅ Π²ΡΠ΅ΠΌΠ΅ Π΄Π° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ°ΠΌΠ΅ ΠΌΠΎΠ΄Π΅ΡΠ½ΠΈ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ, ΠΏΠ° Π·Π°ΡΠΎΠ° ΡΡΡΠ°Π΄Π°ΠΌΠ΅. ΠΠΎ ΠΊΠΎΡΠΈΡΡΠΈΠΌΠ΅ ΠΠ°Π½Π³ΠΎ Π·Π°ΡΠΎΠ° ΡΡΠΎ ΠΈΠΌΠ° ΡΠ΅, Π° ΠΎΠ½Π° ΡΡΠΎ Π±Π΅ΡΠ΅ Π½Π΅ΠΏΠΎΡΡΠ΅Π±Π½ΠΎ Π³ΠΎ Π·Π΅Π΄ΠΎΠ²ΠΌΠ΅ ΠΈ Π³ΠΎ ΡΡΠ»ΠΈΠ²ΠΌΠ΅. ΠΡΡΠΎ ΡΠ°ΠΊΠ°, MySQL, Redis ΠΈ NGINX. ΠΠΌΠ°ΠΌΠ΅ ΠΈ ΠΌΠ½ΠΎΠ³Ρ Π΄ΡΡΠ³ΠΈ ΠΊΡΠ» ΡΠ°Π±ΠΎΡΠΈ. ΠΠΌΠ°ΠΌΠ΅ MongoDB, ΠΈΠΌΠ°ΠΌΠ΅ Π·Π°ΡΠ°ΡΠΈ ΠΊΠΎΠΈ ΡΡΡΠ°Π°Ρ Π½Π°ΠΎΠΊΠΎΠ»Ρ, ΠΈΠΌΠ°ΠΌΠ΅ ΡΓ¨ - Π½ΠΎ ΡΠΎΠ° Π½Π΅ Π΅ ΠΌΠΎΠ΅, ΠΈ ΡΠ°Ρ Π½Π΅ Π³ΠΎ ΠΏΡΠ°Π²Π°ΠΌ ΡΠΎΠ°.
OpenResty
Π Π΅ΠΊΠΎΠ² Π·Π° ΡΠ΅Π±Π΅. ΠΡΠ΄Π΅ Π΄Π° ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌΠ΅ Π·Π° ΡΡΠΎ ΡΠ΅ Π·Π±ΠΎΡΡΠ²Π°ΠΌ Π΄Π΅Π½Π΅Ρ:
- Π¨ΡΠΎ Π΅ OpenResty ΠΈ ΡΠΎ ΡΡΠΎ ΡΠ΅ ΡΠ°Π΄Π΅?
- ΠΠΎΡΡΠΎ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ Π΄Π° ΠΈΠ·ΠΌΠΈΡΠ»ΠΈΠΌΠ΅ Π΄ΡΡΠ³ΠΎ ΡΡΠΊΠ°Π»ΠΎ ΠΊΠΎΠ³Π° ΠΈΠΌΠ°ΠΌΠ΅ Python, NodeJS, PHP, Go ΠΈ Π΄ΡΡΠ³ΠΈ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΈ ΡΠ°Π±ΠΎΡΠΈ ΡΠΎ ΠΊΠΎΠΈ ΡΠΈΡΠ΅ ΡΠ΅ Π·Π°Π΄ΠΎΠ²ΠΎΠ»Π½ΠΈ?
- Π Π½Π΅ΠΊΠΎΠ»ΠΊΡ ΠΏΡΠΈΠΌΠ΅ΡΠΈ ΠΎΠ΄ ΠΆΠΈΠ²ΠΎΡΠΎΡ. ΠΠΎΡΠ°Π² ΠΌΠ½ΠΎΠ³Ρ Π΄Π° Π³ΠΎ ΡΠΊΡΠ°ΡΠ°ΠΌ ΠΈΠ·Π²Π΅ΡΡΠ°ΡΠΎΡ Π±ΠΈΠ΄Π΅ΡΡΠΈ ΠΌΠΈ ΡΡΠ΅Π±Π°Π° 3,5 ΡΠ°ΡΠ°, ΠΏΠ° ΡΠ΅ ΠΈΠΌΠ° ΠΌΠ°Π»ΠΊΡ ΠΏΡΠΈΠΌΠ΅ΡΠΈ.
OpenResty Π΅ NGINX. ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π° Π½Π΅Π³ΠΎ, ΠΈΠΌΠ°ΠΌΠ΅ ΠΏΠΎΠ»Π½ΠΎΠΏΡΠ°Π²Π½ΠΎ Π²Π΅Π±-ΡΠ΅ΡΠ²Π΅Ρ ΠΊΠΎΡ Π΅ Π΄ΠΎΠ±ΡΠΎ Π½Π°ΠΏΠΈΡΠ°Π½ ΠΈ ΡΠ°Π±ΠΎΡΠΈ Π±ΡΠ·ΠΎ. ΠΠΈΡΠ»Π°ΠΌ Π΄Π΅ΠΊΠ° ΠΏΠΎΠ²Π΅ΡΠ΅ΡΠΎ ΠΎΠ΄ Π½Π°Ρ ΠΊΠΎΡΠΈΡΡΠ°Ρ NGINX Π²ΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²ΠΎΡΠΎ. Π‘ΠΈΡΠ΅ Π·Π½Π°Π΅ΡΠ΅ Π΄Π΅ΠΊΠ° Π΅ Π±ΡΠ· ΠΈ ΠΊΡΠ». Π’ΠΈΠ΅ Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ° ΠΊΡΠ» ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈ I/O Π²ΠΎ Π½Π΅Π³ΠΎ, ΡΠ°ΠΊΠ° ΡΡΠΎ Π½Π΅ Π½ΠΈ ΡΡΠ΅Π±Π° Π½ΠΈΡΡΠΎ Π΄Π° ΡΠΈΠΊΠ»ΠΈΡΠ°ΠΌΠ΅, ΠΈΡΡΠΎ ΠΊΠ°ΠΊΠΎ ΡΡΠΎ Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ° gevent Π²ΠΎ Python. Gevent Π΅ ΠΊΡΠ», ΠΎΠ΄Π»ΠΈΡΠ΅Π½, Π½ΠΎ Π°ΠΊΠΎ Π½Π°ΠΏΠΈΡΠ΅ΡΠ΅ C ΠΊΠΎΠ΄ ΠΈ Π½Π΅ΡΡΠΎ ΡΡΠ³Π½Π΅ Π½Π°ΠΎΠΏΠ°ΠΊΡ, ΡΠΎΠ³Π°Ρ ΡΠΎ Gevent ΡΠ΅ ΠΏΠΎΠ»ΡΠ΄ΠΈΡΠ΅ Π΄Π° Π³ΠΎ Π΄Π΅Π±Π°Π³ΠΈΡΠ°ΡΠ΅. ΠΠΌΠ°Π² ΠΈΡΠΊΡΡΡΠ²ΠΎ: ΠΌΠΈ ΡΡΠ΅Π±Π°Π° ΡΠ΅Π»ΠΈ Π΄Π²Π° Π΄Π΅Π½Π° Π΄Π° ΡΡΠ°ΡΠ°ΠΌ ΡΡΠΎ Π½Π΅ Π±Π΅ΡΠ΅ Π²ΠΎ ΡΠ΅Π΄ ΡΠ°ΠΌΡ. ΠΠΊΠΎ Π½Π΅ΠΊΠΎΡ Π½Π΅ ΠΊΠΎΠΏΠ°ΡΠ΅ Π½Π΅ΠΊΠΎΠ»ΠΊΡ Π½Π΅Π΄Π΅Π»ΠΈ, Π½Π΅ Π³ΠΎ Π½Π°ΡΠ΄Π΅ΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΡ, ΠΏΠΈΡΡΠ²Π°ΡΠ΅ Π½Π° ΠΠ½ΡΠ΅ΡΠ½Π΅Ρ, Π° Google Π½Π΅ Π³ΠΎ Π½Π°ΡΠ΄Π΅ΡΠ΅, ΡΠΎΠ³Π°Ρ ΡΠ΅ ΠΏΠΎΠ»ΡΠ΄Π΅Π²ΠΌΠ΅ ΡΠ΅Π»ΠΎΡΠ½ΠΎ.
NGINX Π²Π΅ΡΠ΅ ΠΈΠΌΠ° Π·Π°Π²ΡΡΠ΅Π½ΠΎ ΠΊΠ΅ΡΠΈΡΠ°ΡΠ΅ ΠΈ ΡΡΠ°ΡΠΈΡΠΊΠ° ΡΠΎΠ΄ΡΠΆΠΈΠ½Π°. ΠΠ΅ ΡΡΠ΅Π±Π° Π΄Π° ΡΠ΅ Π³ΡΠΈΠΆΠΈΡΠ΅ ΠΊΠ°ΠΊΠΎ Π΄Π° Π³ΠΎ Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ ΠΎΠ²Π° ΡΠΎΠ²Π΅ΡΠΊΠΈ, Π·Π° Π΄Π° Π½Π΅ Π·Π°Π±Π°Π²ΠΈΡΠ΅ Π½Π΅ΠΊΠ°Π΄Π΅, Π·Π° Π΄Π° Π½Π΅ ΠΈΠ·Π³ΡΠ±ΠΈΡΠ΅ Π½Π΅ΠΊΠ°Π΄Π΅ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠΈ. Nginx Π΅ ΠΌΠ½ΠΎΠ³Ρ ΡΠ΄ΠΎΠ±Π΅Π½ Π·Π° ΡΠ°ΡΠΏΠΎΡΠ΅Π΄ΡΠ²Π°ΡΠ΅, Π½Π΅ ΡΡΠ΅Π±Π° Π΄Π° ΡΠ°Π·ΠΌΠΈΡΠ»ΡΠ²Π°ΡΠ΅ ΡΡΠΎ Π΄Π° ΠΏΡΠ΅Π·Π΅ΠΌΠ΅ΡΠ΅ - WSGI, PHP-FPM, Gunicorn, Unicorn. Nginx Π΅ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½, Π΄Π°Π΄Π΅Π½ Π½Π° Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠΈΡΠ΅, Π·Π½Π°Π°Ρ Π΄Π° ΡΠ°Π±ΠΎΡΠ°Ρ ΡΠΎ Π½Π΅Π³ΠΎ. Nginx Π³ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠ²Π° Π±Π°ΡΠ°ΡΠ°ΡΠ° Π½Π° ΡΡΡΡΠΊΡΡΡΠΈΡΠ°Π½ Π½Π°ΡΠΈΠ½. ΠΠ΅ Π·Π±ΠΎΡΡΠ²Π°ΠΌ Π·Π° ΠΎΠ²Π° ΠΌΠ°Π»ΠΊΡ ΠΏΠΎΠ΄ΠΎΡΠ½Π°. ΠΠ°ΠΊΡΠ°ΡΠΊΠΎ, ΠΈΠΌΠ° ΡΠ°Π·Π° ΠΊΠΎΠ³Π° ΡΠ°ΠΌΠΎ Π³ΠΎ ΠΏΡΠΈΡΠ°ΡΠΈ Π±Π°ΡΠ°ΡΠ΅ΡΠΎ, ΠΊΠΎΠ³Π° Π³ΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΈ ΠΈ ΠΊΠΎΠ³Π° ΡΠ° ΡΠ΅ΡΠ²ΠΈΡΠ° ΡΠΎΠ΄ΡΠΆΠΈΠ½Π°ΡΠ° Π½Π° ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊΠΎΡ.
Nginx Π΅ ΠΊΡΠ», Π½ΠΎ ΠΈΠΌΠ° Π΅Π΄Π΅Π½ ΠΏΡΠΎΠ±Π»Π΅ΠΌ: Π½Π΅ Π΅ Π΄ΠΎΠ²ΠΎΠ»Π½ΠΎ ΡΠ»Π΅ΠΊΡΠΈΠ±ΠΈΠ»Π΅Π½, Π΄ΡΡΠΈ ΠΈ ΡΠΎ ΡΠΈΡΠ΅ ΠΊΡΠ» ΠΊΠ°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ ΡΡΠΎ ΠΌΠΎΠΌΡΠΈΡΠ΅ Π³ΠΈ Π½Π°ΠΏΠΎΠ»Π½ΠΈΡΠ° Π²ΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ°ΡΠ°, ΠΈ ΠΏΠΎΠΊΡΠ°Ρ ΡΠΎΠ° ΡΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°. ΠΠ²Π°Π° ΠΌΠΎΡ Π½Π΅ Π΅ Π΄ΠΎΠ²ΠΎΠ»Π½Π°. ΠΠ°ΡΠΎΠ° ΠΌΠΎΠΌΡΠΈΡΠ΅ ΠΎΠ΄ Π’Π°ΠΎΠ±Π°ΠΎ, ΠΎΠ΄Π°ΠΌΠ½Π°, ΠΈΠ·Π³Π»Π΅Π΄Π° ΠΊΠ°ΠΊΠΎ ΠΏΡΠ΅Π΄ ΠΎΡΡΠΌ Π³ΠΎΠ΄ΠΈΠ½ΠΈ, Π³ΠΎ Π²Π³ΡΠ°Π΄ΠΈΡΠ° ΠΡΠ° Π²ΠΎ Π½Π΅Π³ΠΎ. Π¨ΡΠΎ Π΄Π°Π²Π° ΡΠΎΠ°?
- ΠΠΎΠ»Π΅ΠΌΠΈΠ½Π°. ΠΠ°Π» Π΅. LuaJIT Π΄Π°Π²Π° ΠΎΠΊΠΎΠ»Ρ 100-200 ΠΊΠΈΠ»ΠΎΠ±Π°ΡΡΠΈ Π½Π°Π΄Π·Π΅ΠΌΠ½Π° ΠΌΠ΅ΠΌΠΎΡΠΈΡΠ° ΠΈ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½ΠΈ ΡΡΠΎΡΠΎΡΠΈ Π·Π° ΠΏΠ΅ΡΡΠΎΡΠΌΠ°Π½ΡΠΈ.
- ΠΡΠ·ΠΈΠ½Π°. ΠΡΠ΅Π²Π΅Π΄ΡΠ²Π°ΡΠΎΡ LuaJIT Π΅ Π±Π»ΠΈΡΠΊΡ Π΄ΠΎ C Π²ΠΎ ΠΌΠ½ΠΎΠ³Ρ ΡΠΈΡΡΠ°ΡΠΈΠΈ, Π²ΠΎ Π½Π΅ΠΊΠΎΠΈ ΡΠΈΡΡΠ°ΡΠΈΠΈ Π³ΡΠ±ΠΈ ΠΎΠ΄ Java, Π²ΠΎ Π΄ΡΡΠ³ΠΈ Π³ΠΎ Π½Π°Π΄ΠΌΠΈΠ½ΡΠ²Π°. ΠΠ΅ΠΊΠΎΠ΅ Π²ΡΠ΅ΠΌΠ΅ ΡΠ΅ ΡΠΌΠ΅ΡΠ°ΡΠ΅ Π·Π° ΡΠΎΡΡΠΎΡΠ±Π° Π½Π° ΡΠΌΠ΅ΡΠ½ΠΎΡΡ, Π½Π°ΡΠΊΡΠ» ΠΊΠΎΠΌΠΏΠ°ΡΠ»Π΅Ρ JIT. Π‘Π΅Π³Π° ΠΈΠΌΠ° ΠΈ ΠΏΠΎΠ»Π°Π΄Π½ΠΈ, Π½ΠΎ ΡΠΈΠ΅ ΡΠ΅ ΠΌΠ½ΠΎΠ³Ρ ΡΠ΅ΡΠΊΠΈ, Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈΡΡΠΈΠΎΡ V8. ΠΠ΅ΠΊΠΎΠΈ JS ΡΠΎΠ»ΠΊΡΠ²Π°ΡΠΈ ΠΈ Java HotSpot ΡΠ΅ ΠΏΠΎΠ±ΡΠ·ΠΈ Π²ΠΎ Π½Π΅ΠΊΠΎΠΈ ΡΠΎΡΠΊΠΈ, Π½ΠΎ Π½Π° Π½Π΅ΠΊΠΎΠΈ ΠΌΠ΅ΡΡΠ° ΡΠΈΠ΅ ΡΓ¨ ΡΡΡΠ΅ Π³ΡΠ±Π°Ρ.
- ΠΠ΅ΡΠ½ΠΎ Π·Π° ΡΡΠ΅ΡΠ΅. ΠΠΊΠΎ ΠΈΠΌΠ°ΡΠ΅, Π΄Π° ΡΠ΅ΡΠ΅ΠΌΠ΅, Π±Π°Π·Π° Π½Π° ΠΊΠΎΠ΄ΠΎΠ²ΠΈ Perl, Π° Π½Π΅ ΡΠ΅Π·Π΅ΡΠ²ΠΈΡΠ°ΡΠ΅, Π½Π΅ΠΌΠ° Π΄Π° Π½Π°ΡΠ΄Π΅ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ΅ΡΠΈ Π½Π° Perl. ΠΠΈΠ΄Π΅ΡΡΠΈ Π½Π΅ ΠΏΠΎΡΡΠΎΡΠ°Ρ, ΡΠΈΡΠ΅ Π±Π΅Π° ΠΎΠ΄Π·Π΅ΠΌΠ΅Π½ΠΈ, Π° ΡΡΠ΅ΡΠ΅ΡΠΎ Π·Π° Π½ΠΈΠ² Π΅ Π΄ΠΎΠ»Π³ΠΎ ΠΈ ΡΠ΅ΡΠΊΠΎ. ΠΠΊΠΎ ΡΠ°ΠΊΠ°ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ΅ΡΠΈ Π·Π° Π½Π΅ΡΡΠΎ Π΄ΡΡΠ³ΠΎ, ΠΌΠΎΠΆΠ΅Π±ΠΈ ΡΠ΅ ΡΡΠ΅Π±Π° Π΄Π° Π³ΠΈ ΠΏΡΠ΅ΠΊΠ²Π°Π»ΠΈΡΠΈΠΊΡΠ²Π°ΡΠ΅ ΠΈΠ»ΠΈ Π΄Π° Π³ΠΈ Π½Π°ΡΠ΄Π΅ΡΠ΅. ΠΠΎ ΡΠ»ΡΡΠ°ΡΠΎΡ ΡΠΎ ΠΡΠ°, ΡΓ¨ Π΅ Π΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΎ. Π‘Π΅ΠΊΠΎΡ ΠΏΠΎΠΌΠ»Π°Π΄ ΠΌΠΎΠΆΠ΅ Π΄Π° Π³ΠΎ Π½Π°ΡΡΠΈ ΠΡΠ° Π·Π° ΡΡΠΈ Π΄Π΅Π½Π°. ΠΠΈ ΡΡΠ΅Π±Π°Π° ΠΎΠΊΠΎΠ»Ρ Π΄Π²Π° ΡΠ°ΡΠ° Π΄Π° Π³ΠΎ ΡΡΠ°ΡΠ°ΠΌ. ΠΠ²Π° ΡΠ°ΡΠ° ΠΏΠΎΠ΄ΠΎΡΠ½Π° Π²Π΅ΡΠ΅ ΠΏΠΈΡΡΠ²Π°Π² ΠΊΠΎΠ΄ Π²ΠΎ ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΡΠ°. ΠΠΊΠΎΠ»Ρ Π΅Π΄Π½Π° Π½Π΅Π΄Π΅Π»Π° ΠΏΠΎΠ΄ΠΎΡΠ½Π° ΠΎΡΠΈΠ΄Π΅ Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²ΠΎ ΠΈ Π·Π°ΠΌΠΈΠ½Π°.
ΠΠ°ΠΊΠΎ ΡΠ΅Π·ΡΠ»ΡΠ°Ρ Π½Π° ΡΠΎΠ°, ΠΈΠ·Π³Π»Π΅Π΄Π° Π²Π°ΠΊΠ°:

ΠΠΌΠ° ΠΌΠ½ΠΎΠ³Ρ ΡΡΠΊΠ°. OpenResty ΡΠΎΠ±ΡΠ° Π΅Π΄Π΅Π½ ΠΊΡΠΏ ΠΌΠΎΠ΄ΡΠ»ΠΈ, ΠΈ luash ΠΈ ΠΌΠΎΡΠΎΡΠ½ΠΈ. Π ΠΈΠΌΠ°ΡΠ΅ ΡΓ¨ ΠΏΠΎΠ΄Π³ΠΎΡΠ²Π΅Π½ΠΎ - ΡΠ°ΡΠΏΠΎΡΠ΅Π΄Π΅Π½ΠΎ ΠΈ ΡΠ°Π±ΠΎΡΠ΅Π½ΠΎ.
ΠΏΡΠΈΠΌΠ΅ΡΠΈ
ΠΠΎΡΡΠ° Π΅ ΠΎΠ΄ ΡΠ΅ΠΊΡΡΠΎΠ²ΠΈΡΠ΅, Π°ΡΠ΄Π΅ Π΄Π° ΠΏΡΠ΅ΠΌΠΈΠ½Π΅ΠΌΠ΅ Π½Π° ΠΊΠΎΠ΄ΠΎΡ. ΠΠ²Π΅ ΠΌΠ°Π»ΠΊΡ ΠΠ΄ΡΠ°Π²ΠΎ ΡΠ²Π΅ΡΠΎΡ:

Π¨ΡΠΎ ΠΈΠΌΠ° ΡΠ°ΠΌΡ? ΠΠ²Π° Π΅ Π»ΠΎΠΊΠ°ΡΠΈΡΠ° Π½Π° ΠΠ½Π³ΠΈΠ½Ρ. ΠΠ΅ ΡΠ΅ Π³ΡΠΈΠΆΠΈΠΌΠ΅, Π½Π΅ ΠΏΠΈΡΡΠ²Π°ΠΌΠ΅ ΡΠΎΠΏΡΡΠ²Π΅Π½ΠΎ ΡΡΡΠΈΡΠ°ΡΠ΅, Π½Π΅ Π·Π΅ΠΌΠ°ΠΌΠ΅ Π³ΠΎΡΠΎΠ²ΠΎ - Π²Π΅ΡΠ΅ Π³ΠΎ ΠΈΠΌΠ°ΠΌΠ΅ Π²ΠΎ NGINX, ΠΆΠΈΠ²Π΅Π΅ΠΌΠ΅ Π΄ΠΎΠ±Π°Ρ ΠΈ ΠΌΡΠ·Π»ΠΈΠ² ΠΆΠΈΠ²ΠΎΡ.
content_by_lua_block Π΅ Π±Π»ΠΎΠΊ ΠΊΠΎΡ Π²Π΅Π»ΠΈ Π΄Π΅ΠΊΠ° ΡΠ΅ΡΠ²ΠΈΡΠ°ΠΌΠ΅ ΡΠΎΠ΄ΡΠΆΠΈΠ½Π° ΠΊΠΎΡΠΈΡΡΠ΅ΡΡΠΈ ΡΠΊΡΠΈΠΏΡΠ° Lua. ΠΠ° Π·Π΅ΠΌΠ°ΠΌΠ΅ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π°ΡΠ° Engins remote_addr ΠΈ ΡΡΠ°Π²Π΅ΡΠ΅ Π³ΠΎ string.format. Π’ΠΎΠ° Π΅ ΠΈΡΡΠΎ ΠΊΠ°ΠΊΠΎ sprintf, ΡΠ°ΠΌΠΎ Π²ΠΎ ΠΡΠ°, ΡΠ°ΠΌΠΎ ΡΠΎΡΠ½ΠΎ. Π Π½ΠΈΠ΅ Π³ΠΎ Π΄Π°Π²Π°ΠΌΠ΅ Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΡ.
ΠΠ°ΠΊΠΎ ΡΠ΅Π·ΡΠ»ΡΠ°Ρ Π½Π° ΡΠΎΠ°, ΡΠ΅ ΠΈΠ·Π³Π»Π΅Π΄Π° Π²Π°ΠΊΠ°:

ΠΠΎ, Π΄Π° ΡΠ΅ Π²ΡΠ°ΡΠΈΠΌΠ΅ Π²ΠΎ ΡΠ΅Π°Π»Π½ΠΈΠΎΡ ΡΠ²Π΅Ρ. ΠΠΈΠΊΠΎΡ Π½Π΅ Π³ΠΎ ΡΠ°ΡΠΏΠΎΡΠ΅Π΄ΡΠ²Π° Hello World Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²ΠΎ. ΠΠ°ΡΠ°ΡΠ° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° ΠΎΠ±ΠΈΡΠ½ΠΎ ΠΎΠ΄ΠΈ Π²ΠΎ Π±Π°Π·Π°ΡΠ° Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ ΠΈΠ»ΠΈ Π½Π° Π΄ΡΡΠ³ΠΎ ΠΌΠ΅ΡΡΠΎ ΠΈ Π½Π°ΡΡΠ΅ΡΡΠΎ ΡΠ΅ΠΊΠ° ΠΎΠ΄Π³ΠΎΠ²ΠΎΡ.

Π’ΠΎΡ ΡΠ°ΠΌΠΎ ΡΠ΅Π΄ΠΈ ΠΈ ΡΠ΅ΠΊΠ°. ΠΠ΅ Π΅ ΠΌΠ½ΠΎΠ³Ρ Π΄ΠΎΠ±ΡΠΎ. ΠΠΎΠ³Π° ΡΠ΅ Π΄ΠΎΡΠ΄Π°Ρ 100.000 ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΈ, Π½ΠΈ Π΅ ΠΌΠ½ΠΎΠ³Ρ ΡΠ΅ΡΠΊΠΎ. ΠΠ½Π°ΡΠΈ, Π°ΡΠ΄Π΅ Π΄Π° ΠΊΠΎΡΠΈΡΡΠΈΠΌΠ΅ Π΅Π΄Π½ΠΎΡΡΠ°Π²Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° ΠΊΠ°ΠΊΠΎ ΠΏΡΠΈΠΌΠ΅Ρ. ΠΠ΅ Π±Π°ΡΠ°ΠΌΠ΅ ΡΠ»ΠΈΠΊΠΈ, Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π° ΠΌΠ°ΡΠΊΠΈ. ΠΠΎ, Π½ΠΈΠ΅ Π½Π΅ΠΌΠ° ΡΠ°ΠΌΠΎ Π΄Π° ΠΏΡΠ΅Π±Π°ΡΡΠ²Π°ΠΌΠ΅, ΡΡΠΊΡ ΡΠ΅ Π³ΠΈ ΠΏΡΠΎΡΠΈΡΠΈΠΌΠ΅ ΠΊΠ»ΡΡΠ½ΠΈΡΠ΅ Π·Π±ΠΎΡΠΎΠ²ΠΈ ΠΈ, Π°ΠΊΠΎ ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊΠΎΡ Π±Π°ΡΠ°Π» βΠΌΠ°ΡΠΈΡΠ°β, ΡΠ΅ Π½Π°ΡΠ΄Π΅ΠΌΠ΅ ΠΌΠ°ΡΠΊΠΈ, ΠΊΡΠ·Π½Π΅Π½ΠΈ ΠΌΠ°ΡΠΊΠΈ ΠΈΡΠ½. ΠΡΠ²ΠΎ, ΡΡΠ΅Π±Π° Π΄Π° Π³ΠΈ Π΄ΠΎΠ±ΠΈΠ΅ΠΌΠ΅ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈΡΠ΅ Π·Π° Π±Π°ΡΠ°ΡΠ΅ΡΠΎ Π½Π° Π·Π°Π΄Π½ΠΈΠΎΡ Π΄Π΅Π». ΠΠ·Π³Π»Π΅Π΄Π° Π²Π°ΠΊΠ°:

ΠΠ²Π΅ Π»ΠΈΠ½ΠΈΠΈ Π²ΠΈ Π΄ΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°Π°Ρ Π΄Π° Π³ΠΈ ΠΏΠΎΠ΄ΠΈΠ³Π½Π΅ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΡΠ΅ GET, Π±Π΅Π· ΠΊΠΎΠΌΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ. Π‘Π»Π΅Π΄Π½ΠΎ, Π΄Π° ΡΠ΅ΡΠ΅ΠΌΠ΅, ΠΎΠ΄ Π±Π°Π·Π°ΡΠ° Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ ΡΠΎ Π·Π½Π°ΠΊ Π·Π° ΠΊΠ»ΡΡΠ΅Π½ Π·Π±ΠΎΡ ΠΈ Π΅ΠΊΡΡΠ΅Π½Π·ΠΈΡΠ°, Π³ΠΈ Π΄ΠΎΠ±ΠΈΠ²Π°ΠΌΠ΅ ΠΎΠ²ΠΈΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΊΠΎΡΠΈΡΡΠ΅ΡΡΠΈ ΡΠ΅Π΄ΠΎΠ²Π½ΠΎ SQL Π±Π°ΡΠ°ΡΠ΅. ΠΠ΄Π½ΠΎΡΡΠ°Π²Π½ΠΎ Π΅. ΠΠ·Π³Π»Π΅Π΄Π° Π²Π°ΠΊΠ°:

ΠΠΎΠ²ΡΠ·ΡΠ²Π°ΡΠ΅ Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° resty.mysql, ΠΊΠΎΡ Π²Π΅ΡΠ΅ Π³ΠΎ ΠΈΠΌΠ°ΠΌΠ΅ Π²ΠΎ ΠΊΠΎΠΌΠΏΠ»Π΅ΡΠΎΡ. ΠΠ΅ ΡΡΠ΅Π±Π° Π½ΠΈΡΡΠΎ Π΄Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΠΌΠ΅, ΡΓ¨ Π΅ ΠΏΠΎΠ΄Π³ΠΎΡΠ²Π΅Π½ΠΎ. ΠΠΎΡΠΎΡΡΠ²Π°ΠΌΠ΅ ΠΊΠ°ΠΊΠΎ Π΄Π° ΡΠ΅ ΠΏΠΎΠ²ΡΠ·Π΅ΡΠ΅ ΠΈ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ SQL Π±Π°ΡΠ°ΡΠ΅:

ΠΠ²Π΄Π΅ Π΅ ΠΌΠ°Π»ΠΊΡ ΡΡΡΠ°ΡΠ½ΠΎ, Π½ΠΎ ΡΓ¨ ΡΡΠ½ΠΊΡΠΈΠΎΠ½ΠΈΡΠ°. ΠΠ²Π΅ 10 Π΅ Π³ΡΠ°Π½ΠΈΡΠ°. ΠΠΎΠ²Π»Π΅ΠΊΡΠ²Π°ΠΌΠ΅ 10 Π·Π°ΠΏΠΈΡΠΈ, ΠΌΡΠ·Π»ΠΈΠ²ΠΈ ΡΠΌΠ΅, Π½Π΅ ΡΠ°ΠΊΠ°ΠΌΠ΅ Π΄Π° ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌΠ΅ ΠΏΠΎΠ²Π΅ΡΠ΅. ΠΠ°Π±ΠΎΡΠ°Π²ΠΈΠ² Π½Π° Π»ΠΈΠΌΠΈΡΠΎΡ Π²ΠΎ SQL.
Π‘Π»Π΅Π΄Π½ΠΎ Π½Π°ΠΎΡΠ°ΠΌΠ΅ ΡΠ»ΠΈΠΊΠΈ Π·Π° ΡΠΈΡΠ΅ ΠΏΡΠ°ΡΠ°ΡΠ°. Π‘ΠΎΠ±ΠΈΡΠ°ΠΌΠ΅ Π΅Π΄Π΅Π½ ΠΊΡΠΏ Π±Π°ΡΠ°ΡΠ° ΠΈ ΠΏΠΎΠΏΠΎΠ»Π½ΡΠ²Π°ΠΌΠ΅ ΡΠ°Π±Π΅Π»Π° ΠΡΠ° Π½Π°ΡΠ΅ΡΠ΅Π½Π° reqs, ΠΈ Π½ΠΈΠ΅ ΠΏΡΠ°Π²ΠΈΠΌΠ΅ ngx.location.capture_multi.

Π‘ΠΈΡΠ΅ ΠΎΠ²ΠΈΠ΅ Π±Π°ΡΠ°ΡΠ° ΡΠ΅ ΠΈΡΠΏΡΠ°ΡΠ°Π°Ρ ΠΏΠ°ΡΠ°Π»Π΅Π»Π½ΠΎ, Π° ΠΎΠ΄Π³ΠΎΠ²ΠΎΡΠΈΡΠ΅ Π½ΠΈ ΡΠ΅ Π²ΡΠ°ΡΠ°Π°Ρ. ΠΡΠ΅ΠΌΠ΅ΡΠΎ Π½Π° ΡΠ°Π±ΠΎΡΠ° Π΅ Π΅Π΄Π½Π°ΠΊΠ²ΠΎ Π½Π° Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π½Π° ΠΎΠ΄Π³ΠΎΠ²ΠΎΡ Π½Π° Π½Π°ΡΡΠΏΠΎΡΠΎΡΠΎ. ΠΠΊΠΎ ΡΠΈΡΠ΅ ΠΏΡΠΊΠ°ΠΌΠ΅ Π·Π° 50 ΠΌΠΈΠ»ΠΈΡΠ΅ΠΊΡΠ½Π΄ΠΈ, Π° ΡΠΌΠ΅ ΠΈΡΠΏΡΠ°ΡΠΈΠ»Π΅ ΡΡΠΎ Π±Π°ΡΠ°ΡΠ°, ΡΠΎΠ³Π°Ρ ΡΠ΅ Π΄ΠΎΠ±ΠΈΠ΅ΠΌΠ΅ ΠΎΠ΄Π³ΠΎΠ²ΠΎΡ Π·Π° 50 ΠΌΠΈΠ»ΠΈΡΠ΅ΠΊΡΠ½Π΄ΠΈ.
ΠΠΈΠ΄Π΅ΡΡΠΈ ΡΠΌΠ΅ ΠΌΡΠ·Π»ΠΈΠ²ΠΈ ΠΈ Π½Π΅ ΡΠ°ΠΊΠ°ΠΌΠ΅ Π΄Π° ΠΏΠΈΡΡΠ²Π°ΠΌΠ΅ HTTP ΠΈ ΡΠ°ΠΊΡΠ²Π°ΡΠ΅ ΡΠΎ ΠΊΠ΅ΡΠΈΡΠ°ΡΠ΅, ΡΠ΅ Π³ΠΎ Π½Π°ΡΠ΅ΡΠ°ΠΌΠ΅ NGINX Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈ ΡΠ΅ Π·Π° Π½Π°Ρ. ΠΠ°ΠΊΠΎ ΡΡΠΎ Π²ΠΈΠ΄ΠΎΠ²ΡΠ΅, ΠΈΠΌΠ°ΡΠ΅ Π±Π°ΡΠ°ΡΠ΅ Π·Π° url/fetch, Π΅Π²Π΅ Π³ΠΎ ΡΠΎΡ:

ΠΠΈΠ΅ Π³ΠΎ ΠΏΡΠ°Π²ΠΈΠΌΠ΅ Π΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΎ proxy_pass, ΡΠΊΠ°ΠΆΡΠ²Π°ΠΌΠ΅ ΠΊΠ°Π΄Π΅ Π΄Π° ΠΊΠ΅ΡΠΈΡΠ°ΠΌΠ΅, ΠΊΠ°ΠΊΠΎ Π΄Π° Π³ΠΎ Π½Π°ΠΏΡΠ°Π²ΠΈΠΌΠ΅ ΡΠΎΠ° ΠΈ ΡΓ¨ ΡΠ°Π±ΠΎΡΠΈ Π·Π° Π½Π°Ρ.
ΠΠΎ, ΠΎΠ²Π° Π½Π΅ Π΅ Π΄ΠΎΠ²ΠΎΠ»Π½ΠΎ, ΡΠ΅ΠΏΠ°ΠΊ ΡΡΠ΅Π±Π° Π΄Π° ΠΌΡ Π³ΠΈ Π΄Π°Π΄Π΅ΠΌΠ΅ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈΡΠ΅ Π½Π° ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊΠΎΡ. ΠΠ°ΡΠ΅Π΄Π½ΠΎΡΡΠ°Π²Π½Π°ΡΠ° ΠΈΠ΄Π΅ΡΠ° Π΅ Π΄Π° ΡΠ΅ ΡΠ΅ΡΠΈΡΠ°Π»ΠΈΠ·ΠΈΡΠ° ΡΓ¨ Π²ΠΎ JSON, Π»Π΅ΡΠ½ΠΎ, Π²ΠΎ Π΄Π²Π° ΡΠ΅Π΄Π°. ΠΠ°Π²Π°ΠΌΠ΅ Content-Type, Π΄Π°Π²Π°ΠΌΠ΅ JSON.
ΠΠΎ, ΠΈΠΌΠ° Π΅Π΄Π½Π° ΡΠ΅ΡΠΊΠΎΡΠΈΡΠ°: ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊΠΎΡ Π½Π΅ ΡΠ°ΠΊΠ° Π΄Π° ΡΠΈΡΠ° JSON. Π’ΡΠ΅Π±Π° Π΄Π° ΠΏΡΠΈΠ²Π»Π΅ΡΠ΅ΠΌΠ΅ Π½Π°ΠΏΡΠ΅Π΄Π½ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ΅ΡΠΈ. ΠΠΎΠ½Π΅ΠΊΠΎΠ³Π°Ρ Π½Π΅ ΡΠ°ΠΊΠ°ΠΌΠ΅ Π΄Π° Π³ΠΎ ΠΏΡΠ°Π²ΠΈΠΌΠ΅ ΠΎΠ²Π° Π½Π° ΠΏΠΎΡΠ΅ΡΠΎΠΊΠΎΡ. Π ΡΠΏΠ΅ΡΠΈΡΠ°Π»ΠΈΡΡΠΈΡΠ΅ Π·Π° ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡΠ° ΡΠ΅ ΡΠ΅ΡΠ°Ρ Π΄Π΅ΠΊΠ° Π°ΠΊΠΎ Π±Π°ΡΠ°ΠΌΠ΅ ΡΠ»ΠΈΠΊΠΈ, ΡΠΎΠ³Π°Ρ ΡΠΎΠ° Π½Π΅ ΠΈΠΌ Π΅ Π²Π°ΠΆΠ½ΠΎ. Π Π°ΠΊΠΎ ΠΈΠΌ Π΄Π°Π΄Π΅ΠΌΠ΅ ΠΎΠ΄ΡΠ΅Π΄Π΅Π½Π° ΡΠΎΠ΄ΡΠΆΠΈΠ½Π°, ΡΠΈΠ΅ ΡΠ΅ ΡΠ΅ΡΠ°Ρ Π΄Π΅ΠΊΠ° Π½Π°ΡΠΈΡΠ΅ ΠΏΡΠ΅Π±Π°ΡΡΠ²Π°ΡΠΈ Π½Π΅ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠ°Π°Ρ Π½ΠΈΡΡΠΎ.
Π¨ΡΠΎ Π΄Π° ΡΠ΅ ΠΏΡΠ°Π²ΠΈ Π²ΠΎ Π²ΡΡΠΊΠ° ΡΠΎ ΡΠΎΠ°? Π‘Π΅ ΡΠ°Π·Π±ΠΈΡΠ°, Π½Π° ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊΠΎΡ ΡΠ΅ ΠΌΡ Π΄Π°Π΄Π΅ΠΌΠ΅ HTML. Π Π°ΡΠ½ΠΎ Π³Π΅Π½Π΅ΡΠΈΡΠ°ΡΠ΅ Π½Π΅ Π΅ comme il faut, Π·Π°ΡΠΎΠ° ΡΠ°ΠΊΠ°ΠΌΠ΅ Π΄Π° ΠΊΠΎΡΠΈΡΡΠΈΠΌΠ΅ ΡΠ°Π±Π»ΠΎΠ½ΠΈ. ΠΠΎΡΡΠΎΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π·Π° ΠΎΠ²Π° lua-resty-template.

Π‘ΠΈΠ³ΡΡΠ½ΠΎ ΡΡΠ΅ Π³ΠΈ Π²ΠΈΠ΄Π΅Π»Π΅ ΡΡΠΈΡΠ΅ ΡΡΡΠ°ΡΠ½ΠΈ Π±ΡΠΊΠ²ΠΈ ΠΠΠ. OpenResty Π΄ΠΎΠ°ΡΠ° ΡΠΎ ΡΠΎΠΏΡΡΠ²Π΅Π½ ΠΌΠ΅Π½Π°ΡΠ΅Ρ Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠΈ, ΠΏΡΠ΅ΠΊΡ ΠΊΠΎΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ΅ Π΅Π΄Π΅Π½ ΠΊΡΠΏ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΌΠΎΠ΄ΡΠ»ΠΈ, ΠΎΡΠΎΠ±Π΅Π½ΠΎ, lua-resty-template. ΠΠ²Π° Π΅ Π΅Π΄Π½ΠΎΡΡΠ°Π²Π΅Π½ ΠΌΠΎΡΠΎΡ Π·Π° ΡΠ°Π±Π»ΠΎΠ½ΠΈ, ΡΠ»ΠΈΡΠ΅Π½ Π½Π° ΡΠ°Π±Π»ΠΎΠ½ΠΈΡΠ΅ Π½Π° ΠΠ°Π½Π³ΠΎ. Π’Π°ΠΌΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π½Π°ΠΏΠΈΡΠ΅ΡΠ΅ ΠΊΠΎΠ΄ ΠΈ Π΄Π° ΠΈΠ·Π²ΡΡΠΈΡΠ΅ Π·Π°ΠΌΠ΅Π½Π° Π½Π° ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π°ΡΠ°.
ΠΠ°ΠΊΠΎ ΡΠ΅Π·ΡΠ»ΡΠ°Ρ, ΡΓ¨ ΡΠ΅ ΠΈΠ·Π³Π»Π΅Π΄Π° Π²Π°ΠΊΠ°:

ΠΠΈ Π·Π΅Π΄ΠΎΠ²ΠΌΠ΅ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈΡΠ΅ ΠΈ Π³ΠΎ ΡΠ΅Π½Π΄Π΅ΡΠΈΡΠ°Π²ΠΌΠ΅ ΡΠ°Π±Π»ΠΎΠ½ΠΎΡ, ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ Π²ΠΎ Π΄Π²Π° ΡΠ΅Π΄Π°. ΠΠΎΡΠΈΡΠ½ΠΈΠΊΠΎΡ Π΅ ΡΡΠ΅ΡΠ΅Π½, Π΄ΠΎΠ±ΠΈΠ» ΠΌΠ°ΡΠΊΠΈ. ΠΠΈΠ΄Π΅ΡΡΠΈ Π³ΠΎ ΠΏΡΠΎΡΠΈΡΠΈΠ²ΠΌΠ΅ Π±Π°ΡΠ°ΡΠ΅ΡΠΎ, Π΄ΠΎΠ±ΠΈ ΠΈ ΠΊΡΠ·Π½Π΅Π½ΠΎ ΠΏΠ΅ΡΠ°Ρ Π·Π° ΠΌΠ°ΡΠΈΡΠ°. ΠΠΈΠΊΠΎΠ³Π°Ρ Π½Π΅ ΡΠ΅ Π·Π½Π°Π΅, ΠΌΠΎΠΆΠ΅Π±ΠΈ ΡΠΎΡ Π³ΠΎ Π±Π°ΡΠ°ΡΠ΅ ΡΠΎΠΊΠΌΡ ΠΎΠ²Π°, Π½ΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎ Π΄Π° Π³ΠΎ ΡΠΎΡΠΌΡΠ»ΠΈΡΠ° ΡΠ²ΠΎΠ΅ΡΠΎ Π±Π°ΡΠ°ΡΠ΅.
Π‘Γ¨ Π΅ ΠΊΡΠ», Π½ΠΎ Π½ΠΈΠ΅ ΡΠΌΠ΅ Π²ΠΎ ΡΠ°Π·Π²ΠΎΡ ΠΈ ΡΓ¨ ΡΡΡΠ΅ Π½Π΅ ΡΠ°ΠΊΠ°ΠΌΠ΅ Π΄Π° ΠΈΠΌ Π³ΠΎ ΠΏΡΠΈΠΊΠ°ΠΆΡΠ²Π°ΠΌΠ΅ Π½Π° ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΈΡΠ΅. ΠΡΠ΄Π΅ Π΄Π° Π³ΠΎ Π½Π°ΠΏΡΠ°Π²ΠΈΠΌΠ΅ ΠΎΠ²Π»Π°ΡΡΡΠ²Π°ΡΠ΅ΡΠΎ. ΠΠ° Π΄Π° Π³ΠΎ Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ ΠΎΠ²Π°, Π°ΡΠ΄Π΅ Π΄Π° ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅ΠΌΠ΅ ΠΊΠ°ΠΊΠΎ NGINX ΡΠ΅ ΡΠΏΡΠ°Π²ΡΠ²Π° ΡΠΎ Π±Π°ΡΠ°ΡΠ΅ΡΠΎ Π²ΠΎ ΡΡΠ»ΠΎΠ²ΠΈ Π½Π° OpenResty:
- ΠΡΠ²Π° ΡΠ°Π·Π° - ΠΏΡΠΈΡΡΠ°ΠΏ, ΠΊΠΎΠ³Π° ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊΠΎΡ ΡΡΠΎΡΡΠΊΡ ΠΏΡΠΈΡΡΠΈΠ³Π½Π°, ΠΈ Π³ΠΎ Π³Π»Π΅Π΄Π°Π²ΠΌΠ΅ ΠΏΠΎ Π·Π°Π³Π»Π°Π²ΠΈΡΠ°, ΠΏΠΎ IP Π°Π΄ΡΠ΅ΡΠ° ΠΈ ΡΠΏΠΎΡΠ΅Π΄ Π΄ΡΡΠ³ΠΈ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ. ΠΠΎΠΆΠ΅ΠΌΠ΅ Π²Π΅Π΄Π½Π°Ρ Π΄Π° Π³ΠΎ ΠΏΡΠ΅ΠΊΠΈΠ½Π΅ΠΌΠ΅ Π°ΠΊΠΎ Π½Π΅ Π½ΠΈ ΡΠ΅ Π΄ΠΎΠΏΠ°ΡΠ°. ΠΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ Π·Π° ΠΎΠ²Π»Π°ΡΡΡΠ²Π°ΡΠ΅ ΠΈΠ»ΠΈ Π°ΠΊΠΎ Π΄ΠΎΠ±ΠΈΠ΅ΠΌΠ΅ ΠΌΠ½ΠΎΠ³Ρ Π±Π°ΡΠ°ΡΠ°, Π»Π΅ΡΠ½ΠΎ ΠΌΠΎΠΆΠ΅ΠΌΠ΅ Π΄Π° Π³ΠΈ ΠΏΡΠ΅ΠΊΠΈΠ½Π΅ΠΌΠ΅ Π²ΠΎ ΠΎΠ²Π°Π° ΡΠ°Π·Π°.
- ΠΏΡΠ΅ΡΠ°Π±ΠΎΡΠΈ. ΠΠΈΠ΅ ΠΏΡΠ΅ΠΏΠΈΡΡΠ²Π°ΠΌΠ΅ Π½Π΅ΠΊΠΎΠΈ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ Π·Π° Π±Π°ΡΠ°ΡΠ΅ΡΠΎ.
- ΡΠΎΠ΄ΡΠΆΠΈΠ½Π°. ΠΠΈΠ΅ ΡΠ° Π΄ΠΎΡΡΠ°Π²ΡΠ²Π°ΠΌΠ΅ ΡΠΎΠ΄ΡΠΆΠΈΠ½Π°ΡΠ° Π΄ΠΎ ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊΠΎΡ.
- ΡΠΈΠ»ΡΠ΅Ρ Π·Π° Π·Π°Π³Π»Π°Π²ΠΈΡΠ°. ΠΠΈ Π·Π°ΠΌΠ΅Π½ΡΠ²Π°ΠΌΠ΅ Π·Π°Π³Π»Π°Π²ΡΠ°ΡΠ° Π½Π° ΠΎΠ΄Π³ΠΎΠ²ΠΎΡΠΎΡ. ΠΠΊΠΎ ΠΊΠΎΡΠΈΡΡΠ΅Π²ΠΌΠ΅
proxy_pass, ΠΌΠΎΠΆΠ΅ΠΌΠ΅ Π΄Π° ΠΏΡΠ΅ΡΠ°Π±ΠΎΡΠΈΠΌΠ΅ Π½Π΅ΠΊΠΎΠΈ Π·Π°Π³Π»Π°Π²ΠΈΡΠ° ΠΏΡΠ΅Π΄ Π΄Π° ΠΌΡ Π³ΠΈ Π΄Π°Π΄Π΅ΠΌΠ΅ Π½Π° ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊΠΎΡ. - ΡΠΈΠ»ΡΠ΅Ρ Π·Π° ΡΠ΅Π»ΠΎ. ΠΠΎΠΆΠ΅ΠΌΠ΅ Π΄Π° Π³ΠΎ ΠΏΡΠΎΠΌΠ΅Π½ΠΈΠΌΠ΅ ΡΠ΅Π»ΠΎΡΠΎ.
- Π΄Π° ΡΠ΅ Π»ΠΎΠ³ΠΈΡΠ°ΡΠ΅ - ΡΠ΅ΡΠ°. ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΠΈΡΡΠ²Π°ΡΠ΅ Π΄Π½Π΅Π²Π½ΠΈΡΠΈ Π²ΠΎ elasticsearch Π±Π΅Π· Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Π΅Π½ ΡΠ»ΠΎΡ.
ΠΠ°ΡΠ΅ΡΠΎ ΠΎΠ²Π»Π°ΡΡΡΠ²Π°ΡΠ΅ ΡΠ΅ ΠΈΠ·Π³Π»Π΅Π΄Π° Π²Π°ΠΊΠ°:

ΠΠ΅ Π³ΠΎ Π΄ΠΎΠ΄Π°Π΄Π΅ΠΌΠ΅ ΠΎΠ²Π° Π½Π° ΠΎΠ½Π° location, ΡΡΠΎ Π³ΠΎ ΠΎΠΏΠΈΡΠ°Π²ΠΌΠ΅ ΠΏΡΠ΅ΡΡ
ΠΎΠ΄Π½ΠΎ, ΠΈ Π³ΠΎ ΡΡΠ°Π²ΠΈΠ²ΠΌΠ΅ ΡΠ»Π΅Π΄Π½ΠΈΠΎΠ² ΠΊΠΎΠ΄ ΡΠ°ΠΌΡ:

ΠΠ»Π΅Π΄Π°ΠΌΠ΅ Π΄Π° Π²ΠΈΠ΄ΠΈΠΌΠ΅ Π΄Π°Π»ΠΈ ΠΈΠΌΠ°ΠΌΠ΅ ΡΠΎΠΊΠ΅Π½ Π·Π° ΠΊΠΎΠ»Π°ΡΠΈΡΠ°. ΠΠΊΠΎ Π½Π΅, ΡΠΎΠ³Π°Ρ Π±Π°ΡΠ°ΠΌΠ΅ ΠΎΠ²Π»Π°ΡΡΡΠ²Π°ΡΠ΅. ΠΠΎΡΠΈΡΠ½ΠΈΡΠΈΡΠ΅ ΡΠ΅ Π»ΡΠΊΠ°Π²ΠΈ ΠΈ ΠΌΠΎΠΆΠ°Ρ Π΄Π° ΠΏΠΎΠ³ΠΎΠ΄Π°Ρ Π΄Π΅ΠΊΠ° ΡΡΠ΅Π±Π° Π΄Π° ΠΏΠΎΡΡΠ°Π²Π°Ρ ΡΠΎΠΊΠ΅Π½ Π·Π° ΠΊΠΎΠ»Π°ΡΠΈΡΠ°. ΠΠ°ΡΠΎΠ°, ΡΠ΅ Π³ΠΎ ΡΡΠ°Π²ΠΈΠΌΠ΅ ΠΈ Π²ΠΎ Π Π΅Π΄ΠΈΡ:

ΠΠΎΠ΄ΠΎΡ Π·Π° ΡΠ°Π±ΠΎΡΠ° ΡΠΎ Redis Π΅ ΠΌΠ½ΠΎΠ³Ρ Π΅Π΄Π½ΠΎΡΡΠ°Π²Π΅Π½ ΠΈ Π½Π΅ ΡΠ΅ ΡΠ°Π·Π»ΠΈΠΊΡΠ²Π° ΠΎΠ΄ Π΄ΡΡΠ³ΠΈΡΠ΅ ΡΠ°Π·ΠΈΡΠΈ. ΠΠΎ ΠΈΡΡΠΎ Π²ΡΠ΅ΠΌΠ΅, ΡΠΈΡΠ΅ Π²Π»Π΅Π·Π½ΠΈ/ΠΈΠ·Π»Π΅Π·Π½ΠΈ, ΡΡΠΊΠ° ΠΈ ΡΠ°ΠΌΡ, Π½Π΅ ΡΠ΅ Π±Π»ΠΎΠΊΠΈΡΠ°Π½ΠΈ. ΠΠΊΠΎ Π½Π°ΠΏΠΈΡΠ΅ΡΠ΅ ΡΠΈΠ½Ρ
ΡΠΎΠ½ ΠΊΠΎΠ΄, ΡΠΎΡ ΡΠ°Π±ΠΎΡΠΈ Π°ΡΠΈΠ½Ρ
ΡΠΎΠ½ΠΎ. Π Π΅ΡΠΈΡΠΈ ΠΊΠ°ΠΊΠΎ gevent, Π½ΠΎ Π΄ΠΎΠ±ΡΠΎ Π½Π°ΠΏΡΠ°Π²Π΅Π½ΠΎ.

ΠΡΠ΄Π΅ Π΄Π° Π³ΠΎ Π½Π°ΠΏΡΠ°Π²ΠΈΠΌΠ΅ ΡΠ°ΠΌΠΎΡΠΎ ΠΎΠ²Π»Π°ΡΡΡΠ²Π°ΡΠ΅:

ΠΠ΅Π»ΠΈΠΌΠ΅ Π΄Π΅ΠΊΠ° ΡΡΠ΅Π±Π° Π΄Π° Π³ΠΎ ΠΏΡΠΎΡΠΈΡΠ°ΠΌΠ΅ ΡΠ΅Π»ΠΎΡΠΎ Π½Π° Π±Π°ΡΠ°ΡΠ΅ΡΠΎ. ΠΠΎΠ±ΠΈΠ²Π°ΠΌΠ΅ POST Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΈ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΡΠ²Π°ΠΌΠ΅ Π΄Π°Π»ΠΈ Π½Π°ΡΠ°Π²ΡΠ²Π°ΡΠ΅ΡΠΎ ΠΈ Π»ΠΎΠ·ΠΈΠ½ΠΊΠ°ΡΠ° ΡΠ΅ ΡΠΎΡΠ½ΠΈ. ΠΠΎΠΊΠΎΠ»ΠΊΡ ΡΠ΅ Π½Π΅ΡΠΎΡΠ½ΠΈ, ΡΠΎΠ³Π°Ρ Π²Π΅ ΠΏΡΠ΅Π΄ΠΈΠ·Π²ΠΈΠΊΡΠ²Π°ΠΌΠ΅ Π·Π° ΠΎΠ²Π»Π°ΡΡΡΠ²Π°ΡΠ΅. Π Π°ΠΊΠΎ Π΅ ΡΠΎΡΠ½ΠΎ, ΡΠΎΠ³Π°Ρ Π½Π°ΠΏΠΈΡΠ΅ΡΠ΅ Π³ΠΎ ΡΠΎΠΊΠ΅Π½ΠΎΡ Π²ΠΎ Π Π΅Π΄ΠΈΡ:

ΠΠ΅ Π·Π°Π±ΠΎΡΠ°Π²Π°ΡΡΠ΅ Π΄Π° Π³ΠΎ ΠΏΠΎΡΡΠ°Π²ΠΈΡΠ΅ ΠΊΠΎΠ»Π°ΡΠ΅ΡΠΎ, ΡΠΎΠ° ΡΠ΅ ΠΏΡΠ°Π²ΠΈ ΠΈ Π²ΠΎ Π΄Π²Π° ΡΠ΅Π΄Π°:

ΠΡΠΈΠΌΠ΅ΡΠΎΡ Π΅ Π΅Π΄Π½ΠΎΡΡΠ°Π²Π΅Π½ ΠΈ ΡΠΏΠ΅ΠΊΡΠ»Π°ΡΠΈΠ²Π΅Π½. Π‘Π΅ ΡΠ°Π·Π±ΠΈΡΠ°, Π½Π΅ΠΌΠ° Π΄Π° ΠΏΡΠ°Π²ΠΈΠΌΠ΅ ΡΡΠ»ΡΠ³Π° ΠΊΠΎΡΠ° Π½Π° Π»ΡΡΠ΅ΡΠΎ ΠΈΠΌ ΠΏΠΎΠΊΠ°ΠΆΡΠ²Π° ΠΌΠ°ΡΠΊΠΈ. ΠΠΎ, ΠΊΠΎΡ Π½Γ¨ ΠΏΠΎΠ·Π½Π°Π²Π° Π½Π°Ρ. ΠΠ½Π°ΡΠΈ, Π΄Π° ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΡΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ Π½Π°ΠΏΡΠ°Π²ΠΈ Π²ΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²ΠΎΡΠΎ.
- ΠΠΈΠ½ΠΈΠΌΠ°Π»ΠΈΡΡΠΈΡΠΊΠΈ Π·Π°Π΄Π½ΠΈΠ½Π°. ΠΠΎΠ½Π΅ΠΊΠΎΠ³Π°Ρ ΡΡΠ΅Π±Π° Π΄Π° ΠΈΠ·Π½Π΅ΡΠ΅ΠΌΠ΅ ΡΠ°ΠΌΠΎ ΠΌΠ°Π»ΠΊΡ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ Π²ΠΎ Π·Π°Π΄Π½ΠΈΠΎΡ Π΄Π΅Π»: Π½Π΅ΠΊΠ°Π΄Π΅ ΡΡΠ΅Π±Π° Π΄Π° Π²ΠΌΠ΅ΡΠ½Π΅ΠΌΠ΅ Π΄Π°ΡΡΠΌ, Π½Π΅ΠΊΠ°Π΄Π΅ ΡΡΠ΅Π±Π° Π΄Π° ΠΏΡΠΈΠΊΠ°ΠΆΠ΅ΠΌΠ΅ Π»ΠΈΡΡΠ°, Π΄Π° ΠΊΠ°ΠΆΠ΅ΠΌΠ΅ ΠΊΠΎΠ»ΠΊΡ ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΈ ΠΈΠΌΠ° ΡΠ΅Π³Π° Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ°ΡΠ°, Π΄Π° ΠΏΡΠΈΠΊΠ°ΡΠΈΠΌΠ΅ Π±ΡΠΎΡΠ°Ρ ΠΈΠ»ΠΈ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ°. ΠΠ΅ΡΡΠΎ ΡΠΎΠ»ΠΊΡ ΠΌΠ°Π»ΠΎ. ΠΠ΅ΠΊΠΎΠΈ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½ΠΈ ΠΏΠ°ΡΡΠΈΡΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ Π½Π°ΠΏΡΠ°Π²Π°Ρ ΠΌΠ½ΠΎΠ³Ρ Π»Π΅ΡΠ½ΠΎ. ΠΠ²Π° ΡΠ΅ Π³ΠΎ Π½Π°ΠΏΡΠ°Π²ΠΈ Π±ΡΠ·ΠΎ, Π»Π΅ΡΠ½ΠΎ ΠΈ ΠΎΠ΄Π»ΠΈΡΠ½ΠΎ.
- ΠΡΠ΅ΡΡ ΠΎΠ΄Π½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ. ΠΠΎΠ½Π΅ΠΊΠΎΠ³Π°Ρ ΡΠ°ΠΊΠ°ΠΌΠ΅ Π΄Π° Π²Π³ΡΠ°Π΄ΠΈΠΌΠ΅ ΡΠ΅ΠΊΠ»Π°ΠΌΠΈΡΠ°ΡΠ΅ Π½Π° Π½Π°ΡΠ°ΡΠ° ΡΡΡΠ°Π½ΠΈΡΠ° ΠΈ Π³ΠΎ Π΄ΠΎΠ±ΠΈΠ²Π°ΠΌΠ΅ ΠΎΠ²Π° ΡΠ΅ΠΊΠ»Π°ΠΌΠΈΡΠ°ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠ΅ΡΡΠΈ Π±Π°ΡΠ°ΡΠ° Π·Π° API. ΠΠ²Π° Π΅ ΠΌΠ½ΠΎΠ³Ρ Π»Π΅ΡΠ½ΠΎ Π΄Π° ΡΠ΅ Π½Π°ΠΏΡΠ°Π²ΠΈ ΠΎΠ²Π΄Π΅. ΠΠ΅ Π³ΠΎ Π²ΡΠΈΡΡΠ²Π°ΠΌΠ΅ Π½Π°ΡΠΈΠΎΡ Π±Π΅ΠΊΠ΅Π½Π΄, ΠΊΠΎΡ Π²Π΅ΡΠ΅ ΡΠ΅Π΄ΠΈ ΠΈ ΡΠ°Π±ΠΎΡΠΈ Π½Π°ΠΏΠΎΡΠ½ΠΎ. ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π³ΠΎ Π·Π΅ΠΌΠ΅ΡΠ΅ ΠΈ Π΄Π° Π³ΠΎ ΡΠΎΠ±Π΅ΡΠ΅ΡΠ΅ ΠΎΠ²Π΄Π΅. ΠΠΎΠΆΠ΅ΠΌΠ΅ Π΄Π° ΡΠΊΠ»ΠΎΠΏΠΈΠΌΠ΅ Π½Π΅ΠΊΠΎΠΈ JS ΠΈΠ»ΠΈ, ΠΎΠ±ΡΠ°ΡΠ½ΠΎ, Π΄Π° Π³ΠΎ ΠΎΠ΄Π²ΡΠ·Π΅ΠΌΠ΅ ΠΈ Π΄Π° ΠΏΡΠ΅ΡΠ°Π±ΠΎΡΠΈΠΌΠ΅ Π½Π΅ΡΡΠΎ ΠΏΡΠ΅Π΄ Π΄Π° ΠΌΡ Π³ΠΎ Π΄Π°Π΄Π΅ΠΌΠ΅ Π½Π° ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊΠΎΡ.
- Π€Π°ΡΠ°Π΄Π° Π·Π° ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡ. Π ΠΎΠ²Π° Π΅ ΠΌΠ½ΠΎΠ³Ρ Π΄ΠΎΠ±Π°Ρ ΡΠ»ΡΡΠ°Ρ, Π³ΠΎ ΡΠΏΡΠΎΠ²Π΅Π΄ΠΎΠ². ΠΡΠ΅Π΄ ΡΠΎΠ° ΡΠ°Π±ΠΎΡΠ΅Π² Π²ΠΎ Π’Π΅Π½Π·ΠΎΡ, ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡΠ° ΠΊΠΎΡΠ° ΡΠ΅ Π·Π°Π½ΠΈΠΌΠ°Π²Π° ΡΠΎ Π΅Π»Π΅ΠΊΡΡΠΎΠ½ΡΠΊΠΎ ΠΈΠ·Π²Π΅ΡΡΡΠ²Π°ΡΠ΅ ΠΈ ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡΠ²Π° ΠΈΠ·Π²Π΅ΡΡΡΠ²Π°ΡΠ΅ Π½Π° ΠΏΡΠΈΠ±Π»ΠΈΠΆΠ½ΠΎ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π° ΠΎΠ΄ ΠΏΡΠ°Π²Π½ΠΈΡΠ΅ ΡΡΠ±ΡΠ΅ΠΊΡΠΈ Π²ΠΎ Π΄ΡΠΆΠ°Π²Π°ΡΠ°. Π‘ΠΎΠ·Π΄Π°Π΄ΠΎΠ²ΠΌΠ΅ ΡΡΠ»ΡΠ³Π°, ΠΌΠ½ΠΎΠ³Ρ ΡΠ°Π±ΠΎΡΠΈ Π±Π΅Π° Π½Π°ΠΏΡΠ°Π²Π΅Π½ΠΈ ΡΠ°ΠΌΡ ΠΊΠΎΡΠΈΡΡΠ΅ΡΡΠΈ Π³ΠΎ ΠΈΡΡΠΈΠΎΡ ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·Π°ΠΌ: ΡΡΡΠΈΡΠ°ΡΠ΅, ΠΎΠ²Π»Π°ΡΡΡΠ²Π°ΡΠ΅ ΠΈ ΠΌΠ½ΠΎΠ³Ρ ΠΏΠΎΠ²Π΅ΡΠ΅.
OpenResty ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ ΠΊΠ°ΠΊΠΎ Π»Π΅ΠΏΠ°ΠΊ Π·Π° Π²Π°ΡΠΈΡΠ΅ ΠΌΠΈΠΊΡΠΎΡΡΠ»ΡΠ³ΠΈ, ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡΠ²Π°ΡΡΠΈ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½ ΠΏΡΠΈΡΡΠ°ΠΏ Π΄ΠΎ ΡΓ¨ ΠΈ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΡΡ. ΠΠΈΠ΄Π΅ΡΡΠΈ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠΈΡΠ΅ ΠΌΠΎΠΆΠ°Ρ Π΄Π° Π±ΠΈΠ΄Π°Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈ Π½Π° ΡΠ°ΠΊΠΎΠ² Π½Π°ΡΠΈΠ½ ΡΡΠΎ ΠΈΠΌΠ°ΡΠ΅ Node.js ΠΎΠ²Π΄Π΅, PHP ΠΎΠ²Π΄Π΅, Python ΠΎΠ²Π΄Π΅, Π½Π΅ΡΡΠΎ Erlang ΠΎΠ²Π΄Π΅, ΡΠ°Π·Π±ΠΈΡΠ°ΠΌΠ΅ Π΄Π΅ΠΊΠ° Π½Π΅ ΡΠ°ΠΊΠ°ΠΌΠ΅ Π΄Π° Π³ΠΎ ΠΏΡΠ΅ΠΏΠΈΡΡΠ²Π°ΠΌΠ΅ ΠΈΡΡΠΈΠΎΡ ΠΊΠΎΠ΄ Π½Π°ΡΠ΅ΠΊΠ°Π΄Π΅. ΠΠ°ΡΠΎΠ°, OpenResty ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΏΡΠΈΠΊΠ»ΡΡΠΈ Π½Π° ΠΏΡΠ΅Π΄Π½Π°ΡΠ° ΡΡΡΠ°Π½Π°. - Π‘ΡΠ°ΡΠΈΡΡΠΈΠΊΠ° ΠΈ Π°Π½Π°Π»ΠΈΡΠΈΠΊΠ°. ΠΠ±ΠΈΡΠ½ΠΎ NGINX Π΅ Π½Π° Π²Π»Π΅Π·ΠΎΡ, ΠΈ ΡΠΈΡΠ΅ Π±Π°ΡΠ°ΡΠ° ΠΏΠΎΠΌΠΈΠ½ΡΠ²Π°Π°Ρ Π½ΠΈΠ· Π½Π΅Π³ΠΎ. ΠΠ° ΠΎΠ²Π° ΠΌΠ΅ΡΡΠΎ Π΅ ΠΌΠ½ΠΎΠ³Ρ ΠΏΠΎΠ³ΠΎΠ΄Π½ΠΎ Π΄Π° ΡΠ΅ ΡΠΎΠ±Π΅ΡΠ΅. ΠΠΎΠΆΠ΅ΡΠ΅ Π²Π΅Π΄Π½Π°Ρ Π΄Π° ΠΏΡΠ΅ΡΠΌΠ΅ΡΠ°ΡΠ΅ Π½Π΅ΡΡΠΎ ΠΈ Π΄Π° Π³ΠΎ ΠΏΠΎΡΡΠ°Π²ΠΈΡΠ΅ Π½Π΅ΠΊΠ°Π΄Π΅, Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ, Elasticsearch, Logstash ΠΈΠ»ΠΈ Π΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΎ Π΄Π° Π³ΠΎ Π½Π°ΠΏΠΈΡΠ΅ΡΠ΅ Π²ΠΎ Π΄Π½Π΅Π²Π½ΠΈΠΊΠΎΡ ΠΈ ΠΏΠΎΡΠΎΠ° Π΄Π° Π³ΠΎ ΠΈΡΠΏΡΠ°ΡΠΈΡΠ΅ Π½Π΅ΠΊΠ°Π΄Π΅.
- ΠΠΎΠ²Π΅ΡΠ΅ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΊΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ. ΠΠ° ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΠ½Π»Π°ΡΠ½ ΠΈΠ³ΡΠΈΡΠ΅ ΡΠ΅ ΠΈΡΡΠΎ ΡΠ°ΠΊΠ° ΠΌΠ½ΠΎΠ³Ρ Π΄ΠΎΠ±ΡΠΈ Π·Π° ΠΏΡΠ°Π²Π΅ΡΠ΅. ΠΠ΅Π½Π΅Ρ Π²ΠΎ ΠΠ΅ΡΠΏ Π’Π°ΡΠ½, ΠΠ»Π΅ΠΊΡΠ°Π½Π΄Π°Ρ ΠΠ»Π°Π΄ΠΈΡ ΡΠ΅ Π·Π±ΠΎΡΡΠ²Π° Π·Π° ΡΠΎΠ° ΠΊΠ°ΠΊΠΎ Π±ΡΠ·ΠΎ Π΄Π° ΡΠ΅ ΠΏΡΠΎΡΠΎΡΠΈΠΏΠΈΡΠ° ΠΈΠ³ΡΠ° ΡΠΎ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΈΠ³ΡΠ°ΡΠΈ ΠΊΠΎΡΠΈΡΡΠ΅ΡΡΠΈ OpenResty.
- ΠΠΎΠ±Π°ΡΠ°ΡΡΠ΅ ΡΠΈΠ»ΡΡΠΈΡΠ°ΡΠ΅ (WAF). ΠΠΎ Π΄Π΅Π½Π΅ΡΠ½ΠΎ Π²ΡΠ΅ΠΌΠ΅ Π΅ ΠΌΠΎΠ΄Π΅ΡΠ½ΠΎ Π΄Π° ΡΠ΅ ΠΏΡΠ°Π²Π°Ρ ΡΠ΅ΠΊΠ°ΠΊΠ²ΠΈ Π·Π°ΡΡΠΈΡΠ½ΠΈ ΡΠΈΠ΄ΠΎΠ²ΠΈ Π½Π° Π²Π΅Π±-Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ; ΠΈΠΌΠ° ΠΌΠ½ΠΎΠ³Ρ ΡΡΠ»ΡΠ³ΠΈ ΡΡΠΎ Π³ΠΈ ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡΠ²Π°Π°Ρ. ΠΠΎΡΠΈΡΡΠ΅ΡΡΠΈ OpenResty, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΠΈ Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ Π·Π°ΡΡΠΈΡΠ΅Π½ ΡΠΈΠ΄ Π·Π° Π²Π΅Π±-Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ ΡΡΠΎ Π΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΎ ΠΈ Π»Π΅ΡΠ½ΠΎ ΡΠ΅ Π³ΠΈ ΡΠΈΠ»ΡΡΠΈΡΠ° Π±Π°ΡΠ°ΡΠ°ΡΠ° ΡΠΏΠΎΡΠ΅Π΄ Π²Π°ΡΠΈΡΠ΅ Π±Π°ΡΠ°ΡΠ°. ΠΠΊΠΎ ΠΈΠΌΠ°ΡΠ΅ Python, ΡΠΎΠ³Π°Ρ ΡΠ°Π·Π±ΠΈΡΠ°ΡΠ΅ Π΄Π΅ΠΊΠ° PHP Π΄Π΅ΡΠΈΠ½ΠΈΡΠΈΠ²Π½ΠΎ Π½Π΅ΠΌΠ° Π΄Π° Π²ΠΈ ΡΠ΅ ΠΈΠ½ΡΠ΅ΠΊΡΠΈΡΠ°, ΠΎΡΠ²Π΅Π½ Π°ΠΊΠΎ, ΡΠ΅ ΡΠ°Π·Π±ΠΈΡΠ°, Π½Π΅ Π³ΠΎ ΠΌΡΠ΅ΡΡΠ΅ΡΠ΅ ΠΊΠ°Π΄Π΅ Π±ΠΈΠ»ΠΎ ΠΎΠ΄ ΠΊΠΎΠ½Π·ΠΎΠ»Π°ΡΠ°. ΠΠ½Π°Π΅ΡΠ΅ Π΄Π΅ΠΊΠ° ΠΈΠΌΠ°ΡΠ΅ MySQL ΠΈ Python. ΠΠ΅ΡΠΎΡΠ°ΡΠ½ΠΎ, ΡΠΈΠ΅ Π±ΠΈ ΠΌΠΎΠΆΠ΅Π»Π΅ Π΄Π° ΡΠ΅ ΠΎΠ±ΠΈΠ΄Π°Ρ Π΄Π° Π½Π°ΠΏΡΠ°Π²Π°Ρ Π½Π΅ΠΊΠΎΡ Π²ΠΈΠ΄ Π½Π° ΠΏΡΠ΅ΠΌΠΈΠ½ΡΠ²Π°ΡΠ΅ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΠΌΠΈ ΠΈ Π΄Π° Π²Π½Π΅ΡΠ°Ρ Π½Π΅ΡΡΠΎ Π²ΠΎ Π±Π°Π·Π°ΡΠ° Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ. ΠΠ°ΡΠΎΠ°, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π±ΡΠ·ΠΎ ΠΈ Π΅Π²ΡΠΈΠ½ΠΎ Π΄Π° Π³ΠΈ ΡΠΈΠ»ΡΡΠΈΡΠ°ΡΠ΅ ΡΡΠ΄Π½ΠΈΡΠ΅ ΠΏΡΠ°ΡΠ°ΡΠ° Π²Π΅Π΄Π½Π°Ρ Π½Π° ΠΏΡΠ΅Π΄Π½Π°ΡΠ° ΡΡΡΠ°Π½Π°.
- ΠΠ°Π΅Π΄Π½ΠΈΡΠ° ΠΠΈΠ΄Π΅ΡΡΠΈ OpenResty Π΅ ΠΈΠ·Π³ΡΠ°Π΄Π΅Π½ Π½Π° NGINX, ΠΈΠΌΠ° Π±ΠΎΠ½ΡΡ - ΠΎΠ²Π° NGINX Π·Π°Π΅Π΄Π½ΠΈΡΠ°. Π’ΠΎΡ Π΅ ΠΌΠ½ΠΎΠ³Ρ Π³ΠΎΠ»Π΅ΠΌ, Π° ΠΏΡΠΈΡΡΠΎΠ΅Π½ Π΄Π΅Π» ΠΎΠ΄ ΠΏΡΠ°ΡΠ°ΡΠ°ΡΠ° ΡΡΠΎ ΡΠ΅ Π³ΠΈ ΠΈΠΌΠ°ΡΠ΅ Π½Π° ΠΏΠΎΡΠ΅ΡΠΎΠΊΠΎΡ Π²Π΅ΡΠ΅ ΡΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈ ΠΎΠ΄ Π·Π°Π΅Π΄Π½ΠΈΡΠ°ΡΠ° NGINX.
ΠΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ΅ΡΠΈ. ΠΡΠ΅ΡΠ° ΡΠ°Π·Π³ΠΎΠ²Π°ΡΠ°Π² ΡΠΎ ΠΌΠΎΠΌΡΠΈΡΠ΅ ΠΊΠΎΠΈ Π΄ΠΎΡΠ΄ΠΎΠ° Π½Π° Π΄Π΅Π½ΠΎΡ Π·Π° ΠΎΠ±ΡΠΊΠ° Π½Π° HighLoad++ ΠΈ ΡΠ»ΡΡΠ½Π°Π² Π΄Π΅ΠΊΠ° ΡΠ°ΠΌΠΎ Tarantool Π΅ Π½Π°ΠΏΠΈΡΠ°Π½ΠΎ Π½Π° ΠΡΠ°. ΠΠ²Π° Π½Π΅ Π΅ ΡΠΎΡΠ½ΠΎ, ΠΌΠ½ΠΎΠ³Ρ ΡΠ°Π±ΠΎΡΠΈ ΡΠ΅ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈ Π½Π° ΠΡΠ°. ΠΡΠΈΠΌΠ΅ΡΠΈ: OpenResty, Prosody XMPP ΡΠ΅ΡΠ²Π΅Ρ, Love2D ΠΈΠ³ΡΠ°ΡΠΊΠΈ ΠΌΠΎΡΠΎΡ, Lua Π½Π°ΠΏΠΈΡΠ°Π½Π° Π²ΠΎ Warcraft ΠΈ Π½Π° Π΄ΡΡΠ³ΠΈ ΠΌΠ΅ΡΡΠ°. ΠΠΌΠ° ΠΌΠ½ΠΎΠ³Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ΅ΡΠΈ Π½Π° Lua, ΡΠΈΠ΅ ΠΈΠΌΠ°Π°Ρ Π³ΠΎΠ»Π΅ΠΌΠ° ΠΈ ΠΎΠ΄Π³ΠΎΠ²ΠΎΡΠ½Π° Π·Π°Π΅Π΄Π½ΠΈΡΠ°. Π‘ΠΈΡΠ΅ ΠΌΠΎΠΈ ΠΏΡΠ°ΡΠ°ΡΠ° Π·Π° ΠΡΠ° Π±Π΅Π° ΡΠ΅ΡΠ΅Π½ΠΈ Π·Π° Π½Π΅ΠΊΠΎΠ»ΠΊΡ ΡΠ°ΡΠ°. ΠΠΎΠ³Π° ΠΏΠΈΡΡΠ²Π°ΡΠ΅ Π½Π° ΠΌΠ΅ΡΠ»ΠΈΠ½Π³ Π»ΠΈΡΡΠ°ΡΠ°, Π±ΡΠΊΠ²Π°Π»Π½ΠΎ Π²ΠΎ ΡΠΎΠΊ ΠΎΠ΄ Π½Π΅ΠΊΠΎΠ»ΠΊΡ ΠΌΠΈΠ½ΡΡΠΈ Π²Π΅ΡΠ΅ ΠΈΠΌΠ° ΠΊΡΠΏ ΠΎΠ΄Π³ΠΎΠ²ΠΎΡΠΈ, ΠΊΠΎΠΈ ΠΎΠΏΠΈΡΡΠ²Π°Π°Ρ ΡΡΠΎ ΠΈ ΠΊΠ°ΠΊΠΎ, ΡΡΠΎ Π΅ ΡΡΠΎ. Π’ΠΎΠ° Π΅ ΠΎΠ΄Π»ΠΈΡΠ½ΠΎ. ΠΠ° ΠΆΠ°Π», ΡΠ°ΠΊΠ²Π° ΡΡΠ±Π΅Π·Π½Π°, Π΄ΡΡ ΠΎΠ²Π½Π° Π·Π°Π΅Π΄Π½ΠΈΡΠ° ΡΠ° Π½Π΅ΠΌΠ° Π½Π°ΡΠ΅ΠΊΠ°Π΄Π΅.
ΠΠΎΡΡΠΎΠΈ GitHub Π·Π° OpenResty, ΠΊΠ°Π΄Π΅ ΡΡΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΎΡΠ²ΠΎΡΠΈΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Π°ΠΊΠΎ Π½Π΅ΡΡΠΎ Π΅ ΡΠΊΡΡΠ΅Π½ΠΎ. ΠΠΌΠ° ΠΌΠ΅ΡΠ»ΠΈΠ½Π³ Π»ΠΈΡΡΠ° Π½Π° Google Groups, ΠΊΠ°Π΄Π΅ ΡΡΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΠ°Π·Π³ΠΎΠ²Π°ΡΠ°ΡΠ΅ Π·Π° ΠΎΠΏΡΡΠΈ ΠΏΡΠ°ΡΠ°ΡΠ°, ΠΈΠΌΠ° ΠΌΠ΅ΡΠ»ΠΈΠ½Π³ Π»ΠΈΡΡΠ° Π½Π° ΠΊΠΈΠ½Π΅ΡΠΊΠΈ - Π½ΠΈΠΊΠΎΠ³Π°Ρ Π½Π΅ Π·Π½Π°Π΅ΡΠ΅, ΠΌΠΎΠΆΠ΅Π±ΠΈ Π½Π΅ Π·Π±ΠΎΡΡΠ²Π°ΡΠ΅ Π°Π½Π³Π»ΠΈΡΠΊΠΈ, Π½ΠΎ Π·Π½Π°Π΅ΡΠ΅ ΠΊΠΈΠ½Π΅ΡΠΊΠΈ.
Π Π΅Π·ΡΠ»ΡΠ°ΡΠΈΡΠ΅ ΠΎΠ΄
- Π‘Π΅ Π½Π°Π΄Π΅Π²Π°ΠΌ Π΄Π΅ΠΊΠ° ΡΡΠΏΠ΅Π°Π² Π΄Π° ΠΏΡΠ΅Π½Π΅ΡΠ°ΠΌ Π΄Π΅ΠΊΠ° OpenResty Π΅ ΠΌΠ½ΠΎΠ³Ρ ΡΠ΄ΠΎΠ±Π½Π° ΡΠ°ΠΌΠΊΠ° ΠΏΡΠΈΠ»Π°Π³ΠΎΠ΄Π΅Π½Π° Π·Π° Π²Π΅Π±.
- ΠΠΌΠ° Π½ΠΈΡΠΊΠ° Π±Π°ΡΠΈΠ΅ΡΠ° Π·Π° Π²Π»Π΅Π·, Π±ΠΈΠ΄Π΅ΡΡΠΈ ΠΊΠΎΠ΄ΠΎΡ Π΅ ΡΠ»ΠΈΡΠ΅Π½ Π½Π° ΠΎΠ½Π° ΡΡΠΎ Π³ΠΎ ΠΏΠΈΡΡΠ²Π°ΠΌΠ΅, ΡΠ°Π·ΠΈΠΊΠΎΡ Π΅ ΠΏΡΠΈΠ»ΠΈΡΠ½ΠΎ Π΅Π΄Π½ΠΎΡΡΠ°Π²Π΅Π½ ΠΈ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΠΈΡΡΠΈΡΠΊΠΈ.
- ΠΠ±Π΅Π·Π±Π΅Π΄ΡΠ²Π° Π°ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈ Π/Π Π±Π΅Π· ΠΏΠΎΠ²ΡΠ°ΡΠ½ΠΈ ΠΏΠΎΠ²ΠΈΡΠΈ, Π½Π΅ΠΌΠ° Π΄Π° ΠΈΠΌΠ°ΠΌΠ΅ Π½ΠΈΠΊΠ°ΠΊΠ²ΠΈ ΡΠ΅ΡΡΠ΅Π½ΠΈΠ½ΠΈ ΠΊΠ°ΠΊΠΎ ΡΡΠΎ ΠΏΠΎΠ½Π΅ΠΊΠΎΠ³Π°Ρ ΠΌΠΎΠΆΠ΅ΠΌΠ΅ Π΄Π° ΠΏΠΈΡΡΠ²Π°ΠΌΠ΅ Π²ΠΎ NodeJS.
- ΠΠΌΠ° Π»Π΅ΡΠ½ΠΎ ΡΠ°ΡΠΏΠΎΡΠ΅Π΄ΡΠ²Π°ΡΠ΅, Π±ΠΈΠ΄Π΅ΡΡΠΈ Π½ΠΈ ΡΡΠ΅Π±Π° ΡΠ°ΠΌΠΎ NGINX ΡΠΎ ΠΏΠΎΡΡΠ΅Π±Π½ΠΈΠΎΡ ΠΌΠΎΠ΄ΡΠ» ΠΈ Π½Π°ΡΠΈΠΎΡ ΠΊΠΎΠ΄, ΠΈ ΡΓ¨ ΡΠ°Π±ΠΎΡΠΈ Π²Π΅Π΄Π½Π°Ρ.
- ΠΠΎΠ»Π΅ΠΌΠ° ΠΈ ΠΎΠ΄Π³ΠΎΠ²ΠΎΡΠ½Π° Π·Π°Π΅Π΄Π½ΠΈΡΠ°.
ΠΠ΅ ΠΊΠ°ΠΆΠ°Π² Π΄Π΅ΡΠ°Π»Π½ΠΎ ΠΊΠ°ΠΊΠΎ ΡΠ΅ ΠΏΡΠ°Π²ΠΈ ΡΡΡΠΈΡΠ°ΡΠ΅ΡΠΎ, ΡΠ΅ ΠΏΠΎΠΊΠ°ΠΆΠ° Π΄Π΅ΠΊΠ° Π΅ ΠΌΠ½ΠΎΠ³Ρ Π΄ΠΎΠ»Π³Π° ΠΏΡΠΈΠΊΠ°Π·Π½Π°.
ΠΠΈ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΠΈΠΌΠ΅!

ΠΠ·Π²ΠΎΡ: www.habr.com
