Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ ΠΊΠ½ΠΈΠ³Π°

АрхитСктура ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ

. a wonderful book and a wonderful contribution to the industry. Grady Booch

АрхитСкторы ΠΏΡ€ΠΎΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ тысячи Π·Π΄Π°Π½ΠΈΠΉ ΠΈ строСний Π² процСссС своСй ΡƒΡ‡Π΅Π±Ρ‹ ΠΈ ΠΈΠ·ΡƒΡ‡Π°ΡŽΡ‚ сотни критичСских статСй ΠΎΠ± этих постройках, написанных мастСрами. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠ² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния Ρ…ΠΎΡ€ΠΎΡˆΠΎ Π·Π½Π°ΡŽΡ‚ Π½Π΅ большС Π΄ΡŽΠΆΠΈΠ½Ρ‹ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ Ρ‡Π°Ρ‰Π΅ всСго написанных ΠΈΠΌΠΈ самими, ΠΈ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΈΠ·ΡƒΡ‡Π°ΡŽΡ‚ Π½Π°ΠΈΠ»ΡƒΡ‡ΡˆΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, написанныС Π΄ΠΎ Π½ΠΈΡ…. Как Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, ΠΎΠ½ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‚ Ρ‡ΡƒΠΆΠΈΠ΅ ошибки, вмСсто Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡ΡƒΠΆΠΈΠ΅ достиТСния.

Если Π²Ρ‹ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΈ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ваши Π±ΠΎΠ»Π΅Π΅ ΠΎΠΏΡ‹Ρ‚Π½Ρ‹Π΅ ΠΊΠΎΠ»Π»Π΅Π³ΠΈ, эта ΠΊΠ½ΠΈΠ³Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡΠ»ΡƒΠΆΠΈΡ‚ΡŒ ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΌ Π½Π°Ρ‡Π°Π»ΠΎΠΌ. Если Π²Ρ‹ ΡƒΠΆΠ΅ ΠΎΠΏΡ‹Ρ‚Π½Ρ‹ΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΈ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ·Π½Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ мэтры Ρ€Π΅ΡˆΠ°ΡŽΡ‚ слоТныС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, эта ΠΊΠ½ΠΈΠ³Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π²Π°ΠΌ ΠΏΠΎΠΌΠΎΡ‡ΡŒ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: ΠΏΠ΅Ρ€Π΅Π²Π΅Π΄Π΅Π½Π½Ρ‹Π΅ Π³Π»Π°Π²Ρ‹ Π²Ρ‹Π΄Π΅Π»Π΅Π½Ρ‹ Π² ΠΎΠ³Π»Π°Π²Π»Π΅Π½ΠΈΠΈ ΠΆΠΈΡ€Π½Ρ‹ΠΌ ΡˆΡ€ΠΈΡ„Ρ‚ΠΎΠΌ. ВсС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ссылки Π²Π΅Π΄ΡƒΡ‚ Π½Π° ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ англоязычный сайт.

Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ ΠΊΠ½ΠΈΠ³Π°. cover1. Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ ΠΊΠ½ΠΈΠ³Π° Ρ„ΠΎΡ‚ΠΎ. Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ ΠΊΠ½ΠΈΠ³Π°-cover1. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ ΠΊΠ½ΠΈΠ³Π°. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° cover1. . a wonderful book and a wonderful contribution to the industry. Grady Booch

ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ

4 Ρ‚ΠΎΠΌ «500 строк ΠΈΠ»ΠΈ мСньшС»

1.Blockcode: Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΠΎΠ΅ срСдство Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ программированияDethe Elza
ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄: Н.Π ΠΎΠΌΠΎΠ΄Π°Π½ΠΎΠ²
2.БистСма Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎΠΉ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈMalini Das
ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄: Н.Π ΠΎΠΌΠΎΠ΄Π°Π½ΠΎΠ²
3.ΠšΠ»Π°ΡΡ‚Π΅Ρ€ΠΈΠ·Π°Ρ†ΠΈΡ согласно консСнсусуDustin J. Mitchell
ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄: Н.Π ΠΎΠΌΠΎΠ΄Π°Π½ΠΎΠ²
4.Contingent: ДинамичСская систСма сборкиBrandon Rhodes and Daniel Rocco
ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄: Н.Π ΠΎΠΌΠΎΠ΄Π°Π½ΠΎΠ²
5.Π’Π΅Π± Π±ΠΎΡ‚, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠΉ сопрограммы asyncioA. Jesse Jiryu Davis and Guido van Rossum,
ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄: Н.Π ΠΎΠΌΠΎΠ΄Π°Π½ΠΎΠ²
6.Dagoba: an in-memory graph databaseDann Toliver
ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄:
7.DBDB: Dog Bed DatabaseTaavi Burns,
ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄:
8.An Event-Driven Web FrameworkLeo Zovic,
ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄:
9.A Flow Shop SchedulerDr. Christian Muise
ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄:
10.Π‘Π°Π·Π° с «Π°Ρ€Ρ…СологичСским» ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠΌ хранСния Π΄Π°Π½Π½Ρ‹Ρ…Yoav Rubin
ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄: Н.Π ΠΎΠΌΠΎΠ΄Π°Π½ΠΎΠ²
11.Π”Π΅Π»Π°Π΅ΠΌ свои собствСнныС Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Ρ‹ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉCate Huston
ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄: Н.Π ΠΎΠΌΠΎΠ΄Π°Π½ΠΎΠ²
12.Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ языка Python, написанный Π½Π° языкС PythonAllison Kaptur
ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄: Н.Π ΠΎΠΌΠΎΠ΄Π°Π½ΠΎΠ²
13.A 3D ModellerErick Dransch
ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄:
14.ΠŸΡ€ΠΎΡΡ‚Π°Ρ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Π°Ρ модСльCarl Friedrich Bolz
ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄: Н.Π ΠΎΠΌΠΎΠ΄Π°Π½ΠΎΠ²
15.БистСма распознавания символов (OCR)Marina Samuel
ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄: Н.Π ΠΎΠΌΠΎΠ΄Π°Π½ΠΎΠ²
16.Π¨Π°Π³ΠΎΠΌΠ΅Ρ€ Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ ΠΌΠΈΡ€Π΅Dessy Daskalov
ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄: Н.Π ΠΎΠΌΠΎΠ΄Π°Π½ΠΎΠ²
17.ΠšΡ€ΠΎΡΡ-Π΄ΠΎΠΌΠ΅Π½Π½Ρ‹Π΅ ограничСнияEunsuk Kang, Santiago Perez De Rosso, and Daniel Jackson
ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄: Н.Π ΠΎΠΌΠΎΠ΄Π°Π½ΠΎΠ²
18.A Rejection SamplerJessica B. Hamrick
ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄:
19.Π­Π»Π΅ΠΊΡ‚Ρ€ΠΎΠ½Π½Ρ‹Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ для Π²Π΅Π±Π°Audrey Tang
ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄: Н.Π ΠΎΠΌΠΎΠ΄Π°Π½ΠΎΠ²
20.БтатичСский Π°Π½Π°Π»ΠΈΠ·Leah Hanson
ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄: Н.Π ΠΎΠΌΠΎΠ΄Π°Π½ΠΎΠ²
21.Π”Π²ΠΈΠΆΠΎΠΊ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с шаблонамиNed Batchelder
ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄: Н.Π ΠΎΠΌΠΎΠ΄Π°Π½ΠΎΠ²
22.ΠŸΡ€ΠΎΡΡ‚ΠΎΠΉ Π²Π΅Π±-сСрвСрGreg Wilson
ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄: Н.Π ΠΎΠΌΠΎΠ΄Π°Π½ΠΎΠ²

О Π»ΠΈΡ†Π΅Π½Π·ΠΈΠΈ ΠΈ Π΄ΠΎΡ…ΠΎΠ΄Π°Ρ… ΠΎΡ‚ ΠΊΠ½ΠΈΠ³

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

📑 АрхитСктура ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ OpenSource

На эту Π·Π°ΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΊΠ½ΠΈΠ³Ρƒ β€” The Architecture of Open Source Applications (Π²Π΅Ρ€Π½Π΅Π΅ Π΄Π°ΠΆΠ΅ сборник статСй) я наткнулся достаточно Π΄Π°Π²Π½ΠΎ. ΠžΡ‡Π΅Π½ΡŒ полСзная, ΠΏΠΎΠ·Π½Π°Π²Π°Ρ‚Π΅Π»ΡŒΠ½Π°Ρ ΠΊΠ½ΠΈΠ³Π°, Π½ΠΎ Π½Π° английском языкС. А совсСм Π½Π΅Π΄Π°Π²Π½ΠΎ Π²Ρ‹ΡΡΠ½ΠΈΠ»ΠΎΡΡŒ, Ρ‡Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄. И ΠΎΡ‡Π΅Π½ΡŒ Π΄Π°ΠΆΠ΅ Π½Π΅ΠΏΠ»ΠΎΡ…ΠΎΠΉ. Π’ΠΎΡ‚ Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅.

…a wonderful book and a wonderful contribution to the industry. Grady Booch

