ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»Π½ΠΎΡΡ‚ Π½Π° Linux ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Π’ΡŠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅

Π£Π΅Π± прилоТСнията Π²Π΅Ρ‡Π΅ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ навсякъдС ΠΈ срСд всички транспортни ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΈ HTTP Π·Π°Π΅ΠΌΠ° лъвския дял. ΠšΠΎΠ³Π°Ρ‚ΠΎ ΠΈΠ·ΡƒΡ‡Π°Π²Π°Ρ‚ Π½ΡŽΠ°Π½ΡΠΈΡ‚Π΅ Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π° Π½Π° ΡƒΠ΅Π± прилоТСния, ΠΏΠΎΠ²Π΅Ρ‡Π΅Ρ‚ΠΎ Ρ…ΠΎΡ€Π° ΠΎΠ±Ρ€ΡŠΡ‰Π°Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠ°Π»ΠΊΠΎ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Π°Ρ‚Π° систСма, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ Ρ‚Π΅Π·ΠΈ прилоТСния дСйствитСлно сС ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Ρ‚. РаздСлянСто Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π° (Dev) ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈΡ‚Π΅ (Ops) само влоши ситуацията. Но с Π²ΡŠΠ·Ρ…ΠΎΠ΄Π° Π½Π° DevOps ΠΊΡƒΠ»Ρ‚ΡƒΡ€Π°Ρ‚Π°, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈΡ‚Π΅ стават ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€Π½ΠΈ Π·Π° ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° своитС прилоТСния Π² ΠΎΠ±Π»Π°ΠΊΠ°, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π·Π° тях Π΄Π° сС запознаят ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ с Π±Π΅ΠΊΠ΅Π½Π΄Π° Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Π°Ρ‚Π° систСма. Π’ΠΎΠ²Π° Π΅ особСно ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, Π°ΠΊΠΎ сС ΠΎΠΏΠΈΡ‚Π²Π°Ρ‚Π΅ Π΄Π° Ρ€Π°Π·ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅ систСма Π·Π° хиляди ΠΈΠ»ΠΈ дСсСтки хиляди Π΅Π΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΈ Π²Ρ€ΡŠΠ·ΠΊΠΈ.

ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΡΡ‚Π° Π² ΡƒΠ΅Π± услугитС са ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ Π½Π° Ρ‚Π΅Π·ΠΈ Π² Π΄Ρ€ΡƒΠ³ΠΈ прилоТСния. НСзависимо Π΄Π°Π»ΠΈ става Π²ΡŠΠΏΡ€ΠΎΡ Π·Π° Π±Π°Π»Π°Π½ΡΡŒΠΎΡ€ΠΈ Π½Π° Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅Ρ‚ΠΎ ΠΈΠ»ΠΈ ΡΡŠΡ€Π²ΡŠΡ€ΠΈ Π½Π° Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ, всички Ρ‚Π΅Π·ΠΈ прилоТСния ΠΈΠΌΠ°Ρ‚ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ Π² срСда с висока производитСлност. Π Π°Π·Π±ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° Ρ‚Π΅Π·ΠΈ основни ограничСния ΠΈ ΠΊΠ°ΠΊ Π΄Π° Π³ΠΈ ΠΏΡ€Π΅ΠΎΠ΄ΠΎΠ»Π΅Π΅Ρ‚Π΅ ΠΊΠ°Ρ‚ΠΎ цяло Ρ‰Π΅ Π²ΠΈ ΠΏΠΎΠΌΠΎΠ³Π½Π΅ Π΄Π° ΠΎΡ†Π΅Π½ΠΈΡ‚Π΅ производитСлността ΠΈ скалируСмостта Π½Π° Π²Π°ΡˆΠΈΡ‚Π΅ ΡƒΠ΅Π± прилоТСния.

Пиша Ρ‚Π°Π·ΠΈ ΠΏΠΎΡ€Π΅Π΄ΠΈΡ†Π° ΠΎΡ‚ статии Π² ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€ Π½Π° Π²ΡŠΠΏΡ€ΠΎΡΠΈ ΠΎΡ‚ ΠΌΠ»Π°Π΄ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ искат Π΄Π° станат Π΄ΠΎΠ±Ρ€Π΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠΈΡ€Π°Π½ΠΈ систСмни Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΠΈ. НСвъзмоТно Π΅ ясно Π΄Π° сС Ρ€Π°Π·Π±Π΅Ρ€Π°Ρ‚ Ρ‚Π΅Ρ…Π½ΠΈΠΊΠΈΡ‚Π΅ Π·Π° ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° Linux прилоТСния, Π±Π΅Π· Π΄Π° сС ΠΏΠΎΡ‚ΠΎΠΏΠΈΡ‚Π΅ Π² основитС Π½Π° Ρ‚ΠΎΠ²Π° ΠΊΠ°ΠΊ работят Π½Π° Π½ΠΈΠ²ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Π° систСма. Π’ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‡Π΅ ΠΈΠΌΠ° ΠΌΠ½ΠΎΠ³ΠΎ Π²ΠΈΠ΄ΠΎΠ²Π΅ прилоТСния, Π² Ρ‚Π°Π·ΠΈ ΠΏΠΎΡ€Π΅Π΄ΠΈΡ†Π° искам Π΄Π° изслСдвам ΡƒΠ΅Π± Π±Π°Π·ΠΈΡ€Π°Π½ΠΈ прилоТСния, Π° Π½Π΅ настолни прилоТСния ΠΊΠ°Ρ‚ΠΎ Π±Ρ€Π°ΡƒΠ·ΡŠΡ€ ΠΈΠ»ΠΈ тСкстов Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€. Π’ΠΎΠ·ΠΈ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π» Π΅ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈ ΠΈ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ искат Π΄Π° Ρ€Π°Π·Π±Π΅Ρ€Π°Ρ‚ ΠΊΠ°ΠΊ работят Linux ΠΈΠ»ΠΈ Unix ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ‚Π΅ ΠΈ ΠΊΠ°ΠΊ Π΄Π° Π³ΠΈ структурират Π·Π° висока производитСлност.

Linux Π΅ ΡΡŠΡ€Π²ΡŠΡ€Π½ΠΎ ΠΏΠΎΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Π° систСма ΠΈ Π½Π°ΠΉ-чСсто Π²Π°ΡˆΠΈΡ‚Π΅ прилоТСния работят Π½Π° Ρ‚Π°Π·ΠΈ ОБ. Π’ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‡Π΅ ΠΊΠ°Π·Π²Π°ΠΌ β€žLinuxβ€œ, ΠΏΡ€Π΅Π· ΠΏΠΎΠ²Π΅Ρ‡Π΅Ρ‚ΠΎ Π²Ρ€Π΅ΠΌΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ спокойно Π΄Π° ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅, Ρ‡Π΅ ΠΈΠΌΠ°ΠΌ ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄ всички Unix-ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΈ систСми ΠΊΠ°Ρ‚ΠΎ цяло. Π’ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‚ΠΎΠ²Π° Π½Π΅ съм тСствал придруТаващия ΠΊΠΎΠ΄ Π½Π° Π΄Ρ€ΡƒΠ³ΠΈ систСми. Π’Π°ΠΊΠ° Ρ‡Π΅, Π°ΠΊΠΎ сС интСрСсуватС ΠΎΡ‚ FreeBSD ΠΈΠ»ΠΈ OpenBSD, Π²Π°ΡˆΠΈΡ‚Π΅ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° Π²Π°Ρ€ΠΈΡ€Π°Ρ‚. ΠšΠΎΠ³Π°Ρ‚ΠΎ ΠΎΠΏΠΈΡ‚Π°ΠΌ Π½Π΅Ρ‰ΠΎ спСцифично Π·Π° Linux, Π³ΠΎ посочвам.