АрхитСкторы ΠΏΡ€ΠΎΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ тысячи Π·Π΄Π°Π½ΠΈΠΉ ΠΈ строСний Π² процСссС своСй ΡƒΡ‡Π΅Π±Ρ‹ ΠΈ ΠΈΠ·ΡƒΡ‡Π°ΡŽΡ‚ сотни критичСских статСй ΠΎΠ± этих постройках, написанных мастСрами. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠ² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния Ρ…ΠΎΡ€ΠΎΡˆΠΎ Π·Π½Π°ΡŽΡ‚ Π½Π΅ большС Π΄ΡŽΠΆΠΈΠ½Ρ‹ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ Ρ‡Π°Ρ‰Π΅ всСго написанных ΠΈΠΌΠΈ самими, ΠΈ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΈΠ·ΡƒΡ‡Π°ΡŽΡ‚ Π½Π°ΠΈΠ»ΡƒΡ‡ΡˆΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, написанныС Π΄ΠΎ Π½ΠΈΡ…. Как Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, ΠΎΠ½ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‚ Ρ‡ΡƒΠΆΠΈΠ΅ ошибки, вмСсто Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡ΡƒΠΆΠΈΠ΅ достиТСния.

Наша Ρ†Π΅Π»ΡŒ β€” ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ эту ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ. Π’ этих Π΄Π²ΡƒΡ… ΠΊΠ½ΠΈΠ³Π°Ρ… Π°Π²Ρ‚ΠΎΡ€Ρ‹ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ… дюТин ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ Ρ€Π°ΡΡΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ ΠΎ структурС созданных ΠΈΠΌΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΈ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ эти ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ создавались. ΠšΠ°ΠΊΠΎΠ²Ρ‹ ΠΈΡ… основныС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹? Как ΠΎΠ½ΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‚? И Ρ‡Ρ‚ΠΎ ΠΎΡ‚ΠΊΡ€Ρ‹Π»ΠΈ для сСбя ΠΈΡ… создатСли Π² процСссС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ? Π’ ΠΎΡ‚Π²Π΅Ρ‚Π°Ρ… Π½Π° эти вопросы Π°Π²Ρ‚ΠΎΡ€Ρ‹ статСй, собранных Π² Π΄Π°Π½Π½Ρ‹Ρ… ΠΊΠ½ΠΈΠ³Π°Ρ…, Π΄Π°ΡŽΡ‚ Π²Π°ΠΌ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ Π² Ρ‚ΠΎ, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ творят.

Если Π²Ρ‹ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΈ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ваши Π±ΠΎΠ»Π΅Π΅ ΠΎΠΏΡ‹Ρ‚Π½Ρ‹Π΅ ΠΊΠΎΠ»Π»Π΅Π³ΠΈ, эта ΠΊΠ½ΠΈΠ³Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡΠ»ΡƒΠΆΠΈΡ‚ΡŒ ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΌ Π½Π°Ρ‡Π°Π»ΠΎΠΌ. Если Π²Ρ‹ ΡƒΠΆΠ΅ ΠΎΠΏΡ‹Ρ‚Π½Ρ‹ΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΈ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ·Π½Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ мэтры Ρ€Π΅ΡˆΠ°ΡŽΡ‚ слоТныС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, эта ΠΊΠ½ΠΈΠ³Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π²Π°ΠΌ ΠΏΠΎΠΌΠΎΡ‡ΡŒ.

Π‘Π»Π΅Π΄ΠΈΡ‚Π΅ Π·Π° обновлСниями Π² нашСм Π±Π»ΠΎΠ³Π΅ http://aosabook.org/blog/, ΠΈΠ»ΠΈ Π² Π’Π²ΠΈΡ‚Ρ‚Π΅Ρ€Π΅ @aosabook ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π·Π°ΠΊΠ»Π°Π΄ΠΊΡƒ #aosa.

June 6, 2012: The Architecture of Open Source Applications, Volume II доступна для Kindle. Π‘ΠΊΠΎΡ€ΠΎ ΠΎΠ½Π° появится Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ epub. Π’Π΅ΡΡŒ Π΄ΠΎΡ…ΠΎΠ΄ ΠΎΡ‚ ΠΏΡ€ΠΎΠ΄Π°ΠΆ ΠΊΠ½ΠΈΠ³ΠΈ Π² любом Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ направляСтся Π² ΠΏΠΎΠ»ΡŒΠ·Ρƒ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ Amnesty International.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

ΠŸΠ΅Ρ€Π΅Π²ΠΎΠ΄ Π³Π»Π°Π²Ρ‹ 16 ΠΈΠ· ΠΊΠ½ΠΈΠ³ΠΈ «АрхитСктура ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌΒ»

Николай Π ΠΎΠΌΠΎΠ΄Π°Π½ΠΎΠ² ΠΏΠ΅Ρ€Π΅Π²Π΅Π» Π΅Ρ‰Π΅ ΠΎΠ΄Π½Ρƒ Π³Π»Π°Π²Ρƒ ΠΈΠ· Π΄Π²ΡƒΡ…Ρ‚ΠΎΠΌΠ½ΠΎΠΉ ΠΊΠ½ΠΈΠ³ΠΈ Β«The Architecture of Open Source ApplicationsΒ» («АрхитСктура ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌΒ»). Π’ этих Π΄Π²ΡƒΡ… ΠΊΠ½ΠΈΠ³Π°Ρ… Π°Π²Ρ‚ΠΎΡ€Ρ‹ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ… дюТин ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ Ρ€Π°ΡΡΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ ΠΎ структурС созданных ΠΈΠΌΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΈ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ эти ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ создавались. ΠšΠ°ΠΊΠΎΠ²Ρ‹ ΠΈΡ… основныС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹? Как ΠΎΠ½ΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‚? И Ρ‡Ρ‚ΠΎ ΠΎΡ‚ΠΊΡ€Ρ‹Π»ΠΈ для сСбя ΠΈΡ… создатСли Π² процСссС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ? Π’ ΠΎΡ‚Π²Π΅Ρ‚Π°Ρ… Π½Π° эти вопросы Π°Π²Ρ‚ΠΎΡ€Ρ‹ статСй, собранных Π² Π΄Π°Π½Π½Ρ‹Ρ… ΠΊΠ½ΠΈΠ³Π°Ρ…, Π΄Π°ΡŽΡ‚ Π²Π°ΠΌ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ Π² Ρ‚ΠΎ, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ творят.

Если Π²Ρ‹ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΈ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ваши Π±ΠΎΠ»Π΅Π΅ ΠΎΠΏΡ‹Ρ‚Π½Ρ‹Π΅ ΠΊΠΎΠ»Π»Π΅Π³ΠΈ, эта ΠΊΠ½ΠΈΠ³Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡΠ»ΡƒΠΆΠΈΡ‚ΡŒ ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΌ Π½Π°Ρ‡Π°Π»ΠΎΠΌ. Если Π²Ρ‹ ΡƒΠΆΠ΅ ΠΎΠΏΡ‹Ρ‚Π½Ρ‹ΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΈ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ·Π½Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ мэтры Ρ€Π΅ΡˆΠ°ΡŽΡ‚ слоТныС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, эта ΠΊΠ½ΠΈΠ³Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π²Π°ΠΌ ΠΏΠΎΠΌΠΎΡ‡ΡŒ.

Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ ΠΊΠ½ΠΈΠ³Π°. 100981: 689437663. Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ ΠΊΠ½ΠΈΠ³Π° Ρ„ΠΎΡ‚ΠΎ. Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ ΠΊΠ½ΠΈΠ³Π°-100981: 689437663. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ ΠΊΠ½ΠΈΠ³Π°. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 100981: 689437663. . a wonderful book and a wonderful contribution to the industry. Grady Booch

Π­Ρ‚ΠΎ Π½Π°Π²Π΅Ρ€Π½ΠΎΠ΅ Π½Π΅ΠΈΠΌΠΎΠ²Π΅Ρ€Π½ΠΎ ΠΊΡ€ΡƒΡ‚ΠΎ, пСрСвСсти ΠΎΠ΄Π½Ρƒ Π³Π»Π°Π²Ρƒ. ΠŸΡ€ΠΈΡ‡Ρ‘ΠΌ Π³Π»Π°Π²Ρƒ ΠΏΡ€ΠΎ ΠΏΠ»Π°Π³ΠΈΠ½ ΠΊ ΠΌΠΎΠ·ΠΈΠ»Π»Π΅.

Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ ΠΊΠ½ΠΈΠ³Π°. 43484: 605269286. Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ ΠΊΠ½ΠΈΠ³Π° Ρ„ΠΎΡ‚ΠΎ. Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ ΠΊΠ½ΠΈΠ³Π°-43484: 605269286. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ ΠΊΠ½ΠΈΠ³Π°. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 43484: 605269286. . a wonderful book and a wonderful contribution to the industry. Grady Booch

К Ρ‡Π΅ΠΌΡƒ Π²ΠΎΠΎΠ±Ρ‰Π΅ эта ΠΊΠ½ΠΈΠ³Π°?

А ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈ Π½Π΅ ΠΏΠΎΠΌΠΎΡ‡ΡŒ =)

Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ ΠΊΠ½ΠΈΠ³Π°. p. Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ ΠΊΠ½ΠΈΠ³Π° Ρ„ΠΎΡ‚ΠΎ. Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ ΠΊΠ½ΠΈΠ³Π°-p. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ ΠΊΠ½ΠΈΠ³Π°. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° p. . a wonderful book and a wonderful contribution to the industry. Grady Booch

«АрхитСктура ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌΒ»

ΠšΠΎΡΡ‚Ρ‹Π»ΡŒ Π½Π° костылС.

Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ ΠΊΠ½ΠΈΠ³Π°. 104584:1754569388. Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ ΠΊΠ½ΠΈΠ³Π° Ρ„ΠΎΡ‚ΠΎ. Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ ΠΊΠ½ΠΈΠ³Π°-104584:1754569388. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ ΠΊΠ½ΠΈΠ³Π°. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 104584:1754569388. . a wonderful book and a wonderful contribution to the industry. Grady Booch

эта Π½ΠΎΠ²ΠΎΡΡ‚ΡŒ для Ρ‚ΠΎΠ³ΠΎ Π±Π΅Π΄ΠΎΠ»Π°Π³ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ‚ΡƒΡ‚ ΡΠΏΡ€Π°ΡˆΠΈΠ²Π°Π», ΠΊΠ°ΠΊ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π΅Π²Π·Π»Π°ΠΌΡ‹Π²Π°Π΅ΠΌΠΎΠ΅ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΎΠ΅ ПО, ΠΏΠΎΠ΄ линакс?

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

АрхитСктура open source-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ: Как Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ nginx

Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ ΠΊΠ½ΠΈΠ³Π°. image loader. Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ ΠΊΠ½ΠΈΠ³Π° Ρ„ΠΎΡ‚ΠΎ. Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ ΠΊΠ½ΠΈΠ³Π°-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ ΠΊΠ½ΠΈΠ³Π°. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loader. . a wonderful book and a wonderful contribution to the industry. Grady Booch

ΠœΡ‹ Π² Β«Π›Π°Ρ‚Π΅Ρ€Π΅Β» занимаСмся созданиСм Π±ΠΈΠ»Π»ΠΈΠ½Π³Π° для ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² связи ΠΈ рассказываСм Π½Π° Π₯Π°Π±Ρ€Π΅ ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ своСго ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ΅ΠΌ интСрСсныС тСхничСскиС ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π½Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹. И сСгодня ΠΌΡ‹ прСдставляСм Π²Π°ΡˆΠ΅ΠΌΡƒ вниманию Π°Π΄Π°ΠΏΡ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· Π³Π»Π°Π² ΠΊΠ½ΠΈΠ³ΠΈ «АрхитСктура open-source-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉΒ», Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ прСдпосылки появлСния, Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° ΠΈ организация Ρ€Π°Π±ΠΎΡ‚Ρ‹ популярного Π²Π΅Π±-сСрвСра nginx.

Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ многопоточности

Π’ наши Π΄Π½ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚ ΠΏΡ€ΠΎΠ½ΠΈΠΊ ΠΏΠΎΠ²ΡΡŽΠ΄Ρƒ, ΠΈ ΠΎΡ‡Π΅Π½ΡŒ слоТно ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ сСбС, Ρ‡Ρ‚ΠΎ Π΄Π°ΠΆΠ΅ 10-15 Π»Π΅Ρ‚ Π½Π°Π·Π°Π΄ всСмирная ΡΠ΅Ρ‚ΡŒ Π±Ρ‹Π»Π° ΠΊΡƒΠ΄Π° ΠΌΠ΅Π½Π΅Π΅ Ρ€Π°Π·Π²ΠΈΡ‚ΠΎΠΉ. Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚ ΡΠ²ΠΎΠ»ΡŽΡ†ΠΈΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π» ΠΎΡ‚ простых HTML-сайтов с ΠΊΠ»ΠΈΠΊΠ°Π±Π΅Π»ΡŒΠ½Ρ‹ΠΌ тСкстом, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΡ… Π½Π° Π²Π΅Π±-сСрвСрах NCSA ΠΈ Apache, Π² постоянно Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΡƒΡŽ срСду ΠΊΠΎΠΌΠΌΡƒΠ½ΠΈΠΊΠ°Ρ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΌΠΈΠ»Π»ΠΈΠ°Ρ€Π΄Ρ‹ людСй ΠΏΠΎ всСму ΠΌΠΈΡ€Ρƒ. Число постоянно ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Ρ… ΠΊ сСти устройств растСт, ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚-Π»Π°Π½Π΄ΡˆΠ°Ρ„Ρ‚ мСняСтся, способствуя ΠΏΠ΅Ρ€Π΅Ρ‚Π΅ΠΊΠ°Π½ΠΈΡŽ Π² ΠΎΠ½Π»Π°ΠΉΠ½ Ρ†Π΅Π»Ρ‹Ρ… отраслСй экономики. Онлайн-сСрвисы становятся всС Π±ΠΎΠ»Π΅Π΅ слоТными, Π° для ΠΈΡ… ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ трСбуСтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½ΠΎΠ³ΠΎ получСния Π½ΡƒΠΆΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ. АспСкты бСзопасности ΠΎΠ½Π»Π°ΠΉΠ½-бизнСса Ρ‚Π°ΠΊΠΆΠ΅ сущСствСнно измСнились. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π½Ρ‹Π½Π΅ΡˆΠ½ΠΈΠ΅ сайты Π³ΠΎΡ€Π°Π·Π΄ΠΎ слоТнСС, Ρ‡Π΅ΠΌ Ρ€Π°Π½Π΅Π΅, ΠΈ Π² ΠΎΠ±Ρ‰Π΅ΠΌ случаС трСбуСтся ΠΊΡƒΠ΄Π° большС ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€Π½Ρ‹Ρ… усилий для обСспСчСния ΠΈΡ… устойчивости ΠΈ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ.

Одним ΠΈΠ· Π³Π»Π°Π²Π½Ρ‹Ρ… Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² для Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠ² сайтов Π²ΠΎ всС Π²Ρ€Π΅ΠΌΠ΅Π½Π° Π±Ρ‹Π»Π° ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ. Π‘ Π½Π°Ρ‡Π°Π»Π° эры Π²Π΅Π±-сСрвисов ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ многопоточности постоянно растСт. БСгодня популярный сайт ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΎΠ±ΡΠ»ΡƒΠΆΠΈΠ²Π°Ρ‚ΡŒ сотни тысяч ΠΈ Π΄Π°ΠΆΠ΅ ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Ρ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, ΠΈ этим Π½ΠΈΠΊΠΎΠ³ΠΎ Π½Π΅ ΡƒΠ΄ΠΈΠ²ΠΈΡ‚ΡŒ. Π•Ρ‰Π΅ Π½Π΅ Ρ‚Π°ΠΊ Π΄Π°Π²Π½ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ Π±Ρ‹Π»Π° Π½ΡƒΠΆΠ½Π° для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹ΠΌΠΈ ADSL ΠΈΠ»ΠΈ dial-up-ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡΠΌΠΈ. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΆΠ΅ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ Π½ΡƒΠΆΠ½Π° для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹ΠΌΠΈ устройствами ΠΈ Π½ΠΎΠ²Ρ‹ΠΌΠΈ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°ΠΌΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ постоянного ΠΈ быстрого соСдинСния β€” ΠΊΠ»ΠΈΠ΅Π½Ρ‚ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ обновлСния Ρ‚Π²ΠΈΡ‚ΠΎΠ², новостСй, ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΈΠ· Π»Π΅Π½Ρ‚Ρ‹ соцсСтСй ΠΈ Ρ‚.ΠΏ. Π•Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ Π²Π°ΠΆΠ½Ρ‹ΠΉ Ρ„Π°ΠΊΡ‚ΠΎΡ€, Π²Π»ΠΈΡΡŽΡ‰ΠΈΠΉ Π½Π° ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ β€” это измСнившССся ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ для ускорСния Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ сайта ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‚ ΠΎΡ‚ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ… Π΄ΠΎ ΡˆΠ΅ΡΡ‚ΠΈ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… соСдинСний ΠΊ Π½Π΅ΠΌΡƒ.

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅ простой Apache-сСрвСр, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠ΅ ΠΎΡ‚Π²Π΅Ρ‚Ρ‹ Π² 100 ΠšΠ±Π°ΠΉΡ‚ β€” простая Π²Π΅Π±-страница с тСкстом ΠΈΠ»ΠΈ изобраТСниями. На Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΡŽ ΠΈ отрисовку страницы ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ доля сСкунды, Π½ΠΎ Π½Π° Π΅Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Ρƒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρƒ потрСбуСтся 10 сСкунд ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ полосы пропускания 80 ΠΊΠ±ΠΈΡ‚/с. Π’Π΅Π±-сСрвСр смоТСт ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ быстро Β«Π²Ρ‹Ρ‚ΡΠ½ΡƒΡ‚ΡŒΒ» 100 ΠΊΠΈΠ»ΠΎΠ±Π°ΠΉΡ‚ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π°, Π° Π·Π°Ρ‚Π΅ΠΌ 10 сСкунд ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ ΠΏΠ΅Ρ€Π΅ΡΡ‹Π»Π°Ρ‚ΡŒ ΠΈΡ… ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρƒ. А Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ Ρƒ вас 1000 ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Ρ… ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ запросили ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚. Если для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° трСбуСтся Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ 1 Мб Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ памяти, Ρ‚ΠΎ всСго понадобится 1 Π³ΠΈΠ³Π°Π±Π°ΠΉΡ‚ памяти для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ 1000 ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² 100 ΠΊΠΈΠ»ΠΎΠ±Π°ΠΉΡ‚ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π°.