Π’ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‡Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ Ρ‚ΠΎΠ²Π° Π·Π½Π°Π½ΠΈΠ΅, Π·Π° Π΄Π° ΡΡŠΠ·Π΄Π°Π΄Π΅Ρ‚Π΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎΡ‚ Π½ΡƒΠ»Π°Ρ‚Π° ΠΈ Ρ‚ΠΎ Ρ‰Π΅ бъдС ΠΈΠ΄Π΅Π°Π»Π½ΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€Π°Π½ΠΎ, Π½Π°ΠΉ-Π΄ΠΎΠ±Ρ€Π΅ Π΅ Π΄Π° Π½Π΅ ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ Ρ‚ΠΎΠ²Π°. Ако ΠΏΠΈΡˆΠ΅Ρ‚Π΅ Π½ΠΎΠ² ΡƒΠ΅Π± ΡΡŠΡ€Π²ΡŠΡ€ Π½Π° C ΠΈΠ»ΠΈ C++ Π·Π° бизнСс ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Π²Π°ΡˆΠ°Ρ‚Π° организация, Ρ‚ΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° Π΅ послСдният Π²ΠΈ Π΄Π΅Π½ Π½Π° Ρ€Π°Π±ΠΎΡ‚Π°. ΠŸΠΎΠ·Π½Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° структурата Π½Π° Ρ‚Π΅Π·ΠΈ прилоТСния ΠΎΠ±Π°Ρ‡Π΅ Ρ‰Π΅ ΠΏΠΎΠΌΠΎΠ³Π½Π΅ ΠΏΡ€ΠΈ ΠΈΠ·Π±ΠΎΡ€Π° Π½Π° ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Ρ‰ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈ. Π©Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° сравнитС систСми, Π±Π°Π·ΠΈΡ€Π°Π½ΠΈ Π½Π° процСси, със систСми, Π±Π°Π·ΠΈΡ€Π°Π½ΠΈ Π½Π° нишки, ΠΊΠ°ΠΊΡ‚ΠΎ ΠΈ Ρ‚Π°ΠΊΠΈΠ²Π°, Π±Π°Π·ΠΈΡ€Π°Π½ΠΈ Π½Π° ΡΡŠΠ±ΠΈΡ‚ΠΈΡ. Π©Π΅ Ρ€Π°Π·Π±Π΅Ρ€Π΅Ρ‚Π΅ ΠΈ ΠΎΡ†Π΅Π½ΠΈΡ‚Π΅ Π·Π°Ρ‰ΠΎ Nginx Ρ€Π°Π±ΠΎΡ‚ΠΈ ΠΏΠΎ-Π΄ΠΎΠ±Ρ€Π΅ ΠΎΡ‚ Apache httpd, Π·Π°Ρ‰ΠΎ Π±Π°Π·ΠΈΡ€Π°Π½ΠΎ Π½Π° Tornado Python ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅ Π΄Π° обслуТва ΠΏΠΎΠ²Π΅Ρ‡Π΅ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈ Π² сравнСниС с Π±Π°Π·ΠΈΡ€Π°Π½ΠΎ Π½Π° Django Python ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.

ZeroHTTPd: Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚ Π·Π° ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅

Нула HTTPd Π΅ ΡƒΠ΅Π± ΡΡŠΡ€Π²ΡŠΡ€, ΠΊΠΎΠΉΡ‚ΠΎ написах ΠΎΡ‚ Π½ΡƒΠ»Π°Ρ‚Π° Π½Π° C ΠΊΠ°Ρ‚ΠΎ инструмСнт Π·Π° ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅. Π’ΠΎΠΉ няма външни зависимости, Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ Redis. НиС ΠΏΡ€ΠΎΠ²Π΅ΠΆΠ΄Π°ΠΌΠ΅ собствСни Redis ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ΠΈ. Π’ΠΈΠΆΡ‚Π΅ ΠΏΠΎ-Π΄ΠΎΠ»Ρƒ Π·Π° ΠΏΠΎΠ²Π΅Ρ‡Π΅ подробности.

Π’ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‡Π΅ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° обсъТдамС тСорията надълго ΠΈ Π½Π°ΡˆΠΈΡ€ΠΎΠΊΠΎ, няма Π½ΠΈΡ‰ΠΎ ΠΏΠΎ-Π΄ΠΎΠ±Ρ€ΠΎ ΠΎΡ‚ писанСто Π½Π° ΠΊΠΎΠ΄, стартиранСто ΠΌΡƒ ΠΈ сравняванСто Π½Π° всички ΡΡŠΡ€Π²ΡŠΡ€Π½ΠΈ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΈ Π΅Π΄Π½Π° с Π΄Ρ€ΡƒΠ³Π°. Π’ΠΎΠ²Π° Π΅ Π½Π°ΠΉ-очСвидният ΠΌΠ΅Ρ‚ΠΎΠ΄. Π—Π°Ρ‚ΠΎΠ²Π° Ρ‰Π΅ напишСм прост ΡƒΠ΅Π± ΡΡŠΡ€Π²ΡŠΡ€ ZeroHTTPd, ΠΊΠ°Ρ‚ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ всСки ΠΌΠΎΠ΄Π΅Π»: Π±Π°Π·ΠΈΡ€Π°Π½ Π½Π° процСси, Π±Π°Π·ΠΈΡ€Π°Π½ Π½Π° нишки ΠΈ Π±Π°Π·ΠΈΡ€Π°Π½ Π½Π° ΡΡŠΠ±ΠΈΡ‚ΠΈΡ. НСка Π΄Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠΌ всСки ΠΎΡ‚ Ρ‚Π΅Π·ΠΈ ΡΡŠΡ€Π²ΡŠΡ€ΠΈ ΠΈ Π΄Π° Π²ΠΈΠ΄ΠΈΠΌ ΠΊΠ°ΠΊ сС прСдставят Π² сравнСниС Π΅Π΄ΠΈΠ½ с Π΄Ρ€ΡƒΠ³. ZeroHTTPd Π΅ Π²Π½Π΅Π΄Ρ€Π΅Π½ Π² Π΅Π΄ΠΈΠ½ Ρ„Π°ΠΉΠ» C. Базираният Π½Π° ΡΡŠΠ±ΠΈΡ‚ΠΈΡ ΡΡŠΡ€Π²ΡŠΡ€ Π²ΠΊΠ»ΡŽΡ‡Π²Π° uthash, страхотна рСализация Π½Π° Ρ…Π΅Ρˆ Ρ‚Π°Π±Π»ΠΈΡ†Π°, която ΠΈΠ΄Π²Π° Π² Π΅Π΄ΠΈΠ½ Π·Π°Π³Π»Π°Π²Π΅Π½ Ρ„Π°ΠΉΠ». Π’ останалитС случаи няма зависимости, Π·Π° Π΄Π° Π½Π΅ сС услоТнява ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