Π’ случаС постоянных соСдинСний ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ многопоточности встаСт Π΅Ρ‰Π΅ Π±ΠΎΠ»Π΅Π΅ остро, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ Π·Π°Π΄Π΅Ρ€ΠΆΠ΅ΠΊ, связанных с установлСниСм Π½ΠΎΠ²ΠΎΠ³ΠΎ HTTP-соСдинСния, ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΡΡ‚Π°Π²Π°Ρ‚ΡŒΡΡ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹ΠΌΠΈ.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Π²ΠΎΠ·Ρ€ΠΎΡΡˆΠΈΠ΅ ΠΎΠ±ΡŠΡ‘ΠΌΡ‹ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ, связанныС с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ Π°ΡƒΠ΄ΠΈΡ‚ΠΎΡ€ΠΈΠΈ ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π° ΠΈ, ΠΊΠ°ΠΊ слСдствиС, ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΠ΅ΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ многопоточности, Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ сайта Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΡΡ‚ΠΎΡΡ‚ΡŒ ΠΈΠ· ΠΎΡ‡Π΅Π½ΡŒ эффСктивных Π±Π»ΠΎΠΊΠΎΠ². Π’ этом ΡƒΡ€Π°Π²Π½Π΅Π½ΠΈΠΈ Π²Π°ΠΆΠ½Ρ‹ всС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ β€” ΠΆΠ΅Π»Π΅Π·ΠΎ (CPU, ΠΏΠ°ΠΌΡΡ‚ΡŒ, диски), сСтСвая Π΅ΠΌΠΊΠΎΡΡ‚ΡŒ, Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° прилоТСния ΠΈ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° Π΄Π°Π½Π½Ρ‹Ρ… β€” ΠΎΠ΄Π½Π°ΠΊΠΎ клиСнтскиС запросы ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ΡΡ ΠΈ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΈΠΌΠ΅Π½Π½ΠΎ Π²Π΅Π±-сСрвСром. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΠ±Π»Π°Π΄Π°Ρ‚ΡŒ способностями ΠΊ Π½Π΅Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΌΡƒ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ с растущим числом ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… соСдинСний ΠΈ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΡ‹Ρ… Π² сСкунду запросов.

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Apache

Π’Π΅Π±-сСрвСр Apache Π΄ΠΎ сих ΠΏΠΎΡ€ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ Π²ΠΈΠ΄Π½ΠΎΠ΅ мСсто Π² ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π΅. ΠšΠΎΡ€Π½ΠΈ этого ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° уходят Π² Π½Π°Ρ‡Π°Π»ΠΎ 1990-Ρ… Π³ΠΎΠ΄ΠΎΠ², ΠΈ ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Π΅Π³ΠΎ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° Π±Ρ‹Π»Π° Π·Π°Ρ‚ΠΎΡ‡Π΅Π½Π° ΠΏΠΎΠ΄ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΎΠ²Π°Π²ΡˆΠΈΠ΅ Ρ‚ΠΎΠ³Π΄Π° систСмы ΠΈ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠ΅ обСспСчСниС, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ±Ρ‰ΡƒΡŽ ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ развития ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π°. Π’ΠΎΠ³Π΄Π° Π²Π΅Π±-сайт, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, прСдставлял ΠΈΠ· сСбя ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ физичСский сСрвСр, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Π» СдинствСнный экзСмпляр Apache. К Π½Π°Ρ‡Π°Π»Ρƒ двухтысячных стало ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ модСль с СдинствСнным физичСским сСрвСром Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ эффСктивно Ρ€Π΅ΠΏΠ»ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π° для удовлСтворСния Π½ΡƒΠΆΠ΄ растущих Π²Π΅Π±-сСрвисов. НСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Apache являСтся Π½Π΅ΠΏΠ»ΠΎΡ…ΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΎΠΉ для Π΄Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠΈΡ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΎΠΊ, ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ ΠΎΠ½ Π±Ρ‹Π» спроСктирован для создания ΠΊΠΎΠΏΠΈΠΈ Π²Π΅Π±-сСрвСра для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π½ΠΎΠ²ΠΎΠ³ΠΎ соСдинСния, Ρ‡Ρ‚ΠΎ Π² соврСмСнных условиях Π½Π΅ позволяСт Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠΉ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΠΈ.

Π’ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌ счСтС Π²ΠΎΠΊΡ€ΡƒΠ³ Apache Ρ€Π°Π·Π²ΠΈΠ»Π°ΡΡŒ мощная экосистСма сторонних сСрвисов, Ρ‡Ρ‚ΠΎ позволяСт Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ практичСски Π»ΡŽΠ±Ρ‹Π΅ инструмСнты для создания ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Но Ρƒ всСго Π΅ΡΡ‚ΡŒ Ρ†Π΅Π½Π°, ΠΈ Π² Π΄Π°Π½Π½ΠΎΠΌ случаС Π·Π° большоС количСство инструмСнтов для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с СдинствСнным ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΌ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠΌ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ€Π°ΡΠΏΠ»Π°Ρ‡ΠΈΠ²Π°Ρ‚ΡŒΡΡ мСньшими возмоТностями ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ.

Π’Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹Π΅ основанныС Π½Π° Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌΠΈ ΠΈΠ»ΠΈ процСссами ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… соСдинСний ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°ΡŽΡ‚ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ соСдинСния с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ процСсса ΠΈΠ»ΠΈ ΠΏΠΎΡ‚ΠΎΠΊΠ° ΠΈ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π°. Π’ зависимости ΠΎΡ‚ прилоТСния Ρ‚Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΊΡ€Π°ΠΉΠ½Π΅ нСэффСктивным с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния Π·Π°Ρ‚Ρ€Π°Ρ‚ рСсурсов процСссора ΠΈ памяти. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ процСсса ΠΈΠ»ΠΈ ΠΏΠΎΡ‚ΠΎΠΊΠ° Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠΈ Π½ΠΎΠ²ΠΎΠΉ срСды запуска, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ памяти стСка ΠΈ ΠΊΡƒΡ‡ΠΈ, Π° Ρ‚Π°ΠΊΠΆΠ΅ создания Π½ΠΎΠ²ΠΎΠ³ΠΎ контСкста выполнСния. На всС это тратится Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ процСссорноС врСмя, Ρ‡Ρ‚ΠΎ Π² ΠΈΡ‚ΠΎΠ³Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌ с ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΈΠ·-Π·Π° ΠΈΠ·Π±Ρ‹Ρ‚ΠΎΡ‡Π½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ контСкста. ВсС эти ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π² ΠΏΠΎΠ»Π½ΠΎΠΉ ΠΌΠ΅Ρ€Π΅ ΠΏΡ€ΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ использовании Π²Π΅Π±-сСрвСров старой Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Apache.

Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ ΠΊΠ½ΠΈΠ³Π°. image loader. Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ ΠΊΠ½ΠΈΠ³Π° Ρ„ΠΎΡ‚ΠΎ. Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ ΠΊΠ½ΠΈΠ³Π°-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ ΠΊΠ½ΠΈΠ³Π°. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loader. . a wonderful book and a wonderful contribution to the industry. Grady Booch

ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΎΠ΅ сравнСниС Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π΄Π²ΡƒΡ… ΠΏΠΎΠΏΡƒΠ»ΡΡ€Π½Π΅ΠΉΡˆΠΈΡ… Π²Π΅Π±-сСрвСров ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ΠΎ Π½Π° Π₯Π°Π±Ρ€Π΅ Π² этом ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π΅.

ΠžΠ±Π·ΠΎΡ€ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ Π²Π΅Π±-сСрвСра nginx

Π‘ самого Π½Π°Ρ‡Π°Π»Π° своСго сущСствования nginx Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Π» ΠΈΠ³Ρ€Π°Ρ‚ΡŒ Ρ€ΠΎΠ»ΡŒ спСциализированного инструмСнта, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅Π³ΠΎ Π΄ΠΎΡΡ‚ΠΈΡ‡ΡŒ Π±ΠΎΠ»Π΅Π΅ высокой ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈ экономичности использования сСрвСрных рСсурсов, ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ позволяя ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡ‚ΡŒ динамичСский рост Π²Π΅Π±-сайта. Π’ ΠΈΡ‚ΠΎΠ³Π΅ nginx ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ» Π°ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½Π½ΡƒΡŽ, ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΡƒΡŽ, событийно-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ.

Nginx Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΠ»Π΅ΠΊΡΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ Π½ΠΎΡ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ событий, назначая ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌ процСссам. БоСдинСния ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ эффСктивного Ρ†ΠΈΠΊΠ»Π° выполнСния с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ количСства ΠΎΠ΄Π½ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½Ρ‹Ρ… процСссов, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Ρ… worker’ами. Π’Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ worker nginx ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ тысячи ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… соСдинСний ΠΈ запросов Π² сСкунду.

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° ΠΊΠΎΠ΄Π°