Π’ ΠΊΠΎΠ΄Π° ΠΈΠΌΠ° ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ Π΄Π° Π²ΠΈ ΠΏΠΎΠΌΠΎΠ³Π½Π°Ρ‚ Π΄Π° Ρ€Π°Π·Π±Π΅Ρ€Π΅Ρ‚Π΅. Въй ΠΊΠ°Ρ‚ΠΎ Π΅ прост ΡƒΠ΅Π± ΡΡŠΡ€Π²ΡŠΡ€ Π² няколко Ρ€Π΅Π΄Π° ΠΊΠΎΠ΄, ZeroHTTPd ΡΡŠΡ‰ΠΎ Π΅ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½Π° Ρ€Π°ΠΌΠΊΠ° Π·Π° ΡƒΠ΅Π± Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°. Има ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π° функционалност, Π½ΠΎ Π΅ Π² ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅ Π΄Π° обслуТва статични Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ прости "Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π½ΠΈ" страници. Врябва Π΄Π° ΠΊΠ°ΠΆΠ°, Ρ‡Π΅ ZeroHTTPd Π΅ Π΄ΠΎΠ±ΡŠΡ€ Π·Π° Π½Π°ΡƒΡ‡Π°Π²Π°Π½Π΅ ΠΊΠ°ΠΊ Π΄Π° ΡΡŠΠ·Π΄Π°Π²Π°Ρ‚Π΅ високопроизводитСлни Linux прилоТСния. ΠšΠ°Ρ‚ΠΎ цяло ΠΏΠΎΠ²Π΅Ρ‡Π΅Ρ‚ΠΎ ΡƒΠ΅Π± услуги Ρ‡Π°ΠΊΠ°Ρ‚ заявки, провСряват Π³ΠΈ ΠΈ Π³ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π°Ρ‚. Π’ΠΎΡ‡Π½ΠΎ Ρ‚ΠΎΠ²Π° Ρ‰Π΅ Π½Π°ΠΏΡ€Π°Π²ΠΈ ZeroHTTPd. Π’ΠΎΠ²Π° Π΅ инструмСнт Π·Π° ΡƒΡ‡Π΅Π½Π΅, Π° Π½Π΅ Π·Π° производство. НС Π΅ Π΄ΠΎΠ±ΡŠΡ€ ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π° Π½Π° Π³Ρ€Π΅ΡˆΠΊΠΈ ΠΈ Π΅ ΠΌΠ°Π»ΠΊΠΎ вСроятно Π΄Π° сС ΠΏΠΎΡ…Π²Π°Π»ΠΈ с Π½Π°ΠΉ-Π΄ΠΎΠ±Ρ€ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ Π·Π° сигурност (ΠΎ, Π΄Π°, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ… strcpy) ΠΈΠ»ΠΈ Ρ…ΠΈΡ‚Ρ€ΠΈΡ‚Π΅ Ρ‚Ρ€ΠΈΠΊΠΎΠ²Π΅ Π½Π° Π΅Π·ΠΈΠΊΠ° C. Но сС надявам, Ρ‡Π΅ Π²ΡŠΡ€ΡˆΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° си Π΄ΠΎΠ±Ρ€Π΅.

ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»Π½ΠΎΡΡ‚ Π½Π° Linux ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Π’ΡŠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅
ZeroHTTPd Π½Π°Ρ‡Π°Π»Π½Π° страница. МоТС Π΄Π° ΠΈΠ·Π²Π΅ΠΆΠ΄Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Ρ‚ΠΈΠΏΠΎΠ²Π΅ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅, Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ изобраТСния

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Книга Π·Π° гости

Π‘ΡŠΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΈΡ‚Π΅ ΡƒΠ΅Π± прилоТСния ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ Π½Π΅ сС ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π°Π²Π°Ρ‚ Π΄ΠΎ статични Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅. Π’Π΅ ΠΈΠΌΠ°Ρ‚ слоТни взаимодСйствия с Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ, кСшовС ΠΈ Ρ‚.Π½. Π’Π°ΠΊΠ° Ρ‡Π΅ Ρ‰Π΅ създадСм просто ΡƒΠ΅Π± ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π½Π°Ρ€Π΅Ρ‡Π΅Π½ΠΎ β€žΠšΠ½ΠΈΠ³Π° Π·Π° Π³ΠΎΡΡ‚ΠΈβ€œ, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ посСтитСлитС оставят записи ΠΏΠΎΠ΄ Ρ‚Π΅Ρ…Π½ΠΈΡ‚Π΅ ΠΈΠΌΠ΅Π½Π°. ΠšΠ½ΠΈΠ³Π°Ρ‚Π° Π·Π° гости ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π° записи, оставСни ΠΏΠΎ-Ρ€Π°Π½ΠΎ. Π’ Π΄ΠΎΠ»Π½Π°Ρ‚Π° част Π½Π° страницата ΠΈΠΌΠ° ΠΈ брояч Π½Π° посСтитСлитС.

ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»Π½ΠΎΡΡ‚ Π½Π° Linux ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Π’ΡŠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅
Π£Π΅Π± ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ "Книга Π·Π° гости" ZeroHTTPd

Π‘Ρ€ΠΎΡΡ‡ΡŠΡ‚ Π½Π° посСтитСлитС ΠΈ записитС Π² ΠΊΠ½ΠΈΠ³Π°Ρ‚Π° Π·Π° гости сС ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°Ρ‚ Π² Redis. Π—Π° комуникация с Redis сС ΠΏΡ€ΠΈΠ»Π°Π³Π°Ρ‚ собствСни ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ΠΈ, Ρ‚Π΅ Π½Π΅ зависят ΠΎΡ‚ Π²ΡŠΠ½ΡˆΠ½Π°Ρ‚Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°. НС съм голям Ρ„Π΅Π½ Π½Π° внСдряванСто Π½Π° homebrew ΠΊΠΎΠ΄, ΠΊΠΎΠ³Π°Ρ‚ΠΎ ΠΈΠΌΠ° ΠΏΡƒΠ±Π»ΠΈΡ‡Π½ΠΎ Π΄ΠΎΡΡ‚ΡŠΠΏΠ½ΠΈ ΠΈ Π΄ΠΎΠ±Ρ€Π΅ тСствани Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ. Но Ρ†Π΅Π»Ρ‚Π° Π½Π° ZeroHTTPd Π΅ Π΄Π° изслСдва производитСлността Π½Π° Linux ΠΈ Π΄ΠΎΡΡ‚ΡŠΠΏΠ° Π΄ΠΎ външни услуги, Π΄ΠΎΠΊΠ°Ρ‚ΠΎ обслуТванСто Π½Π° HTTP заявки ΠΈΠΌΠ° сСриозно Π²ΡŠΠ·Π΄Π΅ΠΉΡΡ‚Π²ΠΈΠ΅ Π²ΡŠΡ€Ρ…Ρƒ производитСлността. Врябва напълно Π΄Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€Π°ΠΌΠ΅ ΠΊΠΎΠΌΡƒΠ½ΠΈΠΊΠ°Ρ†ΠΈΠΈΡ‚Π΅ с Redis във всяка ΠΎΡ‚ Π½Π°ΡˆΠΈΡ‚Π΅ ΡΡŠΡ€Π²ΡŠΡ€Π½ΠΈ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΈ. Π’ някои Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Π±Π»ΠΎΠΊΠΈΡ€Π°Ρ‰ΠΈ повиквания, Π² Π΄Ρ€ΡƒΠ³ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ΠΈ, Π±Π°Π·ΠΈΡ€Π°Π½ΠΈ Π½Π° ΡΡŠΠ±ΠΈΡ‚ΠΈΡ. Π˜Π·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° външна клиСнтска Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π½Π° Redis няма Π΄Π° осигури Ρ‚ΠΎΠ·ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ». ОсвСн Ρ‚ΠΎΠ²Π° Π½Π°ΡˆΠΈΡΡ‚ малък Redis ΠΊΠ»ΠΈΠ΅Π½Ρ‚ изпълнява само няколко Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°Π½Π΅, настройка ΠΈ ΡƒΠ²Π΅Π»ΠΈΡ‡Π°Π²Π°Π½Π΅ Π½Π° ΠΊΠ»ΡŽΡ‡; ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°Π½Π΅ ΠΈ добавянС към масив). ОсвСн Ρ‚ΠΎΠ²Π° ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΡŠΡ‚ Redis Π΅ ΠΈΠ·ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ Π΅Π»Π΅Π³Π°Π½Ρ‚Π΅Π½ ΠΈ прост. Π”ΠΎΡ€ΠΈ Π½Π΅ Π΅ Π½ΡƒΠΆΠ½ΠΎ Π΄Π° Π³ΠΎ ΠΏΡ€Π΅ΠΏΠΎΠ΄Π°Π²Π°Ρ‚Π΅ спСциално. Бамият Ρ„Π°ΠΊΡ‚, Ρ‡Π΅ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΡŠΡ‚ Π²ΡŠΡ€ΡˆΠΈ цялата Ρ€Π°Π±ΠΎΡ‚Π° Π² ΠΎΠΊΠΎΠ»ΠΎ сто Ρ€Π΅Π΄Π° ΠΊΠΎΠ΄, ΠΏΠΎΠΊΠ°Π·Π²Π° ΠΊΠΎΠ»ΠΊΠΎ Π΄ΠΎΠ±Ρ€Π΅ Π΅ обмислСн.

Π‘Π»Π΅Π΄Π½Π°Ρ‚Π° Ρ„ΠΈΠ³ΡƒΡ€Π° ΠΏΠΎΠΊΠ°Π·Π²Π° ΠΊΠ°ΠΊΠ²ΠΎ ΠΏΡ€Π°Π²ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ, ΠΊΠΎΠ³Π°Ρ‚ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΡŠΡ‚ (Π±Ρ€Π°ΡƒΠ·ΡŠΡ€ΡŠΡ‚) поиска /guestbookURL.

ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»Π½ΠΎΡΡ‚ Π½Π° Linux ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Π’ΡŠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅
Как Ρ€Π°Π±ΠΎΡ‚ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ ΠΊΠ½ΠΈΠ³Π° Π·Π° гости

ΠšΠΎΠ³Π°Ρ‚ΠΎ страницата Π½Π° ΠΊΠ½ΠΈΠ³Π°Ρ‚Π° Π·Π° гости трябва Π΄Π° бъдС ΠΈΠ·Π΄Π°Π΄Π΅Π½Π°, ΠΈΠΌΠ° Π΅Π΄Π½ΠΎ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ към Ρ„Π°ΠΉΠ»ΠΎΠ²Π°Ρ‚Π° систСма Π·Π° Ρ‡Π΅Ρ‚Π΅Π½Π΅ Π½Π° шаблона Π² ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° ΠΈ Ρ‚Ρ€ΠΈ ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈ повиквания към Redis. Шаблонният Ρ„Π°ΠΉΠ» ΡΡŠΠ΄ΡŠΡ€ΠΆΠ° ΠΏΠΎ-голямата част ΠΎΡ‚ HTML ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Π½ΠΈΠ΅Ρ‚ΠΎ Π·Π° страницата Π½Π° Π΅ΠΊΡ€Π°Π½Π½Π°Ρ‚Π° снимка ΠΏΠΎ-Π³ΠΎΡ€Π΅. Има ΠΈ спСциални ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ Π·Π° Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π½Π°Ρ‚Π° част ΠΎΡ‚ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Π½ΠΈΠ΅Ρ‚ΠΎ: ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΈ брояч Π½Π° посСтитСли. НиС Π³ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°ΠΌΠ΅ ΠΎΡ‚ Redis, вмъквамС Π³ΠΈ Π² страницата ΠΈ прСдоставямС Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° напълно ΠΎΡ„ΠΎΡ€ΠΌΠ΅Π½ΠΎ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Π½ΠΈΠ΅. Π’Ρ€Π΅Ρ‚ΠΎΡ‚ΠΎ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° Redis ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС ΠΈΠ·Π±Π΅Π³Π½Π°Ρ‚ΠΎ, Π·Π°Ρ‰ΠΎΡ‚ΠΎ Redis Π²Ρ€ΡŠΡ‰Π° Π½ΠΎΠ²Π°Ρ‚Π° стойност Π½Π° ΠΊΠ»ΡŽΡ‡Π°, ΠΊΠΎΠ³Π°Ρ‚ΠΎ сС ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈ. Π—Π° нашия ΡΡŠΡ€Π²ΡŠΡ€ ΠΎΠ±Π°Ρ‡Π΅, ΠΊΠΎΠΉΡ‚ΠΎ ΠΈΠΌΠ° асинхронна Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°, Π±Π°Π·ΠΈΡ€Π°Π½Π° Π½Π° ΡΡŠΠ±ΠΈΡ‚ΠΈΡ, ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈ повиквания са Π΄ΠΎΠ±ΡŠΡ€ тСст Π·Π° ΡƒΡ‡Π΅Π±Π½ΠΈ Ρ†Π΅Π»ΠΈ. Π’Π°ΠΊΠ° Ρ‡Π΅ ΠΎΡ‚Ρ…Π²ΡŠΡ€Π»ΡΠΌΠ΅ Π²ΡŠΡ€Π½Π°Ρ‚Π°Ρ‚Π° ΠΎΡ‚ Redis стойност Π½Π° броя посСтитСли ΠΈ я отправямС с ΠΎΡ‚Π΄Π΅Π»Π½ΠΎ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅.

Π‘ΡŠΡ€Π²ΡŠΡ€Π½ΠΈ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΈ ZeroHTTPd