Worker Π² nginx Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ядро ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ. Π―Π΄Ρ€ΠΎ nginx ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅ Ρ†ΠΈΠΊΠ»Π° выполнСния ΠΈ исполнСния подходящих сСкций ΠΊΠΎΠ΄Π° ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ шагС ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ процСсса. ΠœΠΎΠ΄ΡƒΠ»ΠΈ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ уровня ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ Ρ‡ΠΈΡ‚Π°ΡŽΡ‚ ΠΈ ΠΏΠΈΡˆΡƒΡ‚ Π² ΡΠ΅Ρ‚ΡŒ ΠΈ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅, Ρ‚Ρ€Π°Π½ΡΡ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΡŽΡ‚ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚, ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡŽΡ‚ ΠΈΡΡ…ΠΎΠ΄ΡΡ‰ΡƒΡŽ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡŽ ΠΈ, Π² случаС Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ прокси, ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ запросы Π²Ρ‹ΡˆΠ΅ΡΡ‚ΠΎΡΡ‰ΠΈΠΌ сСрвСрам.

ΠœΠΎΠ΄ΡƒΠ»ΡŒΠ½Π°Ρ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° nginx позволяСт Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ Ρ€Π°ΡΡˆΠΈΡ€ΡΡ‚ΡŒ Π½Π°Π±ΠΎΡ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π²Π΅Π±-сСрвСра Π±Π΅Π· нСобходимости ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΊΠΎΠ΄Π° Π΅Π³ΠΎ ядра. БущСствуСт нСсколько разновидностСй ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ nginx β€” ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ядра, ΠΌΠΎΠ΄ΡƒΠ»ΠΈ событий, Ρ„Π°Π·ΠΎΠ²Ρ‹Π΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ, ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρ‹, Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Ρ‹, балансировщики Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈ Ρ‚.ΠΏ. ΠŸΡ€ΠΈ этом nginx Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ динамичСски Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌΡ‹Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΎΠ½ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΡŽΡ‚ΡΡ вмСстС с ядром Π½Π° стадии создания сборки. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΡŽΡ‚ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌΡ‹Ρ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ.

Для ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… дСйствий, связанных с ΠΏΡ€ΠΈΠ΅ΠΌΠΎΠΌ, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ сСтСвыми соСдинСниями ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΎΠΉ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π°, nginx ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ Π½ΠΎΡ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΉ ΠΈ нСсколько ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠ² ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ дискового Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π° Π² ОБ Linux, Solaris ΠΈ BSD-систСмах β€” срСди Π½ΠΈΡ… kqueue, epoll ΠΈ event ports.

ВысокоуровнСвоС прСдставлСниС Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ nginx ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° рисункС Π½ΠΈΠΆΠ΅:

Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ ΠΊΠ½ΠΈΠ³Π°. image loader. Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ ΠΊΠ½ΠΈΠ³Π° Ρ„ΠΎΡ‚ΠΎ. Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ ΠΊΠ½ΠΈΠ³Π°-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ ΠΊΠ½ΠΈΠ³Π°. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loader. . a wonderful book and a wonderful contribution to the industry. Grady Booch

МодСль Ρ€Π°Π±ΠΎΡ‚Ρ‹ worker-процСссов

Как Π±Ρ‹Π»ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‡Π΅Π½ΠΎ Π²Ρ‹ΡˆΠ΅, nginx Π½Π΅ создаСт процСсс ΠΈΠ»ΠΈ ΠΏΠΎΡ‚ΠΎΠΊ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ соСдинСния. ВмСсто этого ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ worker ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ ΠΏΡ€ΠΈΠ΅ΠΌ Π½ΠΎΠ²Ρ‹Ρ… запросов с ΠΎΠ±Ρ‰Π΅Π³ΠΎ Β«ΡΠ»ΡƒΡˆΠ°ΡŽΡ‰Π΅Π³ΠΎΒ» сокСта ΠΈ запускаСт высокоэффСктивный Ρ†ΠΈΠΊΠ» выполнСния Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ worker-процСсса β€” это позволяСт ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ тысячи соСдинСний для ΠΎΠ΄Π½ΠΎΠ³ΠΎ worker’а. ΠšΠ°ΠΊΠΈΡ…-Ρ‚ΠΎ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠ² распрСдСлСния соСдинСний ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ worker-процСссами Π² nginx Π½Π΅Ρ‚, эта Ρ€Π°Π±ΠΎΡ‚Π° выполняСтся Π² ядрС ОБ. Π’ процСссС Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ создаСтся Π½Π°Π±ΠΎΡ€ ΡΠ»ΡƒΡˆΠ°ΡŽΡ‰ΠΈΡ… сокСтов, Π° Π·Π°Ρ‚Π΅ΠΌ worker постоянно ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚, считываСт ΠΈ ΠΏΠΈΡˆΠ΅Ρ‚ Π² сокСты Π² процСссС ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ HTTP-запросов ΠΈ ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ².

Π‘Π°ΠΌΠΎΠΉ слоТной Ρ‡Π°ΡΡ‚ΡŒΡŽ ΠΊΠΎΠ΄Π° Β«Π²ΠΎΡ€ΠΊΠ΅Ρ€ΠΎΠ²Β» nginx являСтся описаниС Ρ†ΠΈΠΊΠ»Π° выполнСния. Он Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ всСвозмоТныС Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ Π²Ρ‹Π·ΠΎΠ²Ρ‹ ΠΈ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΡŽ асинхронной ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π·Π°Π΄Π°Ρ‡. АсинхронныС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ посрСдством ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈ, ΠΎΠΏΠΎΠ²Π΅Ρ‰Π΅Π½ΠΈΠΉ ΠΎ событиях, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΡˆΠΈΡ€ΠΎΠΊΠΎΠ³ΠΎ использования колбэк-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ Π΄ΠΎΡ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Ρ… Ρ‚Π°ΠΉΠΌΠ΅Ρ€ΠΎΠ². Главная Ρ†Π΅Π»ΡŒ всСго этого β€” ΠΏΠΎ максимуму ΡƒΠΉΡ‚ΠΈ ΠΎΡ‚ использования Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ. ЕдинствСнным случаСм, ΠΊΠΎΠ³Π΄Π° nginx ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡ… ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ, являСтся ситуация нСдостаточной для Ρ€Π°Π±ΠΎΡ‚Ρ‹ worker-процСсса ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ дискового Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°.

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ nginx Π½Π΅ создаСт процСссы ΠΈ ΠΏΠΎΡ‚ΠΎΠΊΠΈ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ соСдинСния, Π² ΠΏΠΎΠ΄Π°Π²Π»ΡΡŽΡ‰Π΅ΠΌ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв Π²Π΅Π±-сСрвСр ΠΎΡ‡Π΅Π½ΡŒ консСрвативно ΠΈ ΠΊΡ€Π°ΠΉΠ½Π΅ эффСктивно Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ ΠΎΠ½ сохраняСт Ρ†ΠΈΠΊΠ»Ρ‹ процСссора, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π² случаС nginx отсутствуСт ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ постоянного создания ΠΈ уничтоТСния процСссов ΠΈ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ². Nginx провСряСт состояниС сСти ΠΈ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°, ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ Π½ΠΎΠ²Ρ‹Π΅ соСдинСния, добавляСт ΠΈΡ… Π² Ρ†ΠΈΠΊΠ» выполнСния, Π° Π·Π°Ρ‚Π΅ΠΌ асинхронно ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ Π΄ΠΎ Β«ΠΏΠΎΠ±Π΅Π΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ½Ρ†Π°Β», послС Ρ‡Π΅Π³ΠΎ соСдинСниС дСактивируСтся ΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ ΠΈΠ· Ρ†ΠΈΠΊΠ»Π°. Благодаря этому ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡƒ, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π²Π΄ΡƒΠΌΡ‡ΠΈΠ²ΠΎΠΌΡƒ использованию систСмных Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² ΠΈ качСствСнной Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΡ… интСрфСйсов Π²Ρ€ΠΎΠ΄Π΅ распрСдСлитСлСй памяти (pool ΠΈ slab), nginx позволяСт Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ Π½ΠΈΠ·ΠΊΠΎΠΉ ΠΈΠ»ΠΈ срСднСй Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ CPU Π΄Π°ΠΆΠ΅ Π² случаС ΡΠΊΡΡ‚Ρ€Π΅ΠΌΠ°Π»ΡŒΠ½Ρ‹Ρ… Π½Π°Π³Ρ€ΡƒΠ·ΠΎΠΊ.