НиС ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°ΠΌΠ΅ сСдСм вСрсии Π½Π° ZeroHTTPd със ΡΡŠΡ‰Π°Ρ‚Π° функционалност, Π½ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΈ:

  • Π˜Ρ‚Π΅Ρ€Π°Ρ‚ΠΈΠ²Π΅Π½
  • Fork ΡΡŠΡ€Π²ΡŠΡ€ (Π΅Π΄ΠΈΠ½ Π΄ΡŠΡ‰Π΅Ρ€Π΅Π½ процСс Π½Π° заявка)
  • Pre-fork ΡΡŠΡ€Π²ΡŠΡ€ (ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»Π½ΠΎ разклоняванС Π½Π° процСси)
  • Π‘ΡŠΡ€Π²ΡŠΡ€ с нишки Π·Π° изпълнСниС (Π΅Π΄Π½Π° нишка Π½Π° заявка)
  • Π‘ΡŠΡ€Π²ΡŠΡ€ с ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»Π½ΠΎ създаванС Π½Π° нишка
  • Π‘Π°Π·ΠΈΡ€Π°Π½ Π½Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° poll()
  • Π‘Π°Π·ΠΈΡ€Π°Π½ Π½Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° epoll

НиС ΠΈΠ·ΠΌΠ΅Ρ€Π²Π°ΠΌΠ΅ производитСлността Π½Π° всяка Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°, ΠΊΠ°Ρ‚ΠΎ Π·Π°Ρ€Π΅ΠΆΠ΄Π°ΠΌΠ΅ ΡΡŠΡ€Π²ΡŠΡ€Π° с HTTP заявки. Но ΠΊΠΎΠ³Π°Ρ‚ΠΎ сС сравняват силно ΠΏΠ°Ρ€Π°Π»Π΅Π»Π½ΠΈ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΈ, броят Π½Π° заявкитС сС ΡƒΠ²Π΅Π»ΠΈΡ‡Π°Π²Π°. ВСствамС Ρ‚Ρ€ΠΈ ΠΏΡŠΡ‚ΠΈ ΠΈ изчислявамС срСдната стойност.

ΠœΠ΅Ρ‚ΠΎΠ΄ΠΈΠΊΠ° Π½Π° тСстванС

ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»Π½ΠΎΡΡ‚ Π½Π° Linux ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Π’ΡŠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅
Настройка Π·Π° тСстванС Π½Π° Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅ ZeroHTTPd

Π’Π°ΠΆΠ½ΠΎ Π΅, ΠΊΠΎΠ³Π°Ρ‚ΠΎ ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Ρ‚Π΅ тСстовС, всички ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈ Π΄Π° Π½Π΅ работят Π½Π° Π΅Π΄Π½Π° ΠΈ ΡΡŠΡ‰Π° машина. Π’ Ρ‚ΠΎΠ·ΠΈ случай ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Π°Ρ‚Π° систСма Π½Π°Π»Π°Π³Π° Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈ Ρ€Π°Π·Ρ…ΠΎΠ΄ΠΈ Π·Π° ΠΏΠ»Π°Π½ΠΈΡ€Π°Π½Π΅, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈΡ‚Π΅ сС ΠΊΠΎΠ½ΠΊΡƒΡ€ΠΈΡ€Π°Ρ‚ Π·Π° CPU. Π˜Π·ΠΌΠ΅Ρ€Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Π°Ρ‚Π° систСма Π½Π° всяка ΠΎΡ‚ ΠΈΠ·Π±Ρ€Π°Π½ΠΈΡ‚Π΅ ΡΡŠΡ€Π²ΡŠΡ€Π½ΠΈ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΈ Π΅ Π΅Π΄Π½Π° ΠΎΡ‚ Π½Π°ΠΉ-Π²Π°ΠΆΠ½ΠΈΡ‚Π΅ Ρ†Π΅Π»ΠΈ Π½Π° Ρ‚ΠΎΠ²Π° ΡƒΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠ΅. ДобавянСто Π½Π° ΠΏΠΎΠ²Π΅Ρ‡Π΅ ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ Ρ‰Π΅ станС ΠΏΠ°Π³ΡƒΠ±Π½ΠΎ Π·Π° процСса. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»Π½ΠΎ настройката Π½Π° снимката ΠΏΠΎ-Π³ΠΎΡ€Π΅ Ρ€Π°Π±ΠΎΡ‚ΠΈ Π½Π°ΠΉ-Π΄ΠΎΠ±Ρ€Π΅.

Какво ΠΏΡ€Π°Π²ΠΈ всСки ΠΎΡ‚ Ρ‚Π΅Π·ΠΈ ΡΡŠΡ€Π²ΡŠΡ€ΠΈ?

  • load.unixism.net: Π’ΡƒΠΊ Ρ€Π°Π±ΠΎΡ‚ΠΈΠΌ ab, ΠΏΠΎΠΌΠΎΡ‰Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ° Apache Benchmark. Π’ΠΎΠΉ Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π° Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅Ρ‚ΠΎ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π° тСстванС Π½Π° Π½Π°ΡˆΠΈΡ‚Π΅ ΡΡŠΡ€Π²ΡŠΡ€Π½ΠΈ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΈ.
  • nginx.unixism.net: Понякога искамС Π΄Π° стартирамС ΠΏΠΎΠ²Π΅Ρ‡Π΅ ΠΎΡ‚ Π΅Π΄Π½ΠΎ ΠΊΠΎΠΏΠΈΠ΅ Π½Π° ΡΡŠΡ€Π²ΡŠΡ€Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ°. Π—Π° Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ Ρ‚ΠΎΠ²Π°, Nginx ΡΡŠΡ€Π²ΡŠΡ€ΡŠΡ‚ с подходящитС настройки Ρ€Π°Π±ΠΎΡ‚ΠΈ ΠΊΠ°Ρ‚ΠΎ Π±Π°Π»Π°Π½ΡΡŒΠΎΡ€ Π½Π° Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅Ρ‚ΠΎ, ΠΈΠ΄Π²Π°Ρ‰ ΠΎΡ‚ ab към Π½Π°ΡˆΠΈΡ‚Π΅ ΡΡŠΡ€Π²ΡŠΡ€Π½ΠΈ процСси.
  • zerohttpd.unixism.net: Π’ΡƒΠΊ изпълнявамС Π½Π°ΡˆΠΈΡ‚Π΅ ΡΡŠΡ€Π²ΡŠΡ€Π½ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈ Π½Π° сСдСм Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΈ, Π΅Π΄Π½Π° ΠΏΠΎ Π΅Π΄Π½Π°.
  • redis.unixism.net: Π’ΠΎΠ·ΠΈ ΡΡŠΡ€Π²ΡŠΡ€ изпълнява Π΄Π΅ΠΌΠΎΠ½Π° Redis, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ сС ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°Ρ‚ записи Π² ΠΊΠ½ΠΈΠ³Π°Ρ‚Π° Π·Π° гости ΠΈ броячи Π½Π° посСтитСли.

Всички ΡΡŠΡ€Π²ΡŠΡ€ΠΈ работят Π½Π° Π΅Π΄Π½ΠΎ ΠΈ ΡΡŠΡ‰ΠΎ процСсорно ядро. Π˜Π΄Π΅ΡΡ‚Π° Π΅ Π΄Π° сС ΠΎΡ†Π΅Π½ΠΈ максималната производитСлност Π½Π° всяка Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°. Въй ΠΊΠ°Ρ‚ΠΎ всички ΡΡŠΡ€Π²ΡŠΡ€Π½ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈ сС тСстват Π½Π° Π΅Π΄ΠΈΠ½ ΠΈ ΡΡŠΡ‰ Ρ…Π°Ρ€Π΄ΡƒΠ΅Ρ€, Ρ‚ΠΎΠ²Π° Π΅ Π±Π°Π·ΠΎΠ²Π° линия Π·Π° сравнСниС. ΠœΠΎΡΡ‚Π° тСстова настройка сС ΡΡŠΡΡ‚ΠΎΠΈ ΠΎΡ‚ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½ΠΈ ΡΡŠΡ€Π²ΡŠΡ€ΠΈ, Π½Π°Π΅Ρ‚ΠΈ ΠΎΡ‚ Digital Ocean.

Какво ΠΈΠ·ΠΌΠ΅Ρ€Π²Π°ΠΌΠ΅?

ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΈΠ·ΠΌΠ΅Ρ€Π²Π°Ρ‚Π΅ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ. НиС оцСнявамС производитСлността Π½Π° всяка Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° Π² Π΄Π°Π΄Π΅Π½Π° конфигурация, ΠΊΠ°Ρ‚ΠΎ Π·Π°Ρ€Π΅ΠΆΠ΄Π°ΠΌΠ΅ ΡΡŠΡ€Π²ΡŠΡ€ΠΈΡ‚Π΅ със заявки Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Π½ΠΈΠ²Π° Π½Π° ΠΏΠ°Ρ€Π°Π»Π΅Π»ΠΈΠ·ΡŠΠΌ: Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅Ρ‚ΠΎ нараства ΠΎΡ‚ 20 Π΄ΠΎ 15 000 Π΅Π΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΈ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈ.

Π Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈ ΠΎΡ‚ тСста

Π‘Π»Π΅Π΄Π½Π°Ρ‚Π° Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠ° ΠΏΠΎΠΊΠ°Π·Π²Π° производитСлността Π½Π° ΡΡŠΡ€Π²ΡŠΡ€ΠΈ Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΈ Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Π½ΠΈΠ²Π° Π½Π° ΠΏΠ°Ρ€Π°Π»Π΅Π»ΠΈΠ·ΡŠΠΌ. ΠžΡΡ‚Π° y Π΅ броят Π½Π° заявкитС Π² сСкунда, оста x Π΅ ΠΏΠ°Ρ€Π°Π»Π΅Π»Π½ΠΈΡ‚Π΅ Π²Ρ€ΡŠΠ·ΠΊΠΈ.

ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»Π½ΠΎΡΡ‚ Π½Π° Linux ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Π’ΡŠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅

ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»Π½ΠΎΡΡ‚ Π½Π° Linux ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Π’ΡŠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅

ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»Π½ΠΎΡΡ‚ Π½Π° Linux ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Π’ΡŠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅

По-Π΄ΠΎΠ»Ρƒ ΠΈΠΌΠ° Ρ‚Π°Π±Π»ΠΈΡ†Π° с Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈΡ‚Π΅.

заявки Π² сСкунда

ΠΏΠ°Ρ€Π°Π»Π΅Π»ΠΈΠ·ΡŠΠΌ
ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΈΠ²Π΅Π½
Π²ΠΈΠ»ΠΈΡ†Π°
ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»Π½ΠΎ Π²ΠΈΠ»ΠΈΡ†Π°
стрийминг
ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»Π½ΠΎ ΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎ ΠΏΡ€Π΅Π΄Π°Π²Π°Π½Π΅
АнкСта
epoll

20
7
112
2100
1800
2250
1900
2050

50
7
190
2200
1700
2200
2000
2000

100
7
245
2200
1700
2200
2150
2100

200
7
330
2300
1750
2300
2200
2100

300
-
380
2200
1800
2400
2250
2150

400
-
410
2200
1750
2600
2000
2000

500
-
440
2300
1850
2700
1900
2212

600
-
460
2400
1800
2500
1700
2519

700
-
460
2400
1600
2490
1550
2607

800
-
460
2400
1600
2540
1400
2553

900
-
460
2300
1600
2472
1200
2567

1000
-
475
2300
1700
2485
1150
2439

1500
-
490
2400
1550
2620
900
2479

2000
-
350
2400
1400
2396
550
2200

2500
-
280
2100
1300
2453
490
2262

3000
-
280
1900
1250
2502
голямо разпространСниС
2138

5000
-
голямо разпространСниС
1600
1100
2519
-
2235

8000
-
-
1200
голямо разпространСниС
2451
-
2100

10 000
-
-
голямо разпространСниС
-
2200
-
2200

11 000
-
-
-
-
2200
-
2122

12 000
-
-
-
-
970
-
1958

13 000
-
-
-
-
730
-
1897

14 000
-
-
-
-
590
-
1466

15 000
-
-
-
-
532
-
1281

ΠžΡ‚ Π³Ρ€Π°Ρ„ΠΈΠΊΠ°Ρ‚Π° ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ‚Π° ΠΌΠΎΠΆΠ΅ Π΄Π° сС Π²ΠΈΠ΄ΠΈ, Ρ‡Π΅ Π½Π°Π΄ 8000 Π΅Π΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΈ заявки ΠΈΠΌΠ°ΠΌΠ΅ само Π΄Π²Π°ΠΌΠ° останали ΠΈΠ³Ρ€Π°Ρ‡ΠΈ: pre-fork ΠΈ epoll. Π‘ нарастванСто Π½Π° Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅Ρ‚ΠΎ ΡΡŠΡ€Π²ΡŠΡ€ΡŠΡ‚, Π±Π°Π·ΠΈΡ€Π°Π½ Π½Π° Π°Π½ΠΊΠ΅Ρ‚ΠΈ, сС прСдставя ΠΏΠΎ-лошо ΠΎΡ‚ стрийминг. АрхитСктурата Π·Π° ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»Π½ΠΎ създаванС Π½Π° нишки Π΅ достоСн ΠΊΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ‚ Π½Π° epoll, доказатСлство Π·Π° Ρ‚ΠΎΠ²Π° ΠΊΠΎΠ»ΠΊΠΎ Π΄ΠΎΠ±Ρ€Π΅ ядрото Π½Π° Linux ΠΏΠ»Π°Π½ΠΈΡ€Π° голям Π±Ρ€ΠΎΠΉ нишки.

ZeroHTTPd ΠΈΠ·Ρ…ΠΎΠ΄Π΅Π½ ΠΊΠΎΠ΄

ZeroHTTPd ΠΈΠ·Ρ…ΠΎΠ΄Π΅Π½ ΠΊΠΎΠ΄ Ρ‚ΡƒΠΊ. Π—Π° всяка Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° ΠΈΠΌΠ° ΠΎΡ‚Π΄Π΅Π»Π½Π° дирСктория.