ИспользованиС Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… worker-процСссов для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ соСдинСний Ρ‚Π°ΠΊΠΆΠ΅ Π΄Π΅Π»Π°Π΅Ρ‚ Π²Π΅Π±-сСрвСр Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с нСсколькими ядрами. Π­Ρ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ΅ использованиС многоядСрных Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ обСспСчиваСтся созданиСм ΠΎΠ΄Π½ΠΎΠ³ΠΎ worker-процСсса для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ядра, Π° Ρ‚Π°ΠΊΠΆΠ΅ позволяСт ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ ΠΈ Ρ‚Ρ€Π΅ΡˆΠΈΠ½Π³Π° ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ². ΠœΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ контроля рСсурсов ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΎΠ΄Π½ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½Ρ‹Ρ… worker-процСссов β€” такая модСль Ρ‚Π°ΠΊΠΆΠ΅ способствуСт Π±ΠΎΠ»Π΅Π΅ эффСктивному ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ физичСских устройств хранСния, позволяСт Π΄ΠΎΠ±ΠΈΠ²Π°Ρ‚ΡŒΡΡ Π±ΠΎΠ»Π΅Π΅ высокой ΡƒΡ‚ΠΈΠ»ΠΈΠ·Π°Ρ†ΠΈΠΈ дисков ΠΈ ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ блокирования дискового Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π°. Π’ ΠΈΡ‚ΠΎΠ³Π΅ рСсурсы сСрвСра ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ эффСктивнСС, Π° Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠ° распрСдСляСтся ΠΌΠ΅ΠΆΠ΄Ρƒ нСсколькими worker-процСссами.

Для Ρ€Π°Π·Π½Ρ‹Ρ… ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ΠΎΠ² Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ процСссора ΠΈ диска число worker-процСссов nginx ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π²Π΅Π±-сСрвСра Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽΡ‚ систСмным администраторам ΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π½Π°ΠΈΠ»ΡƒΡ‡ΡˆΠΈΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Π² ΠΏΠ»Π°Π½Π΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. Если ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠ°ΠΊ Β«ΠΈΠ½Ρ‚Π΅Π½ΡΠΈΠ²Π½ΡƒΡŽ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ CPUΒ» β€” Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² случаС ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ большого количСства TCP/IP-соСдинСний, осущСствлСния компрСссии ΠΈΠ»ΠΈ использовании SSL, Ρ‚ΠΎ число Β«Π²ΠΎΡ€ΠΊΠ΅Ρ€ΠΎΠ²Β» Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΠΎΠ²ΠΏΠ°Π΄Π°Ρ‚ΡŒ с количСством ядСр. Если ΠΆΠ΅ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π² основном ΠΏΠ°Π΄Π°Π΅Ρ‚ Π½Π° Π΄ΠΈΡΠΊΠΎΠ²ΡƒΡŽ систСму β€” Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈ нСобходимости Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΈ Π²Ρ‹Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΈΠ· Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° ΠΊΡ€ΡƒΠΏΠ½Ρ‹Ρ… ΠΎΠ±ΡŠΡ‘ΠΌΠΎΠ² ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π° β€” Ρ‚ΠΎ число worker-процСссов ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π² ΠΏΠΎΠ»Ρ‚ΠΎΡ€Π°-Π΄Π²Π° Ρ€Π°Π·Π° большС количСства ядСр.

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… вСрсиях Π²Π΅Π±-сСрвСра Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ nginx ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΡŽΡ‚ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ возникновСния ситуаций Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ дискового I/O. На ΠΌΠΎΠΌΠ΅Π½Ρ‚ написания этой Π³Π»Π°Π²Ρ‹ Π² случаС нСдостаточной ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° ΠΏΡ€ΠΈ осущСствлСнии дисковых ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ worker-процСсса, для Π½Π΅Π³ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ чтСния ΠΈΠ»ΠΈ записи. Π§Ρ‚ΠΎΠ±Ρ‹ свСсти Ρ‚Π°ΠΊΡƒΡŽ Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌΡƒ, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠ² β€” Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΎΠΏΡ†ΠΈΠΈ sendfile ΠΈ AIO ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡΠ΅Ρ€ΡŒΠ΅Π·Π½ΠΎ ΠΏΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°.

Π•Ρ‰Π΅ ΠΎΠ΄Π½Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ worker-процСссов связана с ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎΠΉ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ встроСнных скриптов. Π’ случаС стандартной вСрсии nginx доступно лишь встраиваниС Perl-скриптов. Вакая ситуация ΠΎΠ±ΡŠΡΡΠ½ΡΠ΅Ρ‚ΡΡ просто β€” Π³Π»Π°Π²Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ являСтся Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ встроСнный сцСнарий Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½ Π² Ρ…ΠΎΠ΄Π΅ выполнСния ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΈΠ»ΠΈ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡΡ. Π’ ΠΎΠ±ΠΎΠΈΡ… случаях worker-процСсс зависнСт, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Ρ‚Ρ€ΠΎΠ½ΡƒΡ‚ΡŒ тысячи соСдинСний Ρ€Π°Π·ΠΎΠΌ.

Π ΠΎΠ»ΠΈ процСссов nginx

Nginx запускаСт нСсколько процСссов Π² памяти β€” ΠΎΠ΄ΠΈΠ½ master-процСсс ΠΈ нСсколько Β«Π²ΠΎΡ€ΠΊΠ΅Ρ€ΠΎΠ²Β». Π’Π°ΠΊΠΆΠ΅ сущСствуСт нСсколько слуТбных процСссов β€” Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ ΠΈ Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ кэша. Π’ вСрсиях nginx 1.x всС процСссы ΠΎΠ΄Π½ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½Ρ‹Π΅. ВсС ΠΎΠ½ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ для взаимодСйствия Π΄Ρ€ΡƒΠ³ с Π΄Ρ€ΡƒΠ³ΠΎΠΌ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ раздСлСния памяти. Master-процСсс запускаСтся ΠΏΠΎΠ΄ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ root. Π‘Π»ΡƒΠΆΠ΅Π±Π½Ρ‹Π΅ ΠΈ worker-процСссы Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π±Π΅Π· ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΉ ΡΡƒΠΏΠ΅Ρ€ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.

Master-процСсс ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π·Π°Π΄Π°Ρ‡ΠΈ:

Π’Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π΅ устройство nginx ΠΎΠΏΠΈΡΡ‹Π²Π°Π»ΠΎΡΡŒ Π½Π° Π₯Π°Π±Ρ€Π΅ Π² этой ΡΡ‚Π°Ρ‚ΡŒΠ΅

Worker-процСссы ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ ΠΈ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ ΠΏΠΎΡΡ‚ΡƒΠΏΠ°ΡŽΡ‰ΠΈΠ΅ ΠΎΡ‚ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² соСдинСния, ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ reverse proxy ΠΈ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π΄Π΅Π»Π°ΡŽΡ‚ ΠΏΠΎΡ‡Ρ‚ΠΈ всС, Ρ‡Ρ‚ΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π΄Π΅Π»Π°Ρ‚ΡŒ nginx. Π’ ΠΎΠ±Ρ‰Π΅ΠΌ случаС, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ состояниС Π²Π΅Π±-сСрвСра, систСмному администратору Π½ΡƒΠΆΠ½ΠΎ Π²Π·Π³Π»ΡΠ½ΡƒΡ‚ΡŒ Π½Π° Π²ΠΎΡ€ΠΊΠ΅Ρ€Ρ‹, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΎΠ½ΠΈ Π΅Π³ΠΎ [состояниС] Π»ΡƒΡ‡ΡˆΠ΅ всСго ΠΎΡ‚Ρ€Π°ΠΆΠ°ΡŽΡ‚.

ΠŸΡ€ΠΎΡ†Π΅ΡΡ Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠ° кэша ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ элСмСнтов, находящихся Π² кэшС Π½Π° дискС, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π·Π° ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½Π½ΠΎΠΉ Π² памяти Π±Π°Π·Ρ‹ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹ΠΌΠΈ. Π—Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ Π³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚ экзСмпляры nginx ΠΊ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΡƒΠΆΠ΅ хранящимися Π½Π° дискС Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ. Он ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ ΠΏΠΎ дирСкториям, ΠΈΠ·ΡƒΡ‡Π°Π΅Ρ‚ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π° Π² кэшС, обновляСт Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ элСмСнты Π² раздСляСмой памяти, Π° Π·Π°Ρ‚Π΅ΠΌ Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ.

ΠœΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ кэша Π³Π»Π°Π²Π½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ кэша. ΠŸΡ€ΠΈ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Π²Π΅Π±-сСрвСра ΠΎΠ½ находится Π² памяти, Π° Π² случаС сбоя Π΅Π³ΠΎ пСрСзапускаСт master-процСсс.

ΠšΡ€Π°Ρ‚ΠΊΠΈΠΉ ΠΎΠ±Π·ΠΎΡ€ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ Π² nginx