ZeroHTTPd β”‚ β”œβ”€β”€ 01_iterative β”‚ β”œβ”€β”€ main.c β”œβ”€β”€ 02_forking β”‚ β”œβ”€β”€ main.c β”œβ”€β”€ 03_preforking β”‚ β”œβ”€β”€ main.c β”œβ”€β”€ 04_ threading β”‚ β”œβ”€β”€ main.c β”œβ”€β”€β”€ 05_prethreading β”‚ β”œβ”€β”€ main.c β”œβ”€β”€ 06_poll β”‚ β”œβ”€β”€ main.c β”œβ”€β”€ 07_epoll β”‚ └── main.c β”œβ”€β”€ Makefile β”œβ”€β”€ public β”‚ β”œβ”€β”€ index .html β”‚ └── tux . png └── шаблони └── ΠΊΠ½ΠΈΠ³Π° Π·Π° гости └── index.html

Π’ допълнСниС към сСдСмтС Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ Π·Π° всички Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΈ, ΠΈΠΌΠ° ΠΎΡ‰Π΅ Π΄Π²Π΅ Π² дирСкторията ΠΎΡ‚ Π½Π°ΠΉ-високо Π½ΠΈΠ²ΠΎ: ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Π° ΠΈ шаблони. ΠŸΡŠΡ€Π²ΠΈΡΡ‚ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ° Ρ„Π°ΠΉΠ»Π° index.html ΠΈ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ ΠΎΡ‚ ΠΏΡŠΡ€Π²Π°Ρ‚Π° Π΅ΠΊΡ€Π°Π½Π½Π° снимка. ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° поставитС Π΄Ρ€ΡƒΠ³ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ ΠΈ ΠΏΠ°ΠΏΠΊΠΈ Ρ‚Π°ΠΌ ΠΈ ZeroHTTPd трябва Π΄Π° обслуТва Ρ‚Π΅Π·ΠΈ статични Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ Π±Π΅Π· Π½ΠΈΠΊΠ°ΠΊΠ²ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ. Ако ΠΏΡŠΡ‚ΡΡ‚ Π² Π±Ρ€Π°ΡƒΠ·ΡŠΡ€Π° съвпада с ΠΏΡŠΡ‚Ρ Π² ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Π°Ρ‚Π° ΠΏΠ°ΠΏΠΊΠ°, Ρ‚ΠΎΠ³Π°Π²Π° ZeroHTTPd Ρ‚ΡŠΡ€ΡΠΈ Ρ„Π°ΠΉΠ»Π° index.html Π² Ρ‚Π°Π·ΠΈ дирСктория. Π‘ΡŠΠ΄ΡŠΡ€ΠΆΠ°Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΊΠ½ΠΈΠ³Π°Ρ‚Π° Π·Π° гости сС Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π° Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π½ΠΎ. Π’ΠΎΠΉ ΠΈΠΌΠ° само Π½Π°Ρ‡Π°Π»Π½Π° страница ΠΈ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Π½ΠΈΠ΅Ρ‚ΠΎ ΠΌΡƒ Π΅ Π±Π°Π·ΠΈΡ€Π°Π½ΠΎ Π½Π° Ρ„Π°ΠΉΠ»Π° 'templates/guestbook/index.html'. ZeroHTTPd лСсно добавя Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π½ΠΈ страници Π·Π° Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΠ΅. Π˜Π΄Π΅ΡΡ‚Π° Π΅, Ρ‡Π΅ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈΡ‚Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° добавят шаблони към Ρ‚Π°Π·ΠΈ дирСктория ΠΈ Π΄Π° Ρ€Π°Π·ΡˆΠΈΡ€ΡΠ²Π°Ρ‚ ZeroHTTPd спорСд Π½ΡƒΠΆΠ΄ΠΈΡ‚Π΅.

Π—Π° Π΄Π° ΠΈΠ·Π³Ρ€Π°Π΄ΠΈΡ‚Π΅ всичкитС сСдСм ΡΡŠΡ€Π²ΡŠΡ€Π°, стартирайтС make all ΠΎΡ‚ дирСкторията ΠΎΡ‚ Π½Π°ΠΉ-високо Π½ΠΈΠ²ΠΎ - ΠΈ всички ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ†ΠΈΠΈ Ρ‰Π΅ сС ΠΏΠΎΠΊΠ°Π·Π²Π°Ρ‚ Π² Ρ‚Π°Π·ΠΈ дирСктория. Π˜Π·ΠΏΡŠΠ»Π½ΠΈΠΌΠΈΡ‚Π΅ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ Ρ‚ΡŠΡ€ΡΡΡ‚ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½ΠΈΡ‚Π΅ ΠΈ ΡˆΠ°Π±Π»ΠΎΠ½Π½ΠΈΡ‚Π΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ Π² дирСкторията, ΠΎΡ‚ която са стартирани.

Linux API

НС Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° стС Π΄ΠΎΠ±Ρ€Π΅ Π·Π°ΠΏΠΎΠ·Π½Π°Ρ‚ΠΈ с Linux API, Π·Π° Π΄Π° Ρ€Π°Π·Π±Π΅Ρ€Π΅Ρ‚Π΅ информацията Π² Ρ‚Π°Π·ΠΈ ΠΏΠΎΡ€Π΅Π΄ΠΈΡ†Π° ΠΎΡ‚ статии. ВсС ΠΏΠ°ΠΊ ΠΏΡ€Π΅ΠΏΠΎΡ€ΡŠΡ‡Π²Π°ΠΌ Π΄Π° ΠΏΡ€ΠΎΡ‡Π΅Ρ‚Π΅Ρ‚Π΅ ΠΏΠΎΠ²Π΅Ρ‡Π΅ ΠΏΠΎ Ρ‚Π°Π·ΠΈ Ρ‚Π΅ΠΌΠ°; ΠΈΠΌΠ° ΠΌΠ½ΠΎΠ³ΠΎ справочни рСсурси Π² Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚. Π’ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‡Π΅ Ρ‰Π΅ сС докоснСм Π΄ΠΎ няколко ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ API Π½Π° Linux, Ρ„ΠΎΠΊΡƒΡΡŠΡ‚ Π½ΠΈ Ρ‰Π΅ бъдС основно Π²ΡŠΡ€Ρ…Ρƒ процСситС, Π½ΠΈΡˆΠΊΠΈΡ‚Π΅, ΡΡŠΠ±ΠΈΡ‚ΠΈΡΡ‚Π° ΠΈ мрСТовия стСк. Π’ допълнСниС към ΠΊΠ½ΠΈΠ³ΠΈΡ‚Π΅ ΠΈ статиитС Π·Π° Linux API, ΠΏΡ€Π΅ΠΏΠΎΡ€ΡŠΡ‡Π²Π°ΠΌ ΡΡŠΡ‰ΠΎ Π΄Π° Ρ‡Π΅Ρ‚Π΅Ρ‚Π΅ ΠΌΠ°Π½Π° Π·Π° систСмни извиквания ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»Π½ΠΎΡΡ‚ ΠΈ мащабируСмост

Π•Π΄Π½Π° Π·Π°Π±Π΅Π»Π΅ΠΆΠΊΠ° относно производитСлността ΠΈ скалируСмостта. Π’Π΅ΠΎΡ€Π΅Ρ‚ΠΈΡ‡Π½ΠΎ ΠΌΠ΅ΠΆΠ΄Ρƒ тях няма Π²Ρ€ΡŠΠ·ΠΊΠ°. ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΈΠΌΠ°Ρ‚Π΅ ΡƒΠ΅Π± услуга, която Ρ€Π°Π±ΠΎΡ‚ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΠΎΠ±Ρ€Π΅, с Π²Ρ€Π΅ΠΌΠ΅ Π·Π° рСакция ΠΎΡ‚ няколко милисСкунди, Π½ΠΎ тя ΠΈΠ·ΠΎΠ±Ρ‰ΠΎ Π½Π΅ сС ΠΌΠ°Ρ‰Π°Π±ΠΈΡ€Π°. По ΡΡŠΡ‰ΠΈΡ Π½Π°Ρ‡ΠΈΠ½ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠΌΠ° слабо Ρ€Π°Π±ΠΎΡ‚Π΅Ρ‰ΠΎ ΡƒΠ΅Π± ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΎΡ‚Π½Π΅ΠΌΠ° няколко сСкунди, Π·Π° Π΄Π° ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€ΠΈ, Π½ΠΎ Ρ‚ΠΎ сС ΠΌΠ°Ρ‰Π°Π±ΠΈΡ€Π° с дСсСтки, Π·Π° Π΄Π° сС справи с дСсСтки хиляди Π΅Π΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΈ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈ. ΠšΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡΡ‚Π° ΠΎΡ‚ висока производитСлност ΠΈ мащабируСмост ΠΎΠ±Π°Ρ‡Π΅ Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠΎΡ‰Π½Π° комбинация. ВисокопроизводитСлнитС прилоТСния ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ рСсурситС пСстСливо ΠΈ ΠΏΠΎ Ρ‚ΠΎΠ·ΠΈ Π½Π°Ρ‡ΠΈΠ½ обслуТват Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎ ΠΏΠΎΠ²Π΅Ρ‡Π΅ Π΅Π΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΈ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈ Π½Π° ΡΡŠΡ€Π²ΡŠΡ€Π°, намалявайки Ρ€Π°Π·Ρ…ΠΎΠ΄ΠΈΡ‚Π΅.

CPU ΠΈ I/O Π·Π°Π΄Π°Ρ‡ΠΈ

И накрая, Π² ΠΊΠΎΠΌΠΏΡŽΡ‚Ρ€ΠΈΡ‚Π΅ Π²ΠΈΠ½Π°Π³ΠΈ ΠΈΠΌΠ° Π΄Π²Π° възмоТни Ρ‚ΠΈΠΏΠ° Π·Π°Π΄Π°Ρ‡ΠΈ: Π·Π° I/O ΠΈ CPU. ΠŸΠΎΠ»ΡƒΡ‡Π°Π²Π°Π½Π΅ Π½Π° заявки ΠΏΠΎ ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚ (ΠΌΡ€Π΅ΠΆΠΎΠ² I/O), обслуТванС Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ (ΠΌΡ€Π΅ΠΆΠΎΠ² ΠΈ дисков I/O), комуникация с Π±Π°Π·Π°Ρ‚Π° Π΄Π°Π½Π½ΠΈ (ΠΌΡ€Π΅ΠΆΠΎΠ² ΠΈ дисков I/O) са всички I/O дСйности. Някои заявки към Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Ρ‚ ΠΌΠ°Π»ΠΊΠΎ процСсора (сортиранС, осрСдняванС Π½Π° ΠΌΠΈΠ»ΠΈΠΎΠ½ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈ ΠΈ Ρ‚.Π½.). ΠŸΠΎΠ²Π΅Ρ‡Π΅Ρ‚ΠΎ ΡƒΠ΅Π± прилоТСния са ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈ ΠΎΡ‚ максималния възмоТСн I/O ΠΈ ΠΏΡ€ΠΎΡ†Π΅ΡΠΎΡ€ΡŠΡ‚ рядко сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° с пълСн ΠΊΠ°ΠΏΠ°Ρ†ΠΈΡ‚Π΅Ρ‚. ΠšΠΎΠ³Π°Ρ‚ΠΎ Π²ΠΈΠ΄ΠΈΡ‚Π΅, Ρ‡Π΅ някаква I/O Π·Π°Π΄Π°Ρ‡Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΌΠ½ΠΎΠ³ΠΎ CPU, Ρ‚ΠΎΠ²Π° Π½Π°ΠΉ-вСроятно Π΅ Π·Π½Π°ΠΊ Π·Π° лоша Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ. Π’ΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΎΠ·Π½Π°Ρ‡Π°Π²Π°, Ρ‡Π΅ рСсурситС Π½Π° процСсора сС губят Π·Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° процСси ΠΈ ΠΏΡ€Π΅Π²ΠΊΠ»ΡŽΡ‡Π²Π°Π½Π΅ Π½Π° контСкста - ΠΈ Ρ‚ΠΎΠ²Π° Π½Π΅ Π΅ напълно ΠΏΠΎΠ»Π΅Π·Π½ΠΎ. Ако ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ Π½Π΅Ρ‰ΠΎ ΠΊΠ°Ρ‚ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° изобраТСния, ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€Π°Π½Π΅ Π½Π° Π°ΡƒΠ΄ΠΈΠΎ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ ΠΈΠ»ΠΈ машинно ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅, Ρ‚ΠΎΠ³Π°Π²Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ изисква ΠΌΠΎΡ‰Π½ΠΈ рСсурси Π½Π° процСсора. Но Π·Π° ΠΏΠΎΠ²Π΅Ρ‡Π΅Ρ‚ΠΎ прилоТСния Ρ‚ΠΎΠ²Π° Π½Π΅ Π΅ Ρ‚Π°ΠΊΠ°.

НаучСтС ΠΏΠΎΠ²Π΅Ρ‡Π΅ Π·Π° ΡΡŠΡ€Π²ΡŠΡ€Π½ΠΈΡ‚Π΅ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΈ

  1. Част I: Π˜Ρ‚Π΅Ρ€Π°Ρ‚ΠΈΠ²Π½Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°
  2. Част II. Fork ΡΡŠΡ€Π²ΡŠΡ€ΠΈ
  3. Част III. Pre-fork ΡΡŠΡ€Π²ΡŠΡ€ΠΈ
  4. Част IV. Π‘ΡŠΡ€Π²ΡŠΡ€ΠΈ с нишки Π·Π° изпълнСниС
  5. Част V. ΠŸΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»Π½ΠΎ ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈ ΡΡŠΡ€Π²ΡŠΡ€ΠΈ
  6. Част VI. Π‘Π°Π·ΠΈΡ€Π°Π½Π° Π½Π° Pol Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°
  7. Част VII. Π±Π°Π·ΠΈΡ€Π°Π½Π° Π½Π° epoll Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: www.habr.com

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€