Π’ nginx ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ Π² Ρ„ΠΎΡ€ΠΌΠ΅ иСрархичСского Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° Π΄Π°Π½Π½Ρ‹Ρ… Π² Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС. ΠšΠ»ΡŽΡ‡ΠΈ кэша ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ сконфигурированы, ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ‚ Π² Π½Π΅Π³ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² запросов. ΠšΠ»ΡŽΡ‡ΠΈ кэша ΠΈ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅ хранятся Π² сСгмСнтах раздСляСмой памяти, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π΅ΡΡ‚ΡŒ доступ Ρƒ Π²ΠΎΡ€ΠΊΠ΅Ρ€ΠΎΠ², Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρƒ Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠ° ΠΈ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π° кэша. Π’ настоящий ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π² nginx Π½Π΅Ρ‚ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ Ρ„Π°ΠΉΠ»ΠΎΠ² Π²ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ памяти, ΠΊΡ€ΠΎΠΌΠ΅ Ρ‚Π΅Ρ… возмоТностСй ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ доступны ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ°ΠΌΠΈ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы ОБ. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Π·Π°ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‚ помСщаСтся Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы. Π˜Π΅Ρ€Π°Ρ€Ρ…ΠΈΡ котролируСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ² nginx. Когда ΠΎΡ‚Π²Π΅Ρ‚ записываСтся Π² структуру Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΉ кэша, ΠΏΡƒΡ‚ΡŒ ΠΈ имя Ρ„Π°ΠΉΠ»Π° ΠΈΠ·Π²Π»Π΅ΠΊΠ°ΡŽΡ‚ΡΡ ΠΈΠ· MD5-Ρ…Π΅ΡˆΠ° прокси-URL.

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

ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ nginx

На созданиС ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы nginx Π˜Π³ΠΎΡ€Ρ БысоСва Π²Π΄ΠΎΡ…Π½ΠΎΠ²ΠΈΠ» ΠΎΠΏΡ‹Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Apache. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ считал, Ρ‡Ρ‚ΠΎ для Π²Π΅Π±-сСрвСра Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ° ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠ°Ρ конфигурационная систСма. И главная ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π»Π° ΠΏΡ€ΠΈ нСобходимости ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ большого количСства слоТных ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΉ с мноТСством Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… сСрвСров, Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΉ ΠΈ Π½Π°Π±ΠΎΡ€ΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…. ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΈ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊΡ€ΡƒΠΏΠ½ΠΎΠΉ Π²Π΅Π±-инфраструктуры ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ Π² настоящий Π°Π΄.

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ конфигурация nginx Π±Ρ‹Π»Π° спроСктирована Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ Ρ€ΡƒΡ‚ΠΈΠ½Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ΅ Π²Π΅Π±-сСрвСра ΠΈ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ инструмСнты для дальнСйшСго Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ систСмы.

Π˜Π·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² осущСствляСтся master-процСссом. Бкомпилированная Ρ„ΠΎΡ€ΠΌΠ° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ для чтСния доступна worker-процСссам послС ΠΈΡ… выдСлСния ΠΈΠ· master-процСсса. ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ структуры автоматичСски Ρ€Π°Π·Π΄Π΅Π»ΡΡŽΡ‚ΡΡ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ°ΠΌΠΈ управлСния Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ.

БущСствуСт нСсколько Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… контСкстов для Π±Π»ΠΎΠΊΠΎΠ² ΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ² main, http, server, upstream, location (mail, для mail proxy). К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, нСльзя ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π±Π»ΠΎΠΊ location Π² Π±Π»ΠΎΠΊ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ² main. Π’Π°ΠΊΠΆΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ лишнюю ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ, Π² nginx Π½Π΅Ρ‚ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ «глобального Π²Π΅Π±-сСрвСра». Как Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ сам БысоСв:

Π›ΠΎΠΊΠ°Ρ†ΠΈΠΈ, Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΈ Π±Π»ΠΎΠΊΠΈ Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ глобального Π²Π΅Π±-сСрвСра β€” это Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΠ½Π΅ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π½Ρ€Π°Π²ΠΈΠ»ΠΎΡΡŒ Π² Apache, поэтому ΠΎΠ½ΠΈ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ появлялись Π² nginx.

Бинтаксис ΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ nginx ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ стандарту оформлСния ΠΊΠΎΠ΄Π° C (β€œC-style convention”). НСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ nginx ΠΎΡ‚Ρ€Π°ΠΆΠ°ΡŽΡ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ части ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Apache, Π² Ρ†Π΅Π»ΠΎΠΌ настройка Π΄Π²ΡƒΡ… Π²Π΅Π±-сСрвСров ΡΠ΅Ρ€ΡŒΠ΅Π·Π½ΠΎ отличаСтся. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, Π² nginx ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΏΡ€Π°Π²ΠΈΠ»Π° пСрСзаписи, Π° Π² случаС Apache для этого администратор Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡƒΠ΄Π΅Ρ‚ Π°Π΄Π°ΠΏΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ legacy-ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ. РазличаСтся ΠΈ рСализация Β«Π΄Π²ΠΈΠΆΠΊΠ°Β» пСрСзаписи.

Nginx Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ нСсколько ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠ². К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ β€” ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° try_files. Π’ nginx ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΌΠΎΡ‰Π½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° контроля run-time-ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Π²Π΅Π±-сСрвСра. Они ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ с Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΌΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π°ΠΌΠΈ для обСспСчСния Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ гибкости Π² описании условий ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ запросов.

Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° try_files ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ создавалась Π² качСствС Π·Π°ΠΌΠ΅Π½Ρ‹ условных ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² if, Π° Ρ‚Π°ΠΊΠΆΠ΅ для быстрого ΠΈ эффСктивного сопоставлСния Ρ€Π°Π·Π½Ρ‹Ρ… URL ΠΈ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π°.

Π’Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π΅ устройство nginx

Nginx состоит ΠΈΠ· ядра ΠΈ Ρ†Π΅Π»ΠΎΠ³ΠΎ ряда ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ. Π―Π΄Ρ€ΠΎ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° созданиС основы Π²Π΅Π±-сСрвСра, Ρ€Π°Π±ΠΎΡ‚Ρƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ web- ΠΈ reverse-прокси. Π’Π°ΠΊΠΆΠ΅ ΠΎΠ½ΠΎ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° использованиС сСтСвых ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠ², построСниС срСды запуска ΠΈ обСспСчСниС бСспроблСмного взаимодСйствия ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ модулями. Однако большая Ρ‡Π°ΡΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, связанных с ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°ΠΌΠΈ ΠΈ прилоТСниями, рСализуСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ, Π° Π½Π΅ ядра.

БоСдинСния ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ nginx с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ‚Ρ€ΡƒΠ±Ρ‹ ΠΈΠ»ΠΈ Ρ†Π΅ΠΏΠΈ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ. Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π΅ΡΡ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ выполняСт Π½ΡƒΠΆΠ½ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ β€” Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠΎΠΌΠΏΡ€Π΅ΡΡΠΈΡŽ, ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π°, Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ сСрвСрных Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ, взаимодСйствиС с внСшними сСрвСрами Ρ‡Π΅Ρ€Π΅Π· FastCGI ΠΈΠ»ΠΈ uwsgi-ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρ‹, ΠΈΠ»ΠΈ ΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ с memcahed.

БущСствуСт ΠΏΠ°Ρ€Π° ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ ΠΌΠ΅ΠΆΠ΄Ρƒ ядром ΠΈ Β«Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈΒ» модулями β€” это http ΠΈ mail-ΠΌΠΎΠ΄ΡƒΠ»ΠΈ. Они ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ абстракции ΠΌΠ΅ΠΆΠ΄Ρƒ ядром ΠΈ Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹ΠΌΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ. Π‘ ΠΈΡ… ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚Π΅ΠΉ событий, связанных с ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ сСтСвым ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠΌ Π²Ρ€ΠΎΠ΄Π΅ HTTP, SMTP ΠΈΠ»ΠΈ IMAP. ВмСстС с ядром эти высокоуровнСвыС ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‚ Π·Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅ Π²Π΅Ρ€Π½ΠΎΠ³ΠΎ порядка Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ. Π’ настоящий ΠΌΠΎΠΌΠ΅Π½Ρ‚ HTTP-ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π² качСствС части http-модуля, ΠΎΠ΄Π½Π°ΠΊΠΎ Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΡŽΡ‚ Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ β€” это ΠΏΡ€ΠΎΠ΄ΠΈΠΊΡ‚ΠΎΠ²Π°Π½ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒΡŽ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠ² (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, SPDY).

Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ Π΄ΠΎΠΏΠΎΠ»Π½ΡΡŽΡ‚ HTTP-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ nginx, Π½ΠΎ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ событий ΠΈ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠ² Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΈ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΏΠΎΡ‡Ρ‚ΠΎΠΉ (mail). ΠœΠΎΠ΄ΡƒΠ»ΠΈ событий ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ ΠΎΠΏΠΎΠ²Π΅Ρ‰Π΅Π½ΠΈΠΉ ΠΎ событиях для Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ОБ β€” Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, kqueue ΠΈΠ»ΠΈ epoll. Π’Ρ‹Π±ΠΎΡ€ модуля, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ³ΠΎ nginx, зависит ΠΎΡ‚ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ сборки ΠΈ возмоТностСй ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы. ΠœΠΎΠ΄ΡƒΠ»ΠΈ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠ² ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ nginx Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· HTTPS, TLS/SSL, SMTP, POP3 ΠΈ IMAP.

Π’ΠΎΡ‚ Ρ‚Π°ΠΊ выглядит Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ» ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ HTTP-запроса:

ПослС прочтСния Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° HTTP-запроса, nginx просматриваСт ΡΠ²ΡΠ·Π°Π½Π½ΡƒΡŽ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ сСрвСра. Если Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ сСрвСр Π½Π°ΠΉΠ΄Π΅Π½, Ρ‚ΠΎ запрос ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ ΡˆΠ΅ΡΡ‚ΡŒ Ρ„Π°Π·:

Если спСциализированный ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Π²Ρ€ΠΎΠ΄Π΅ mp4 ΠΈΠ»ΠΈ autoindex Π½Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚, Ρ‚ΠΎ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚ рассматриваСтся Π² качСствС Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ Π½Π° дискС (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ, Π² качСствС статичСского) ΠΈ Π·Π° Π½Π΅Π³ΠΎ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚-ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ static.

ПослС этого ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚ пСрСдаСтся Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΏΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ схСмС. Π€ΠΈΠ»ΡŒΡ‚Ρ€ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Π²Ρ‹Π·ΠΎΠ², Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ, Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ ΠΈ Ρ‚Π°ΠΊ Π΄ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° Π²Ρ‹Π·ΠΎΠ²Π° послСднСго Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π° Π² Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ΅. Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Ρ‹ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ² ΠΈ Ρ‚Π΅Π»Π°. Π Π°Π±ΠΎΡ‚Π° Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π° Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° состоит ΠΈΠ· Ρ‚Ρ€Π΅Ρ… основных шагов:

ΠŸΠΎΠ΄Π·Π°ΠΏΡ€ΠΎΡΡ‹ β€” это ΠΎΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½Ρ‹ΠΉ ΠΈ ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠΎΡ‰Π½Ρ‹ΠΉ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ запросов ΠΈ ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ². Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ подзапросов nginx ΠΌΠΎΠΆΠ΅Ρ‚ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ для Ρ€Π°Π·Π½Ρ‹Ρ… URL, Π·Π°ΠΏΡ€ΠΎΡˆΠ΅Π½Π½Ρ‹Ρ… ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ. НСкоторыС Π²Π΅Π±-Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΈ для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ этой Π·Π°Π΄Π°Ρ‡ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ Ρ€Π΅Π΄ΠΈΡ€Π΅ΠΊΡ‚Ρ‹, ΠΎΠ΄Π½Π°ΠΊΠΎ nginx ΠΈΠ΄Π΅Ρ‚ дальшС β€” Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Ρ‹ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ Ρ€Π°Π·Π½Ρ‹Π΅ подзапросы ΠΈ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΡƒΡŽΡ‚ ΠΈΡ… Π²Ρ‹Π²ΠΎΠ΄ Π² ΠΎΠ΄ΠΈΠ½ ΠΎΠ±Ρ‰ΠΈΠΉ ΠΎΡ‚Π²Π΅Ρ‚, Π½ΠΎ подзапросы Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΡ‡Π½Ρ‹ΠΌΠΈ ΠΈ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌΠΈ. Π’ΠΎ Π΅ΡΡ‚ΡŒ подзапрос ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ собствСнный подзапрос (Β«ΠΏΠΎΠ΄-подзапрос»), Π° Ρ‚ΠΎΡ‚, Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ½ΠΈΡ†ΠΈΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Β«ΠΏΠΎΠ΄-ΠΏΠΎΠ΄-подзапрос».

ΠŸΠΎΠ΄Π·Π°ΠΏΡ€ΠΎΡΡ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½Π° Ρ„Π°ΠΉΠ»Ρ‹ Π½Π° дискС, Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΈΠ»ΠΈ Π²Ρ‹ΡˆΠ΅ΡΡ‚ΠΎΡΡ‰ΠΈΠ΅ сСрвСры. Они ΠΊΡ€Π°ΠΉΠ½Π΅ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ для вставки Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π° ΠΏΡ€ΠΈ использовании Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ запроса. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, SSI-ΠΌΠΎΠ΄ΡƒΠ»ΡŒ (server side include) ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ для парсинга содСрТимого Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½Π½ΠΎΠ³ΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°, Π° Π·Π°Ρ‚Π΅ΠΌ замСняСт Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ include ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚ΠΎΠΌ ΠΈΠ· ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ… URL-адрСсов. Π’ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ всС содСрТимоС Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° Π² URL, Π° Π·Π°Ρ‚Π΅ΠΌ добавляСт ΠΊ URL сам Π½ΠΎΠ²Ρ‹ΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚.

Π’Π°ΠΊΠΆΠ΅ Π² nginx Π΅ΡΡ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ балансировки Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΈ upstream-ΠΌΠΎΠ΄ΡƒΠ»ΠΈ. ПослСдниС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠΈ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π° ΠΊ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ Π²Ρ‹ΡˆΠ΅ΡΡ‚ΠΎΡΡ‰Π΅ΠΌΡƒ сСрвСру ΠΈ получСния ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ² ΠΎΡ‚ Π½Π΅Π³ΠΎ. Π’ этом случаС Π½Π΅ происходит Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ² Π²Ρ‹Π²ΠΎΠ΄Π°. Upstream-ΠΌΠΎΠ΄ΡƒΠ»ΡŒ устанавливаСт колбэки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ΡˆΠ΅ΡΡ‚ΠΎΡΡ‰ΠΈΠΉ сСрвСр Π±ΡƒΠ΄Π΅Ρ‚ Π³ΠΎΡ‚ΠΎΠ² ΠΊ записи ΠΈΠ»ΠΈ Ρ‡Ρ‚Π΅Π½ΠΈΡŽ. Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ колбэки для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ:

Π’Π°ΠΊΠΆΠ΅ Π² nginx Π΅ΡΡ‚ΡŒ интСрСсныС ΠΌΠΎΠ΄ΡƒΠ»ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… для использования Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅. Π’ nginx ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π³Π»Π°Π²Π½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡŽΡ‚ΡΡ Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… модулях, Π½ΠΎ Π΅ΡΡ‚ΡŒ ΠΈ Π΄Π²Π° модуля, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ посвящСны ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ: geo ΠΈ map. ΠœΠΎΠ΄ΡƒΠ»ΡŒ geo ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для облСгчСния отслСТивания ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² ΠΏΠΎ IP-адрСсам. Он ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ случайныС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ зависят ΠΎΡ‚ IP-адрСса ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°. Π’Ρ‚ΠΎΡ€ΠΎΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ, map, позволяСт ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, Ρ‡Ρ‚ΠΎ ΠΎΠ±Π»Π΅Π³Ρ‡Π°Π΅Ρ‚ ΠΌΠ°ΠΏΠΏΠΈΠ½Π³ ΠΈΠΌΠ΅Π½ хостов ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… runtime-ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ….

ΠœΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ распрСдСлСния памяти Π² worker-процСссах nginx Π±Ρ‹Π»ΠΈ созданы с ΠΎΠΏΠΎΡ€ΠΎΠΉ Π½Π° ΠΎΠΏΡ‹Ρ‚ Apache. ВысокоуровнСвоС описаниС Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ Π² nginx Π·Π²ΡƒΡ‡ΠΈΡ‚ Ρ‚Π°ΠΊ: для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ соСдинСния Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Π±ΡƒΡ„Π΅Ρ€Ρ‹ памяти динамичСски Π²Ρ‹Π΄Π΅Π»ΡΡŽΡ‚ΡΡ, Π»ΠΈΠ½ΠΊΡƒΡŽΡ‚ΡΡ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для хранСния ΠΈ измСнСния Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° ΠΈ Ρ‚Π΅Π»Π° запроса ΠΈΠ»ΠΈ ΠΎΡ‚Π²Π΅Ρ‚Π°, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°ΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠΈ соСдинСния. Nginx пытаСтся ΠΏΠΎ-максимуму ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ копирования Π΄Π°Π½Π½Ρ‹Ρ… Π² памяти, большая Ρ‡Π°ΡΡ‚ΡŒ ΠΈΠ· Π½ΠΈΡ… обрабатываСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ Π±Π΅Π· Π²Ρ‹Π·ΠΎΠ²Π° memcpy.

Π—Π°Π΄Π°Ρ‡Π° управлСния распрСдСлСниСм памяти Ρ€Π΅ΡˆΠ°Π΅Ρ‚ΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ распрСдСлитСля ΠΏΡƒΠ»Π° nginx. Π—ΠΎΠ½Ρ‹ раздСляСмой памяти ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для ΠΏΡ€ΠΈΠ΅ΠΌΠ° ΠΌΡŒΡŽΡ‚Π΅ΠΊΡ, ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ… кэша, кэша SSL-сСссий ΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, связанной с ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ полосой пропускания (Π»ΠΈΠΌΠΈΡ‚Ρ‹). Для управлСния распрСдСлСниСм памяти Π² nginx Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ slab-Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ. БСзопасноС использованиС раздСляСмой памяти осущСствляСтся Π·Π° счСт ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠ² Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ (ΠΌΡŒΡŽΡ‚Π΅ΠΊΡΡ‹ ΠΈ сСмафоры). Для ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ слоТных структур Π΄Π°Π½Π½Ρ‹Ρ… Π² nginx ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ рСализация красно-Ρ‡Π΅Ρ€Π½Ρ‹Ρ… Π΄Π΅Ρ€Π΅Π²ΡŒΠ΅Π². Они ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ для сохранСния ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ… кэша Π² раздСляСмой памяти, отслСТивания Π½Π΅-regex опрСдСлСния мСстополоТСний ΠΈ для Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π΄Ρ€ΡƒΠ³ΠΈΡ… Π·Π°Π΄Π°Ρ‡.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *