Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΡƒΠ» вопросов

Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ слова Β«ΠΏΡƒΠ»Β»

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΡƒΠ» вопросов. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΡƒΠ» вопросов. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΡƒΠ» вопросов. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΡƒΠ» вопросов. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΡƒΠ» вопросов

1. Одна ΠΈΠ· Ρ„ΠΎΡ€ΠΌ капиталистичСских ΠΌΠΎΠ½ΠΎΠΏΠΎΠ»ΠΈΠΉ, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΏΡ€ΠΈΠ±Ρ‹Π»ΡŒ всСх участников поступаСт Π² ΠΎΠ±Ρ‰ΠΈΠΉ Ρ„ΠΎΠ½Π΄ ΠΈ Π·Π°Ρ‚Π΅ΠΌ распрСдСляСтся ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ Π² Π·Π°Ρ€Π°Π½Π΅Π΅ Π½Π°ΠΌΠ΅Ρ‡Π΅Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΠΏΠΎΡ€Ρ†ΠΈΠΈ.

2. ΠšΠΎΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½Π°Ρ организация Ρ„Π΅Ρ€ΠΌΠ΅Ρ€ΠΎΠ² ΠšΠ°Π½Π°Π΄Ρ‹, БША ΠΈ Австралии ΠΏΠΎ сбыту ΡΠ΅Π»ΡŒΡΠΊΠΎΡ…ΠΎΠ·ΡΠΉΡΡ‚Π²Π΅Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ†ΠΈΠΈ, Π³Π». ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΏΡˆΠ΅Π½ΠΈΡ†Ρ‹.

[ΠžΡ‚ Π°Π½Π³Π». pool β€” ΠΎΠ±Ρ‰ΠΈΠΉ ΠΊΠΎΡ‚Π΅Π»]

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ (пСчатная вСрсия): Π‘Π»ΠΎΠ²Π°Ρ€ΡŒ русского языка: Π’ 4-Ρ… Ρ‚. / РАН, Ин-Ρ‚ лингвистич. исслСдований; Под Ρ€Π΅Π΄. А. П. Π•Π²Π³Π΅Π½ΡŒΠ΅Π²ΠΎΠΉ. β€” 4-Π΅ ΠΈΠ·Π΄., стСр. β€” М.: Рус. яз.; ΠŸΠΎΠ»ΠΈΠ³Ρ€Π°Ρ„Ρ€Π΅ΡΡƒΡ€ΡΡ‹, 1999; (элСктронная вСрсия): Π€ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Π°Ρ элСктронная Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°

ΠŸΡƒΠ» β€” Ρ€Π°Π·Π½ΠΎΠ²ΠΈΠ΄Π½ΠΎΡΡ‚ΡŒ Π±ΠΈΠ»ΡŒΡΡ€Π΄Π°.

ΠŸΡƒΠ»-8 β€” ΠΏΠΎΠ΄Ρ€Π°Π·Π½ΠΎΠ²ΠΈΠ΄Π½ΠΎΡΡ‚ΡŒ Π±ΠΈΠ»ΡŒΡΡ€Π΄Π° Β«ΠΏΡƒΠ»Β».

ΠŸΡƒΠ» чСкСрс β€” Ρ€Π°Π·Π½ΠΎΠ²ΠΈΠ΄Π½ΠΎΡΡ‚ΡŒ ΠΈΠ³Ρ€Ρ‹ Π² шашки.

ΠœΠΎΠ΄Π΅ΠΌΠ½Ρ‹ΠΉ ΠΏΡƒΠ» β€” ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅ для обСспСчСния доступа ΠΊ сСти Ρ‡Π΅Ρ€Π΅Π· ΠΌΠΎΠ΄Π΅ΠΌ.

ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹ΠΉ ΠΏΡƒΠ» β€” Π² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ΅ Π½Π°Π±ΠΎΡ€ Π³ΠΎΡ‚ΠΎΠ²Ρ‹Ρ… ΠΊ использованию ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².

ΠŸΡƒΠ» (ΠΏΡƒΠ»ΠΎ) β€” мСдная ΠΌΠΎΠ½Π΅Ρ‚Π° Π—ΠΎΠ»ΠΎΡ‚ΠΎΠΉ ΠžΡ€Π΄Ρ‹, Π”Ρ€Π΅Π²Π½Π΅ΠΉ Руси; Π² настоящСС врСмя размСнная дСнСТная Π΅Π΄ΠΈΠ½ΠΈΡ†Π° Афганистана (1/100 Π°Ρ„Π³Π°Π½ΠΈ).

Π›ΡŒΠ²ΠΎΠ²ΡΠΊΠΈΠΉ ΠΏΡƒΠ» β€” мСдная ΠΌΠΎΠ½Π΅Ρ‚Π° XIV Π²Π΅ΠΊΠ°, Ρ‡Π΅ΠΊΠ°Π½ΠΈΠ²ΡˆΠ°ΡΡΡ Π²ΠΎ Π›ΡŒΠ²ΠΎΠ²Π΅.

ΠŸΡƒΠ» (Π°Π½Π³Π». Poole) β€” Π³ΠΎΡ€ΠΎΠ΄ Π² Π’Π΅Π»ΠΈΠΊΠΎΠ±Ρ€ΠΈΡ‚Π°Π½ΠΈΠΈ.

ΠŸΡƒΠ» β€” Π±ΡƒΡ…Ρ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π΄Π°Π» Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Π³ΠΎΡ€ΠΎΠ΄.

ΠŸΡƒΠ» β€” Π΄Π΅ΠΏΠ°Ρ€Ρ‚Π°ΠΌΠ΅Π½Ρ‚ Π² юТной части РСспублики Конго.

Π‘Ρ‚Ρ€Π°Ρ…ΠΎΠ²ΠΎΠΉ ΠΏΡƒΠ» β€” Π΄ΠΎΠ±Ρ€ΠΎΠ²ΠΎΠ»ΡŒΠ½ΠΎΠ΅ объСдинСниС страховщиков.

ΠšΡ€Π΅ΠΌΠ»Ρ‘Π²ΡΠΊΠΈΠΉ ΠΏΡƒΠ» β€” Π³Ρ€ΡƒΠΏΠΏΠ° Турналистов, Π½Π° постоянной основС ΠΎΡΠ²Π΅Ρ‰Π°ΡŽΡ‰ΠΈΡ… Π΄Π΅ΡΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠŸΡ€Π΅Π·ΠΈΠ΄Π΅Π½Ρ‚Π° Российской Π€Π΅Π΄Π΅Ρ€Π°Ρ†ΠΈΠΈ.

ΠŸΡƒΠ» (Π°Π½Π³Π». pool β€” Β«ΠΎΠ±Ρ‰ΠΈΠΉ ΠΊΠΎΡ‚Ρ‘Π»Β») β€” Π²ΠΈΠ΄ ΠΌΠΎΠ½ΠΎΠΏΠΎΠ»ΠΈΠΈ, объСдинСниС участников Ρ€Ρ‹Π½ΠΊΠ°, ΠΏΡ€ΠΈΠ±Ρ‹Π»ΡŒ ΠΈ расходы ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΏΠΎΡΡ‚ΡƒΠΏΠ°ΡŽΡ‚ Π² ΠΎΠ±Ρ‰ΠΈΠΉ Ρ„ΠΎΠ½Π΄ ΠΈ Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ согласно Π·Π°Ρ€Π°Π½Π΅Π΅ установлСнной ΠΏΡ€ΠΎΠΏΠΎΡ€Ρ†ΠΈΠΈ.

ΠŸΠ£Π›, Π°, ΠΌ. [Π°Π½Π³Π». pool β€” ΠΎΠ±Ρ‰ΠΈΠΉ ΠΊΠΎΡ‚Π΅Π»] (экон.). 1. Π’ Англии ΠΈ БША β€” Ρ€ΠΎΠ΄ монополистичСского объСдинСния капиталистов для искусствСнного ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ Ρ†Π΅Π½, Π² ΠΊ-Ρ€ΠΎΠΌ ΠΏΡ€ΠΈΠ±Ρ‹Π»ΡŒ участников поступаСт Π² ΠΎΠ±Ρ‰ΠΈΠΉ Ρ„ΠΎΠ½Π΄ с ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ распрСдСлСниСм ΠΏΠΎ Π·Π°Ρ€Π°Π½Π΅Π΅ установлСнной ΠΏΡ€ΠΎΠΏΠΎΡ€Ρ†ΠΈΠΈ. 2. Π’ БША, КанадС ΠΈ Австралии β€” капиталистичСская организация ΠΏΠΎ сбыту с.-Ρ…. ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ†ΠΈΠΈ, Π² Ρ„ΠΎΡ€ΠΌΠ΅ фСрмСрской ΠΊΠΎΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, стрСмящаяся ΠΊ ΠΌΠΎΠ½ΠΎΠΏΠΎΠ»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ€Ρ‹Π½ΠΊΠ° ΠΈ ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡŽ Ρ†Π΅Π½ ΠΈ ΡΠΊΡΠΏΠ»ΠΎΠ°Ρ‚ΠΈΡ€ΡƒΡŽΡ‰Π°Ρ ΠΊΠ°ΠΊ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»Π΅ΠΉ, Ρ‚Π°ΠΊ ΠΈ самих Ρ„Π΅Ρ€ΠΌΠ΅Ρ€ΠΎΠ².

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: Β«Π’ΠΎΠ»ΠΊΠΎΠ²Ρ‹ΠΉ ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ русского языка» ΠΏΠΎΠ΄ Ρ€Π΅Π΄Π°ΠΊΡ†ΠΈΠ΅ΠΉ Π”. Н. Ушакова (1935-1940); (элСктронная вСрсия): Π€ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Π°Ρ элСктронная Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°

ΠΏΡƒΠ» I

1. экон. ΠΎΠ΄Π½Π° ΠΈΠ· Ρ„ΠΎΡ€ΠΌ ΠΌΠΎΠ½ΠΎΠΏΠΎΠ»ΠΈΠΈ; Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ΅ объСдинСниС, соглашСниС ΠΌΠ΅ΠΆΠ΄Ρƒ прСдприниматСлями, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΏΡ€ΠΈΠ±Ρ‹Π»ΡŒ всСх участников поступаСт Π² ΠΎΠ±Ρ‰ΠΈΠΉ Ρ„ΠΎΠ½Π΄ ΠΈ Π·Π°Ρ‚Π΅ΠΌ распрСдСляСтся ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ Π² Π·Π°Ρ€Π°Π½Π΅Π΅ Π½Π°ΠΌΠ΅Ρ‡Π΅Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΠΏΠΎΡ€Ρ†ΠΈΠΈ

2. спСц. объСдинСниС, ΡΠΎΠ²ΠΎΠΊΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ рСсурсов, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹Ρ… для совмСстного использования

3. спСц. Π³Ρ€ΡƒΠΏΠΏΠ°, мноТСство ΠΎΠ΄Π½ΠΎΡ€ΠΎΠ΄Π½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠ΅ΠΌΡ‹Ρ… ΠΏΠΎ ΠΊΠ°ΠΊΠΎΠΌΡƒ-Π»ΠΈΠ±ΠΎ ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΡƒ β—† ❬…❭ Π’ Ρ‚Π°ΠΊΠΎΠΌ ΠΆΠ΅ напряТённом Ρ€ΠΈΡ‚ΠΌΠ΅ пСрСдвигаСтся Турналистский крСмлёвский ΠΏΡƒΠ», Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΉ Π² любой ΠΌΠΎΠΌΠ΅Π½Ρ‚, словно Ρ‚Π°Π±ΠΎΡ€, ΡΠ½ΡΡ‚ΡŒΡΡ с мСста, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ Π·Π° Π³Π»Π°Π²ΠΎΠΉ государства. ❬…❭ Борис Π“Ρ€ΠΈΡ‰Π΅Π½ΠΊΠΎ, Β«ΠŸΠΎΡΡ‚ΠΎΡ€ΠΎΠ½Π½ΠΈΠΉ Π² ΠšΡ€Π΅ΠΌΠ»Π΅Β», 2004 Π³. (Ρ†ΠΈΡ‚Π°Ρ‚Π° ΠΈΠ· НКРЯ)

ΠΏΡƒΠ» II

1. размСнная ΠΌΠΎΠ½Π΅Ρ‚Π° Афганистана, равная ΠΎΠ΄Π½ΠΎΠΉ сотой Π°Ρ„Π³Π°Π½ΠΈ

2. истор. мСдная ΠΌΠΎΠ½Π΅Ρ‚Π° Π—ΠΎΠ»ΠΎΡ‚ΠΎΠΉ ΠžΡ€Π΄Ρ‹, Ρ‡Π΅ΠΊΠ°Π½ΠΈΠ²ΡˆΠ°ΡΡΡ Π² XIII–XV Π²Π΅ΠΊΠ°Ρ… β—† ❬…❭ ΠΈ Π΅ΠΆΠ΅Π»ΠΈ Π±Ρ‹ стараниСм ΠΌΠΎΠΈΠΌ Π½Π΅ склонил я Π½Π° свою сторону Ρ‚ΠΎΠ²Π°Ρ€ΠΈΡ‰Π° сСкрСтаря ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΡ…, Ρ‚Π°ΠΊ Π±Ρ‹ Ρƒ мСня Π² мошнС Π½Π΅ Π±Ρ‹Π»ΠΎ Π½ΠΈ ΠΏΡƒΠ»Π°. ❬…❭ Н. И. Новиков, «ЖивописСц», Π’Ρ€Π΅Ρ‚ΡŒΠ΅ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ 1775 Π³. Π§Π°ΡΡ‚ΡŒ I, 1775 Π³. (Ρ†ΠΈΡ‚Π°Ρ‚Π° ΠΈΠ· НКРЯ) β—† ❬…❭ ΠœΠΎΠ³ΠΎΠ»Ρ‹ Π² Π΄Ρ€Π΅Π²Π½Π΅ΠΌ своём отСчСствС ΠΈ Π² ΠšΠΈΡ‚Π°Π΅ вмСсто Π΄Π΅Π½Π΅Π³ употрСбляли Π΄Ρ€Π΅Π²Π΅ΡΠ½ΡƒΡŽ ΠΊΠΎΡ€Ρƒ ΠΈ лоскутки ΠΊΠΎΠΆΠ°Π½Ρ‹Π΅ с ΠΊΠ»Π΅ΠΉΠΌΠΎΠΌ ханским; Π½ΠΎ Π² Π‘ΡƒΡ…Π°Ρ€ΠΈΠΈ ΠΈ Π² ΠšΠ°ΠΏΡ‡Π°ΠΊΠ΅ ΠΈΠΌΠ΅Π»ΠΈ ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ ΡΠ΅Ρ€Π΅Π±Ρ€ΡΠ½ΡƒΡŽ ΠΈ ΠΌΠ΅Π΄Π½ΡƒΡŽ ΠΌΠΎΠ½Π΅Ρ‚Ρƒ: пСрвая Π½Π°Π·Ρ‹Π²Π°Π»Π°ΡΡŒ Ρ‚Π°Π½Π³ΠΎΡŽ, вторая ΠΏΡƒΠ»ΠΎΠΌ. ❬…❭ Н. М. ΠšΠ°Ρ€Π°ΠΌΠ·ΠΈΠ½, Β«Π˜ΡΡ‚ΠΎΡ€ΠΈΡ государства Российского», Π’ΠΎΠΌ 5, 1809–1820 Π³Π³. Π³. (Ρ†ΠΈΡ‚Π°Ρ‚Π° ΠΈΠ· НКРЯ)

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

Π’Π ΠΠ”Π˜Π¦Π˜ΠžΠΠΠžΠ• ΠŸΠ Π•Π”Π‘Π’ΠΠ’Π›Π•ΠΠ˜Π•. ΠŸΡƒΠ»Ρ‹ вопросов

You are viewing Ultra Course View content

This information applies only to the Original Course View. Your institution controls which tools are available.

ΠŸΡƒΠ» вопросов β€” это коллСкция вопросов, которая хранится для ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎΠ³ΠΎ использования.

Π’ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅ курса ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡƒΠ»Ρ‹ для создания тСстов ΠΈ опросов. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ‚Π°ΠΊΠΆΠ΅ ΡΠΊΡΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡƒΠ»Ρ‹ для использования Π² тСстах Π΄Ρ€ΡƒΠ³ΠΈΡ… курсов.

Вопросы ΠΏΡƒΠ»Π° практичСски ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½Ρ‹ вопросам тСстов. Они ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΎΡ‚Π·Ρ‹Π², ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ всС ΠΏΡ€ΠΎΡ‡ΠΈΠ΅ элСмСнты вопроса тСста, Π½ΠΎ Π½Π΅ содСрТат Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π±Π°Π»Π»ΠΎΠ².

ΠžΠ±Ρ‹Ρ‡Π½ΠΎ ΠΏΡ€Π΅ΠΏΠΎΠ΄Π°Π²Π°Ρ‚Π΅Π»ΠΈ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΡƒΠ»ΠΎΠ² Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… вопросов, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΠΎΠ³ΡƒΡ‚ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² Ρ€Π°Π·Π½Ρ‹Ρ… тСстах. НапримСр, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ курса «Устойчивая ΠΆΠΈΠ·Π½Π΅Π΄Π΅ΡΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΒ» ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΡƒΠ» вопросов для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· Π³Π»Π°Π²Π½Ρ‹Ρ… Ρ‚Π΅ΠΌ: ΠΏΠΈΡ‚Π°Π½ΠΈΠ΅, ΠΏΡ€ΠΎΠΆΠΈΠ²Π°Π½ΠΈΠ΅ ΠΈ энСргия. Π—Π°Ρ‚Π΅ΠΌ ΠΏΡ€Π΅ΠΏΠΎΠ΄Π°Π²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ эти ΠΏΡƒΠ»Ρ‹ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… тСстах ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… курсах.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΡƒΠ» вопросов. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΡƒΠ» вопросов. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΡƒΠ» вопросов. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΡƒΠ» вопросов. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΡƒΠ» вопросов

ВСрминология, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠ°Ρ Π² оцСниваниях Π½Π° курсах с Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹ΠΌ Π²ΠΈΠ΄ΠΎΠΌ ΠΈ Π²ΠΈΠ΄ΠΎΠΌ Ultra

ΠœΡ‹ внСсли Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ измСнСния Π² названия Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ оцСнивания, основанныС Π½Π° исслСдованиях ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΈ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΡ… отраслСвых стандартах. Π’ Π²ΠΈΠ΄Π΅ курса Ultra ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ новая тСрминология, которая соотвСтствуСт Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΌ стандартам.

Π’ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Π½ΠΈΠΆΠ΅ пСрСчислСны названия Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ оцСнивания Π² Π΄Π²ΡƒΡ… Π²ΠΈΠ΄Π°Ρ… курсов.

ВСрминология, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠ°Ρ Π² оцСниваниях Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹Ρ… курсов ΠΈ курсов Ultra

Π’ΠΈΠ΄ курса UltraΡ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ Π²ΠΈΠ΄ курса
ΠŸΡƒΠ» вопросовБлучайный Π±Π»ΠΎΠΊ ΠΈ Π½Π°Π±ΠΎΡ€ вопросов
Π‘Π°Π½ΠΊ Π²ΠΎΠΏΡ€ΠΎΡΠΎΠ²ΠŸΡƒΠ» вопросов
Анализ вопросовАнализ элСмСнтов

ВСкст ΠΏΡƒΠ»Π°

На страницС ВСкст ΠΏΡƒΠ»Π° ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ вопросами ΠΈ ΠΈΡΠΊΠ°Ρ‚ΡŒ ΠΈΡ… для добавлСния Π² ΠΏΡƒΠ». Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΏΡƒΠ»Π° ΠΈ инструкции ΠΊ Π½Π΅ΠΌΡƒ, ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ вопросы, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π²Ρ‹Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ ΠΈΡ…. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡ… ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ значСния Π±Π°Π»Π»ΠΎΠ².

Вопросы ΠΏΡƒΠ»Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚Π΅ для тСста, ΡΠ²ΡΠ·Ρ‹Π²Π°ΡŽΡ‚ΡΡ с тСстом. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ссли ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ исходный вопрос, это отразится Π½Π° всСх Π΅Π³ΠΎ копиях.

ΠŸΡ€ΠΈ создании вопросов ΠΏΡƒΠ»Π°, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹Ρ… для использования Π² Π½Π΅ΠΎΡ†Π΅Π½ΠΈΠ²Π°Π΅ΠΌΡ‹Ρ… вопросах, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹Π΅ ΠΎΡ‚Π²Π΅Ρ‚Ρ‹. ПослС этого вопросы ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² тСстах ΠΈ опросах. ПослС добавлСния вопросов ΠΊ опросу ΠΎΡ‚Π²Π΅Ρ‚Ρ‹ ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΡŽΡ‚ΡΡ.

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡƒΠ»Ρ‹ вопросов для ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° ΠΈ экспорта вопросов тСста ΠΏΠΎ стандарту QTI.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΡƒΠ»Π°

ΠŸΡ€ΠΈ Π²Ρ‹Π±ΠΎΡ€Π΅ ΠΏΡƒΠ½ΠΊΡ‚Π° Найти вопросы ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΈΠ· ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… тСстов Π² курсС ΠΈ Π»ΡŽΠ±Ρ‹Ρ… тСстов, ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΈΡ… курсов. Если тСстов Π½Π΅Ρ‚, Ρ€Π°Π·Π΄Π΅Π» пустой.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΡƒΠ» вопросов. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΡƒΠ» вопросов. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΡƒΠ» вопросов. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΡƒΠ» вопросов. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΡƒΠ» вопросов

ИзмСнСниС ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΏΡƒΠ»ΠΎΠ²

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΡƒΠ» вопросов. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΡƒΠ» вопросов. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΡƒΠ» вопросов. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΡƒΠ» вопросов. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΡƒΠ» вопросов

ИзмСнСниС вопросов

Когда учащиСся Π½Π°Ρ‡Π½ΡƒΡ‚ тСст, Π²Ρ‹ Π½Π΅ смоТСтС ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ вопросы ΠΏΡƒΠ»Π°, Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚Ρ‹Π΅ Π² тСстС. Если Π²Ρ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚Π΅ вопрос ΠΏΡƒΠ»Π°, учащиСся увидят Π½ΠΎΠ²Ρ‹ΠΉ, ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½Ρ‹ΠΉ вопрос ΠΏΡ€ΠΈ просмотрС своих ΠΎΡ†Π΅Π½ΠΎΠΊ ΠΈ ΠΎΡ‚Π·Ρ‹Π²ΠΎΠ². Они Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ вопрос.

ΠŸΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ связанных вопросов отобраТаСтся ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ измСнСния Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½Ρ‹ ΠΊΠΎ всСм экзСмплярам вопроса.

Если вопрос содСрТит ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠΈ ΠΈ Π²Ρ‹ Π΅Π³ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚Π΅, ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½Π½Ρ‹Π΅ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠΈ Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΎΡ†Π΅Π½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ²Π»ΠΈΡΡ‚ΡŒ Π½Π° ΠΎΡ†Π΅Π½ΠΊΠΈ Π·Π° тСст. ΠŸΡ€Π΅ΠΏΠΎΠ΄Π°Π²Π°Ρ‚Π΅Π»ΡΠΌ ΠΈ учащимся, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… это Π·Π°Ρ‚Ρ€ΠΎΠ½Π΅Ρ‚, ΠΏΡ€ΠΈΠ΄ΡƒΡ‚ увСдомлСния.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ вопрос ΠΏΡƒΠ»Π°, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Π΅ Π½ΠΈΠΆΠ΅ дСйствия.

ΠŸΠ°ΠΊΠ΅Ρ‚Ρ‹ QTI

БвСдСния ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Π°Ρ… QTI

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

Если Π² вашСм ΡƒΡ‡Ρ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π±ΠΎΠ»Π΅Π΅ новая вСрсия Blackboard Learn, ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΈ экспортируйтС ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ QTI, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… Π² заданиях.

Вопросы, ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΈΠ· ΠΏΠ°ΠΊΠ΅Ρ‚Π° QTI, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅ курса.

Π§Ρ‚ΠΎ поддСрТиваСтся Π² ΠΏΠ°ΠΊΠ΅Ρ‚Π΅ QTI?

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρ€Π°Π·Π½Ρ‹Π΅ срСдства оцСнивания ΠΈΠΌΠ΅ΡŽΡ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ возмоТности ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ², HTML ΠΊΠΎΠ΄ΠΎΠ² ΠΈ Ρ„ΠΎΡ€ΠΌΡƒΠ», всСгда Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ ΠΈ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ вопросы послС ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ….

Π˜ΠΌΠΏΠΎΡ€Ρ‚ ΠΏΠ°ΠΊΠ΅Ρ‚Π° QTI

Π’Π°ΠΌ потрСбуСтся ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ QTI Π² свой курс Π² Π²ΠΈΠ΄Π΅ ΠΏΡƒΠ»ΠΎΠ² вопросов. ПослС ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° вопросов ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² заданиях.

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ вопросы Π² ΠΏΡƒΠ»Π΅. Когда всС Π±ΡƒΠ΄Π΅Ρ‚ Π³ΠΎΡ‚ΠΎΠ²ΠΎ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ вопросы Π² тСстС.

ИспользованиС вопросов Π² тСстС

ПослС ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° ΠΏΠ°ΠΊΠ΅Ρ‚Π° QTI ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ вопросы Π² тСстС. Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ тСст с вопросами Π² ΠΏΡƒΠ»Π΅, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ дСйствия.

Экспорт ΠΏΠ°ΠΊΠ΅Ρ‚Π° QTI

Как ΠΈ ΠΏΡ€ΠΈ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π΅ Π² Blackboard Learn, экспорт ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² QTI осущСствляСтся Π² Π²ΠΈΠ΄Π΅ ΠΏΡƒΠ»ΠΎΠ² вопросов. Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΊΡΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ°ΠΊΠ΅Ρ‚ QTI, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ вопросы ΠΈΠ· задания Π² ΠΏΡƒΠ» вопросов.

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

ПонимаСм соСдинСния ΠΈ ΠΏΡƒΠ»Ρ‹

ΠŸΡ€ΠΈΠΌ. ΠΏΠ΅Ρ€Π΅Π².: Π°Π²Ρ‚ΠΎΡ€ этой ΡΡ‚Π°Ρ‚ΡŒΠΈ β€” тСхничСский Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΠΎΡ€ Sudhir Jonathan β€” рассказываСт ΠΎΠ± ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· Ρ‚Π΅Ρ… Π±Π°Π·ΠΎΠ²Ρ‹Ρ… ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠ², с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ сталкиваСтся ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΈ систСмный администратор. Однако Π΄ΠΎ возникновСния ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Ρ… (ΠΈ ΠΈΠ½ΠΎΠ³Π΄Π° довольно спСцифичных) ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π½Π΅ Π·Π°Π΄ΡƒΠΌΡ‹Π²Π°ΡŽΡ‚ΡΡ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ всё Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Β«ΠΏΠΎΠ΄ ΠΊΠ°ΠΏΠΎΡ‚ΠΎΠΌΒ». Автор устраняСт этот ΠΏΡ€ΠΎΠ±Π΅Π», ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ популярныС Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΈ, сСрвСры Π‘Π” ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π² качСствС понятных ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ².

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΡƒΠ» вопросов. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΡƒΠ» вопросов. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΡƒΠ» вопросов. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΡƒΠ» вопросов. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΡƒΠ» вопросов

БоСдинСния β€” это скрытый ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹Π΅ систСмы ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ для общСния Π΄Ρ€ΡƒΠ³ с Π΄Ρ€ΡƒΠ³ΠΎΠΌ. Они стали Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π΅ΠΎΡ‚ΡŠΠ΅ΠΌΠ»Π΅ΠΌΠΎΠΉ Ρ‡Π°ΡΡ‚ΡŒΡŽ нашСй ΠΆΠΈΠ·Π½ΠΈ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ часто Π·Π°Π±Ρ‹Π²Π°Π΅ΠΌ, насколько ΠΎΠ½ΠΈ Π²Π°ΠΆΠ½Ρ‹, Π½Π΅ Π·Π°ΠΌΠ΅Ρ‡Π°Π΅ΠΌ, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΈ тСрпят Π½Π΅ΡƒΠ΄Π°Ρ‡Ρƒ. Часто ΠΌΡ‹ Π·Π°Π±Ρ‹Π²Π°Π΅ΠΌ ΠΎ Π½ΠΈΡ… Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π½Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°. ΠŸΡ€ΠΈ этом ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΎΠ½Π° проявляСтся массовым ΠΎΡ‚ΠΊΠ°Π·ΠΎΠΌ ΠΈΠΌΠ΅Π½Π½ΠΎ Π² Ρ‚ΠΎ врСмя, ΠΊΠΎΠ³Π΄Π° систСмы Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Ρ‹ сильнСС всСго. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ соСдинСния Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‚ΡΡ ΠΏΠΎΠ²ΡΡŽΠ΄Ρƒ ΠΈ ΠΎΠ½ΠΈ Π²Π°ΠΆΠ½Ρ‹ практичСски для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ систСмы, стоит ΠΏΠΎΡ‚Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π½Π° ΠΈΡ… ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅.

БоСдинСния β€” Ρ‡Ρ‚ΠΎ это?

Π‘ΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ β€” это ΡΠ²ΡΠ·ΡƒΡŽΡ‰Π΅Π΅ Π·Π²Π΅Π½ΠΎ ΠΌΠ΅ΠΆΠ΄Ρƒ двумя систСмами, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅Π΅ ΠΈΠΌ ΠΎΠ±ΠΌΠ΅Π½ΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ Π² Π²ΠΈΠ΄Π΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π½ΡƒΠ»Π΅ΠΉ ΠΈ Π΅Π΄ΠΈΠ½ΠΈΡ†: ΠΏΠΎΡΡ‹Π»Π°Ρ‚ΡŒ ΠΈ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Π±Π°ΠΉΡ‚Ρ‹.

Π’ зависимости ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ располоТСны систСмы ΠΏΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡŽ Π΄Ρ€ΡƒΠ³ ΠΊ Π΄Ρ€ΡƒΠ³Ρƒ, комбинация Π½ΠΈΠΆΠ΅Π»Π΅ΠΆΠ°Ρ‰Π΅Π³ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΈ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ обСспСчСния Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ физичСскоС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, абстрагируя Π΅Π΅. НапримСр, ΠΏΡ€ΠΈ взаимодСйствии Π΄Π²ΡƒΡ… Unix-процСссов Π·Π° Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ памяти для ΠΎΠ±ΠΌΠ΅Π½Π° Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΈ ΠΏΡ€ΠΈΡ‘ΠΌ/доставку Π±Π°ΠΉΡ‚ΠΎΠ² с ΠΎΠ±Π΅ΠΈΡ… сторон ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ систСма мСТпроцСссного взаимодСйствия (IPC). Если систСмы располоТСны Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°Ρ…, ΠΎΠ½ΠΈ скорСС всСго Π±ΡƒΠ΄ΡƒΡ‚ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρƒ TCP, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈ обСспСчит ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎ ΠΏΡ€ΠΎΠ²ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ»ΠΈ бСспроводной систСмС связи ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°ΠΌΠΈ. Π”Π΅Ρ‚Π°Π»ΠΈ совмСстной Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠ² для Π½Π°Π΄Ρ‘ΠΆΠ½ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ ΠΈ ΠΏΡ€ΠΈΡ‘ΠΌΠ° Π΄Π°Π½Π½Ρ‹Ρ… скорСС относятся ΠΊ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ΅ стандартизации, ΠΈ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ систСм ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Π±Π°Π·ΠΎΠ²Ρ‹Π΅ Π±Π»ΠΎΠΊΠΈ, прСдоставляСмыС ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°ΠΌΠΈ UDP ΠΈ TCP. Π’ΠΎ, ΠΊΠ°ΠΊ эти соСдинСния ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΈΠ· ΠΊΠΎΠ½Ρ†ΠΎΠ², являСтся Π±ΠΎΠ»Π΅Π΅ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. О Π½Π΅ΠΉ ΠΌΡ‹ ΠΈ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ сСйчас.

Π“Π΄Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ соСдинСния?

БоСдинСния ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ прямо сСйчас. Π’Π°Ρˆ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ установил соСдинСниС с Π²Π΅Π±-сСрвСром, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ этот Π±Π»ΠΎΠ³, ΠΈ ΠΏΠΎ Π½Π΅ΠΌΡƒ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ» Π±Π°ΠΉΡ‚Ρ‹, ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ HTML, CSS, JavaScript ΠΈ изобраТСния, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ сСйчас смотритС. ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ ΠΏΠΎ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρƒ HTTP/1.1 Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ устанавливал мноТСство соСдинСний с сСрвСром β€” ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°. ΠŸΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» HTTP/2 ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ» ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ всС Ρ„Π°ΠΉΠ»Ρ‹ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ соСдинСнию (с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΠ»Π΅ΠΊΡΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ). Π’ΠΎ всСх этих случаях Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ выступал ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ, Π° сСрвСр Π±Π»ΠΎΠ³Π°, собствСнно, Π±Ρ‹Π» сСрвСром.

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

ΠžΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Β«ΠΎΡ‚Π³Ρ€ΡƒΠ·ΠΊΡƒΒ» статичСских Ρ„Π°ΠΉΠ»ΠΎΠ², Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ JS, CSS ΠΈ изобраТСния, ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ CDN-систСма, располоТСнная ΠΌΠ΅ΠΆΠ΄Ρƒ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΎΠΌ ΠΈ сСрвСром Π±Π»ΠΎΠ³Π°. Π‘Ρ€Π°ΡƒΠ·Π΅Ρ€ (ΠΊΠ»ΠΈΠ΅Π½Ρ‚) установил соСдинСниС с блиТайшим сСрвСром CDN, ΠΈ, Ссли Π½ΡƒΠΆΠ½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² Π½Π΅ оказалось Π² кэшС CDN-сСрвСра, Ρ‚ΠΎΡ‚ (выступая ΠΊΠ°ΠΊ ΠΊΠ»ΠΈΠ΅Π½Ρ‚) связался с сСрвСром Π±Π»ΠΎΠ³Π° (сСрвСр).

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

ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π²Π°ΠΆΠ½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° соСдинСний?

ПониманиС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΈΠΌΠ΅Π½Π½ΠΎ вСдСтся Ρ€Π°Π±ΠΎΡ‚Π° с соСдинСниями, Π²Π°ΠΆΠ½Π°, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΈΡ… ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒ асиммСтрична: ΠΈΠ·Π΄Π΅Ρ€ΠΆΠΊΠΈ, связанныС с созданиСм соСдинСния, ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ Π½Π° сторонС ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΠΈ сСрвСра. Π’ ΠΎΠ΄Π½ΠΎΡ€Π°Π½Π³ΠΎΠ²ΠΎΠΉ (P2P) систСмС это Π½Π΅ Ρ‚Π°ΠΊ, ΠΈ соСдинСния ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡƒΡŽ Β«ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒΒ» Π½Π° ΠΎΠ±ΠΎΠΈΡ… ΠΊΠΎΠ½Ρ†Π°Ρ…, Π½ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π±Ρ‹Π²Π°Π΅Ρ‚ Ρ€Π΅Π΄ΠΊΠΎ. Π’ΠΈΠΏΠΈΡ‡Π½ΠΎΠ΅ использованиС соСдинСний всСгда ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΠΈ сСрвСра, ΠΏΡ€ΠΈ этом ΠΈΠ·Π΄Π΅Ρ€ΠΆΠΊΠΈ, связанныС с созданиСм соСдинСния, Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ Π½Π° сторонС ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΠΈ сСрвСра.

ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ°ΠΌ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ соСдинСний, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡΠ²Π΅ΠΆΠΈΡ‚ΡŒ знания ΠΎ способах запуска ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°Ρ… ΠΈ ΠΎΠ± ΠΈΡ… ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Π΅.

ΠŸΡ€ΠΈ стартС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ опСрационная систСма запускаСт ΠΊΠΎΠ΄ ΠΊΠ°ΠΊ ΠΎΠ΄ΠΈΠ½ экзСмпляр процСсса. Π’ΠΎ врСмя Ρ€Π°Π±ΠΎΡ‚Ρ‹ процСсс Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ ΠΎΠ΄Π½ΠΎ ядро CPU ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ±ΡŠΡ‘ΠΌ памяти, ΠΈ Π½Π΅ дСлится своСй ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ Π½ΠΈ с ΠΊΠ°ΠΊΠΈΠΌΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ процСссами.

ΠŸΡ€ΠΎΡ†Π΅ΡΡ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ threads (ΠΏΠΎΡ‚ΠΎΠΊΠΈ выполнСния) β€” Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠ΅ элСмСнты процСсса, способныС Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ. ΠŸΠΎΡ‚ΠΎΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΏΠ°ΠΌΡΡ‚ΡŒ совмСстно с процСссом, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡ… ΠΏΠΎΡ€ΠΎΠ΄ΠΈΠ» (Ρ‚ΠΎΡ‚ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π΄Π΅Π»ΡΡ‚ΡŒ большС памяти для ΠΈΡ… использования).

Π’Π°ΠΊΠΆΠ΅ процСсс ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ event loop (Ρ†ΠΈΠΊΠ» событий), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ выглядит ΠΊΠ°ΠΊ систСма с ΠΎΠ΄Π½ΠΈΠΌ процСссом, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ отслСТиваСт ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠ΅ΡΡ задания, Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎ ΠΈ бСсконСчно пСрСбирая ΠΈΡ…. ΠŸΡ€ΠΈ этом ΠΎΠ½ выполняСт Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Π΅ задания ΠΈ пропускаСт Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅.

Π”Ρ€ΡƒΠ³ΠΎΠΉ способ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ использованиС Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… конструкций, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ fibers (Ρ„Π°ΠΉΠ±Π΅Ρ€Ρ‹), green-threads (Π·Π΅Π»Ρ‘Π½Ρ‹Π΅ ΠΏΠΎΡ‚ΠΎΠΊΠΈ), coroutines (сопрограммы) ΠΈΠ»ΠΈ actors (Π°ΠΊΡ‚ΠΎΡ€Ρ‹). КаТдая ΠΈΠ· этих конструкций Ρ‡ΡƒΡ‚ΡŒ отличаСтся ΠΎΡ‚ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… (Π² Ρ‚ΠΎΠΌ числС, Π² смыслС ΠΈΠ·Π΄Π΅Ρ€ΠΆΠ΅ΠΊ), Π½ΠΎ всС ΠΎΠ½ΠΈ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ΡΡ процСссом ΠΈ Π΅Π³ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌΠΈ.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡΡΡŒ ΠΊ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ соСдинСний, Π΄Π°Π²Π°ΠΉΡ‚Π΅ сначала рассмотрим ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…. Для сСрвСра ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ (ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° Π² Π΄Π°Π½Π½ΠΎΠΌ случаС) установка TCP-соСдинСния связана с Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ нСбольшого ΠΎΠ±ΡŠΡ‘ΠΌΠ° памяти для Π±ΡƒΡ„Π΅Ρ€Π° ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠΎΡ€Ρ‚Π°.

Если ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ PostgreSQL, Π½Π° сторонС сСрвСра ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ соСдинСниС обрабатываСтся ΠΏΡƒΡ‚Ρ‘ΠΌ создания Π½ΠΎΠ²ΠΎΠ³ΠΎ процСсса, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ занимаСтся всСми запросами, ΠΏΠΎΡΡ‚ΡƒΠΏΠ°ΡŽΡ‰ΠΈΠΌΠΈ ΠΏΠΎ Π΄Π°Π½Π½ΠΎΠΌΡƒ соСдинСнию. Π’Π°ΠΊΠΎΠΉ процСсс Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ ядро процСссора ΠΈ ΠΎΠΊΠΎΠ»ΠΎ 10 Мб памяти (ΠΈΠ»ΠΈ большС).

MySQL для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ создаёт ΠΏΠΎΡ‚ΠΎΠΊ Π²Π½ΡƒΡ‚Ρ€ΠΈ процСсса. ВрСбования ΠΊ памяти Π³ΠΎΡ€Π°Π·Π΄ΠΎ Π½ΠΈΠΆΠ΅ Π² ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ, Π½ΠΎ ΠΏΠ»Π°Ρ‚ΠΈΡ‚ΡŒ Π·Π° это приходится постоянным ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ контСкстов.

Redis ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ соСдинСниС ΠΊΠ°ΠΊ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΡŽ Π² Ρ†ΠΈΠΊΠ»Π΅ событий, Ρ‡Ρ‚ΠΎ сниТаСт трСбования ΠΊ рСсурсам, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΏΠ»Π°Ρ‚ΠΈΡ‚ΡŒ Π·Π° это приходится Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ соСдинСниС доТидаСтся своСй ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ, ΠΏΡ€ΠΈ этом Redis ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ запросы строго ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ.

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅ сСбС запрос ΠΊ сСрвСру ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π‘Ρ€Π°ΡƒΠ·Π΅Ρ€ ΠΈΠ½ΠΈΡ†ΠΈΠΈΡ€ΡƒΠ΅Ρ‚ TCP-соСдинСниС Π² качСствС ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° (это Π΅ΠΌΡƒ обходится Π΄Ρ‘ΡˆΠ΅Π²ΠΎ β€” нСбольшой ΠΎΠ±ΡŠΡ‘ΠΌ памяти для Π±ΡƒΡ„Π΅Ρ€Π° ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΏΠΎΡ€Ρ‚). На сторонС сСрвСра ситуация ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ иная:

Если сСрвСр ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ruby on Rails, ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ соСдинСниС обрабатываСтся ΠΎΠ΄Π½ΠΈΠΌ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠΌ, ΠΏΠΎΡ€ΠΎΠΆΠ΄Ρ‘Π½Π½Ρ‹ΠΌ Π²Π½ΡƒΡ‚Ρ€ΠΈ фиксированного числа Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½Ρ‹Ρ… процСссов (Π² случаС Π²Π΅Π±-сСрвСра Puma), ΠΈΠ»ΠΈ ΠΎΠ΄Π½ΠΈΠΌ процСссом (Unicorn).

Если ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ PHP, систСма CGI запускаСт Π½ΠΎΠ²Ρ‹ΠΉ PHP-процСсс для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ соСдинСния, Π° Π±ΠΎΠ»Π΅Π΅ популярная рСализация FastCGI ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ нСсколько Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… процСссов, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Π½ΠΎΠ²Ρ‹Ρ… соСдинСний.

Π’ случаС Go для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ соСдинСния создаСтся goroutine (Π΄Π΅ΡˆΡ‘Π²Π°Ρ ΠΈ лСгковСсная потокоподобная структура, управляСмая & планируСмая исполняСмой срСдой Go).

Π’ Node.js/Deno входящиС соСдинСния ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π² Ρ†ΠΈΠΊΠ»Π΅ событий ΠΏΡƒΡ‚Ρ‘ΠΌ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° ΠΈ ΠΎΡ‚Π²Π΅Ρ‚Π° Π½Π° запросы ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ Π·Π° Ρ€Π°Π·.

Π’ систСмах Π²Ρ€ΠΎΠ΄Π΅ Erlang/Elixir ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ соСдинСниС обрабатываСтся Π°ΠΊΡ‚ΠΎΡ€ΠΎΠΌ β€” Π΅Ρ‰Ρ‘ ΠΎΠ΄Π½ΠΎΠΉ лСгковСсной ΠΈ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅-ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΉ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΉ конструкциСй.

АрхитСктуры ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ соСдинСний

Из ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² Π²Ρ‹ΡˆΠ΅ Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ нСсколько Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹Ρ… стратСгий ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ соСдинСний:

ΠŸΡ€ΠΎΡ†Π΅ΡΡΡ‹. КаТдоС соСдинСниС обрабатываСтся ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌ процСссом, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π»ΠΈΠ±ΠΎ создаСтся ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ для этого соСдинСния (CGI, PostgreSQL), Π»ΠΈΠ±ΠΎ Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π² Π½Π΅ΠΊΡƒΡŽ Π³Ρ€ΡƒΠΏΠΏΡƒ доступных процСссов (Unicorn, FastCGI).

ΠŸΠΎΡ‚ΠΎΠΊΠΈ. КаТдоС соСдинСниС обрабатываСтся ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π»ΠΈΠ±ΠΎ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ создаётся, Π»ΠΈΠ±ΠΎ бСрётся ΠΈΠ· ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ Ρ€Π΅Π·Π΅Ρ€Π²Π°. ΠŸΠΎΡ‚ΠΎΠΊΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ распрСдСлСны ΠΏΠΎ нСскольким процСссам, ΠΏΡ€ΠΈ этом всС ΠΏΠΎΡ‚ΠΎΠΊΠΈ эквивалСнтны ΠΌΠ΅ΠΆΠ΄Ρƒ собой (Puma/Ruby, Tomcat/Java, MySQL).

Π¦ΠΈΠΊΠ» событий. КаТдоС соСдинСниС Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ†ΠΈΠΊΠ» событий Π² Π²ΠΈΠ΄Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ, ΠΈ соСдинСния с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ для чтСния ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ (Node, Redis). ΠžΠ±Ρ‹Ρ‡Π½ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ систСмы β€” однопроцСссныС ΠΈ ΠΎΠ΄Π½ΠΎΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²Ρ‹Π΅, Π½ΠΎ Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях Π±Ρ‹Π²Π°ΡŽΡ‚ многопроцСссными, ΠΊΠΎΠ³Π΄Π° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ процСсс дСйствуСт ΠΊΠ°ΠΊ полунСзависимая систСма с ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ Ρ†ΠΈΠΊΠ»Π°ΠΌΠΈ событий.

Coroutines / Green-Threads / Fibers / Actors. КаТдоС соСдинСниС обрабатываСтся лСгковСсной конструкциСй с Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΌ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ (Go, Erlang, Scala/Akka).

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ сСрвСр ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ соСдинСния, ΠΈΠΌΠ΅Π΅Ρ‚ Ρ€Π΅ΡˆΠ°ΡŽΡ‰Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ для понимания Π΅Π³ΠΎ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ ΠΈ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ. Π”Π°ΠΆΠ΅ Π±Π°Π·ΠΎΠ²ΠΎΠ΅ использованиС ΠΈΠ»ΠΈ настройка Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ понимания Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ соСдинСния: Redis ΠΈ PostgreSQL, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽΡ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΡƒΡŽ сСмантику Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ ΠΈ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Π»ΠΈΡΡŽΡ‚ ΠΈΡ… ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ соСдинСний. Π‘Π΅Ρ€Π²Π΅Ρ€Ρ‹, основанныС Π½Π° процСссах ΠΈ ΠΏΠΎΡ‚ΠΎΠΊΠ°Ρ…, ΠΌΠΎΠ³ΡƒΡ‚ Β«ΡƒΠΏΠ°ΡΡ‚ΡŒΒ» ΠΈΠ·-Π·Π° исчСрпания рСсурсов, Ссли ΠΈΡ… максимальноС количСство Π½Π΅ Π·Π°Π΄Π°Π½ΠΎ Π² Ρ€Π°Π·ΡƒΠΌΠ½Ρ‹Ρ… ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ…. Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, установка ΠΏΡ€Π΅Π΄Π΅Π»ΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ ΠΌΠ°ΡΡˆΡ‚Π°Π±Π½ΠΎΠΌΡƒ нСдоиспользованию сСрвСров ΠΈΠ·-Π·Π° слишком Π½ΠΈΠ·ΠΊΠΈΡ… Π»ΠΈΠΌΠΈΡ‚ΠΎΠ². БистСмы, основанныС Π½Π° Ρ†ΠΈΠΊΠ»Π°Ρ… событий, Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π²Ρ‹ΠΈΠ³Ρ€Ρ‹Π²Π°ΡŽΡ‚ ΠΎΡ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½Π° 64-ядСрных CPU (Ссли, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΈΡ… 64 ΠΊΠΎΠΏΠΈΠΈ Π½Π΅ настроСны Π½Π° ΡΠΎΠ²ΠΌΠ΅ΡΡ‚Π½ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ β€” Ρ‡Ρ‚ΠΎ ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² случаС Π²Π΅Π±-сСрвСров, Π½ΠΎ ΠΏΠ»ΠΎΡ…ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ…).

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

ΠŸΠΎΠ΄Ρ…ΠΎΠ΄Ρ‹ Π½Π° Ρ†ΠΈΠΊΠ»Π°Ρ… событий Π²Ρ€ΠΎΠ΄Π΅ Node ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ Π·Π°Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Π»ΠΈ сСбя Π½Π° одноядСрных сСрвСрах, ΠΈ для использования Π½Π° многоядСрных сСрвСрах ΠΈΡ… Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΊΠ»Π°ΡΡ‚Π΅Ρ€ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ. БистСмы, основанныС Π½Π° сопрограммах/Π°ΠΊΡ‚ΠΎΡ€Π°Ρ…, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Go ΠΈΠ»ΠΈ Erlang, Π³ΠΎΡ€Π°Π·Π΄ΠΎ Π»Π΅Π³Ρ‡Π΅ Π·Π°Π΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‚ ядра процСссора, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Ρ‹ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ для этого: Π½Π° ΠΎΠ΄Π½ΠΎΠΉ машинС ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ тысячи Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½ ΠΈ Π°ΠΊΡ‚ΠΎΡ€ΠΎΠ².

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

На ΠΊΡ€ΡƒΠΏΠ½ΠΎΠΌ сСрвСрС PostgreSQL ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ нСсколькими сотнями соСдинСний, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ MySQL способСн ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Ρƒ тысяч. Redis способСн ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ наибольшСС количСство соСдинСний (Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, дСсятки тысяч), ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρ†ΠΈΠΊΠ» событий ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Π΅ΠΌΡƒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΠΎΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ…, Π½ΠΎ ΠΏΠ»Π°Ρ‚ΠΈΡ‚ΡŒ Π·Π° это приходится Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ выполняСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½Π° опСрация.

РаспрСдСлённыС Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠΎΠ³ΡƒΡ‚ ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ΠΎΠΉΡ‚ΠΈ ΠΎΡ‚ ΠΌΠΎΠ΄Π΅Π»ΠΈ, основанной Π½Π° процСссах ΠΈ ΠΏΠΎΡ‚ΠΎΠΊΠ°Ρ…. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π΄Π°Π½Π½Ρ‹Π΅ Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ ΠΏΠΎ нСскольким машинам, ΠΎΡ‚ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΎΡ‚ΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π² ΠΏΠΎΠ»ΡŒΠ·Ρƒ сСкционирования (partitioning). Π’Π°ΠΊΠΈΠ΅ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… способны ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ мноТСство соСдинСний ΠΌΠ΅ΠΆΠ΄Ρƒ большим числом сСрвСров. НапримСр, AWS DynamoDB ΠΈΠ»ΠΈ Google Datastore, Π° Ρ‚Π°ΠΊΠΆΠ΅ распрСдСлСнныС Π‘Π”, написанныС Π½Π° Go, с Π³ΠΎΡ‚ΠΎΠ²Π½ΠΎΡΡ‚ΡŒΡŽ ΠΏΡ€ΠΈΠΌΡƒΡ‚ ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Ρ‹ ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ ΠΌΠΈΠ»Π»ΠΈΠ°Ρ€Π΄Ρ‹ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ.

Однако всС эти Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΈΠΌΠ΅ΡŽΡ‚ послСдствия β€” ΠΎΠ½ΠΈ ΠΆΠ΅Ρ€Ρ‚Π²ΡƒΡŽΡ‚ ΠΌΠ½ΠΎΠ³ΠΈΠΌΠΈ опСрациями (join’Ρ‹, ad-hoc-запросы) ΠΈ гарантиями согласованности, прСдоставляСмыми Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ/односСрвСрными Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ…. Но, идя Π½Π° эту ΠΆΠ΅Ρ€Ρ‚Π²Ρƒ, ΠΎΠ½ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ соСдинСния сСкционированным, Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½ΠΎ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ, практичСски Π½Π΅ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹ΠΌ способом, позволяя Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ, которая ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ мноТСство соСдинСний Π½Π° мноТСствС машин. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° соСдинСний Π² Π΄Π°Π½Π½ΠΎΠΌ случаС снимаСтся: ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ сСрвСр Π΄ΠΎΠ»ΠΆΠ΅Π½ сам Π·Π°Π±ΠΎΡ‚ΠΈΡ‚ΡŒΡΡ ΠΎΠ± ΠΈΡ… ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅, Π½ΠΎ Π² совокупности, с тысячами ΠΈ ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Π°ΠΌΠΈ машин с ΡƒΠΌΠ½ΠΎΠΉ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ, Π΄Π°Π½Π½Ρ‹Π΅ систСмы часто Π²Π΅Π΄ΡƒΡ‚ сСбя Ρ‚Π°ΠΊ, словно ΠΎΠ½ΠΈ бСсконСчно ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΡ‹.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΡƒΠ» ΠΈ Π·Π°Ρ‡Π΅ΠΌ ΠΎΠ½ Π½ΡƒΠΆΠ΅Π½?

Β«Π”ΠΎΡ€ΠΎΠ³ΠΎΠ²ΠΈΠ·Π½Π°Β» соСдинСний Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΈΡ… эффСктивного ΠΈ экономного использования. Часто Π±Ρ‹Π²Π°Π΅Ρ‚ слоТно ΠΏΠΎΠ½ΡΡ‚ΡŒ, насколько Π΄ΠΎΡ€ΠΎΠ³ΠΎ ΠΎΠ½ΠΈ обходятся. Бвязано это с асиммСтриСй: с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° соСдинСниС стоит Π΄Ρ‘ΡˆΠ΅Π²ΠΎ, ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΎΡ‚ ΠΈΡ… Ρ‡Ρ€Π΅Π·ΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ числа страдаСт ΠΈΠΌΠ΅Π½Π½ΠΎ сСрвСр.

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

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

ΠœΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ ΠΏΡƒΠ»ΠΎΠ² ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… языках ΠΈ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ°Ρ…:

Ruby on Rails, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, автоматичСски выдСляСт ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ соСдинСния Π² ΠΏΡƒΠ», ΠΏΡ€ΠΈ этом Π½Π΅ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ нюансов Π΄Π°Π½Π½ΠΎΠ³ΠΎ процСсса ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ нСэффСктивному ΠΊΠΎΠ΄Ρƒ. ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΡΠΎΠ²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ запрос ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…, Π·Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ слСдуСт Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ сСтСвой запрос ΠΊ Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ сСрвису, ΠΈ Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ запрос ΠΊ Π‘Π”. Π’ этом случаС соСдинСниС простаиваСт Π²ΠΎ врСмя выполнСния сСтСвого запроса (автоматичСскоС ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Rails Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ консСрвативным ΠΈ остороТным, Π° ΠΏΠΎΡ‚ΠΎΠΌΡƒ β€” нСэффСктивным).

Π’ Go Π΅ΡΡ‚ΡŒ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π‘Π”, входящий Π² ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ с ΠΏΡƒΠ»ΠΎΠΌ соСдинСний. Однако Π½Π΅ΡƒΡ‡Π΅Ρ‚ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ соСдинСния Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ΡΡ Π² ΠΏΡƒΠ» ΠΌΠ΅ΠΆΠ΄Ρƒ обращСниями ΠΊ Π‘Π”, ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½Ρ‹ΠΌ ΠΈ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ воспроизводимым Π±Π°Π³Π°ΠΌ. Иногда Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ исходят ΠΈΠ· прСдполоТСния, Ρ‡Ρ‚ΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈ Ρ‚ΠΎΠΌ ΠΆΠ΅ запросС ΠΈΠ΄ΡƒΡ‚ ΠΏΠΎ Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅ соСдинСнию, ΠΎΠ΄Π½Π°ΠΊΠΎ автоматичСский ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ случайным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚ соСдинСния ΠΈΠ· ΠΏΡƒΠ»Π° (Π³Π΅ΠΉΠ·Π΅Π½Π±Π°Π³ Π² Go, связанный с Postgres advisory locks).

Π’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ ΡƒΡΡƒΠ³ΡƒΠ±Π»ΡΡŽΡ‚ Π΄Π°Π½Π½ΡƒΡŽ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ: Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… часто ΠΏΡ€ΠΈΠ²ΡΠ·Ρ‹Π²Π°ΡŽΡ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π» Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ ΠΊ соСдинСнию (ΠΈΠ½ΠΎΠ³Π΄Π° это Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ session β€” сСссиСй). Начав Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΅Ρ‘ Π·Π°Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ (commit) ΠΈΠ»ΠΈ ΠΎΡ‚ΠΊΠ°Ρ‚ΠΈΡ‚ΡŒ (roll back) Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎ Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅ соСдинСнию, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠ½Π° ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Π·Π°ΠΏΡƒΡΠΊΠ°Π»Π°ΡΡŒ. АвтоматичСскоС ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΡƒΠ»ΠΎΠΌ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ этот Ρ„Π°ΠΊΡ‚ΠΎΡ€ с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ соСдинСниС Π² ΠΏΡƒΠ» Π²ΠΎ врСмя выполнСния Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ. Π’ зависимости ΠΎΡ‚ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΈ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Π½Ρ‹Π΅ выраТСния (prepared statements), Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ привязку ΠΊ соСдинСниям.

Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ, Ссли ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΏΠΈΡΠ°Ρ‚ΡŒ эффСктивный ΠΊΠΎΠ΄, Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π½Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΏΡƒΠ»ΠΈΠ½Π³ соСдинСний Π² ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΌ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ΅, ΠΊΠ°ΠΊΠΈΠ΅ дСйствия Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ автоматичСски, ΠΈ ΠΊΠΎΠ³Π΄Π° Π°Π²Ρ‚ΠΎΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΈΠ»ΠΈ Π΅Π³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½Ρ‚Ρ€ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΈΠ²Π½ΠΎ. Pooling-прокси (Π²Ρ€ΠΎΠ΄Π΅ pgBouncer, Odyssey ΠΈΠ»ΠΈ AWS RDS Proxy) β€” ΠΎΠ΄ΠΈΠ½ ΠΈΠ· инструмСнтов, ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‰ΠΈΠΉ Π·Π°Π±Ρ‹Ρ‚ΡŒ ΠΎΠ± этих Π½ΡŽΠ°Π½ΡΠ°Ρ…. Π­Ρ‚ΠΈ систСмы ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ соСдинСний с Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½Ρ‹Ρ…, сколько Π½ΡƒΠΆΠ½ΠΎ, Π½Π΅ Π·Π°Π±ΠΎΡ‚ΡΡΡŒ ΠΎΠ± ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ ΠΈΠΌΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ выдСляСмыС соСдинСния Π½Π΅ настоящиС, Π° ΠΈΡ… Β«Π΄Π΅ΡˆΡ‘Π²Π°ΡΒ» имитация, Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰Π°Ρ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… рСсурсов. Когда ΠΊΠ»ΠΈΠ΅Π½Ρ‚ пытаСтся Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΠΈΠΌΠΈΡ‚Π°Ρ†ΠΈΠΉ, pooling-прокси ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅Ρ‚ настоящСС соСдинСниС ΠΈΠ· Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ ΠΏΡƒΠ»Π° ΠΈ сопоставляСт ΠΈΠΌΠΈΡ‚Π°Ρ†ΠΈΡŽ с Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹ΠΌ соСдинСниСм. Когда прокси Π·Π°ΠΌΠ΅Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ соСдинСниС большС Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ, ΠΎΠ½ оставляСт ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ соСдинСниС с ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ, Π½ΠΎ агрСссивно освобоТдаСт ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ соСдинСниС с Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½Ρ‹Ρ…. Число соСдинСний ΠΈ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ «агрСссивности» ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ, Π² Ρ‚ΠΎΠΌ числС с ΡƒΡ‡Ρ‘Ρ‚ΠΎΠΌ Ρ‚Π°ΠΊΠΈΡ… нюансов, ΠΊΠ°ΠΊ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ, ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Π½Ρ‹Π΅ выраТСния ΠΈ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ.

Π Π΅ΡˆΠΈΡ‚Π΅ Π»ΠΈ Π²Ρ‹ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ свой ΠΊΠΎΠ΄ ΠΈ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π² Π½Π΅Π³ΠΎ эффСктивноС ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ соСдинСниями, ΠΈΠ»ΠΈ Π²Ρ‹Π±Π΅Ρ€Π΅Ρ‚Π΅ инструмСнт Π²Ρ€ΠΎΠ΄Π΅ pgBouncer, Π² ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌ счётС Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒΡΡ Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹ΠΌ компромиссом ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΈ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ развСртывания. Π›ΡŽΠ±ΠΎΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ ΠΏΠΎΠ΄ΠΎΠΉΠ΄Ρ‘Ρ‚ Π² зависимости ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, сколько ΠΊΠΎΠ΄Π° Π²Ρ‹ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ, насколько ΡƒΠ΄ΠΎΠ±Π½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ соСдинСниями Π² ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΌ языкС программирования ΠΈ насколько эффСктивным Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚.

Pooling Π½Π΅ ограничиваСтся ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌΠΈ Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ…. ΠœΡ‹ Π½Π°Π·Ρ‹Π²Π°Π»ΠΈ соСдинСния Π½Π° сторонС ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° Β«Π΄Π΅ΡˆΡ‘Π²Ρ‹ΠΌΠΈΒ», Π½ΠΎ β€” ΡƒΠ²Ρ‹ β€” ΠΎΠ½ΠΈ Π½Π΅ бСсплатны. Они Ρ‚ΠΎΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΏΠ°ΠΌΡΡ‚ΡŒ, ΠΏΠΎΡ€Ρ‚Ρ‹ ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Π΅ дСскрипторы Π½Π° сторонС ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° β€” рСсурсы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Ρ‹. По этой ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ языки/Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΏΡƒΠ»Ρ‹ для HTTP-соСдинСний с ΠΎΠ΄Π½ΠΈΠΌ ΠΈ Ρ‚Π΅ΠΌ ΠΆΠ΅ сСрвСром, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΏΡƒΠ»Ρ‹ для Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹Ρ… рСсурсов. Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, эти ΠΏΡƒΠ»Ρ‹ скрыты ΠΎΡ‚ Π³Π»Π°Π· Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° систСма Π½Π΅ исчСрпаСт ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹ΠΉ рСсурс, ΠΈ Π² этот ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΎΠ½Π° ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΏΠ°Π΄Π°Π΅Ρ‚. Π—Π½Π°Π½ΠΈΠ΅ ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΉ спСцификС сильно ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΏΡ€ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠ΅ β€” ΠΏΠΎΠΌΠΈΠΌΠΎ соСдинСний, Π²ΠΈΠ½ΠΎΠ²Π½ΠΈΠΊΠ°ΠΌΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ часто Π²Ρ‹ΡΡ‚ΡƒΠΏΠ°ΡŽΡ‚ Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Π΅ дСскрипторы.

Настройка ΠΎΠ±Ρ‰ΠΈΡ… ΠΏΡƒΠ»ΠΎΠ²

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

1. ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° основС процСссов ΠΈ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²

Puma, популярный сСрвСр для запуска Ruby-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ ΠΏΠ°Ρ€Ρƒ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠ² для управлСния ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ входящих HTTP-запросов. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ β€” это число запускаСмых процСссов, прСдставлСнноС Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²ΠΎΠΉ workers. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ процСсс сСрвСра нСзависим ΠΈ Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ ΠΏΠΎΠ»Π½Ρ‹ΠΉ стСк прилоТСния Π² ΠΏΠ°ΠΌΡΡ‚ΡŒ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ссли ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ N Мб памяти, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ Π½Π° машинС ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅ доступно workersΓ—N Мб памяти для запуска всСх ΠΊΠΎΠΏΠΈΠΉ. Π•ΡΡ‚ΡŒ способ ΡΠΌΡΠ³Ρ‡ΠΈΡ‚ΡŒ эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ: Ruby 2+ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ копирования ΠΏΡ€ΠΈ записи (copy-on-write), ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ мноТСство процСссов ΠΊΠ°ΠΊ ΠΎΠ΄ΠΈΠ½ ΠΈ ΠΏΠΎΡ‚ΠΎΠΌ Ρ€Π°Π·Π²Π΅Ρ‚Π²Π»ΡΡ‚ΡŒ Π΅Π³ΠΎ Π½Π° Π½ΡƒΠΆΠ½ΠΎΠ΅ число Π±Π΅Π· нСобходимости ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ всю ΠΏΠ°ΠΌΡΡ‚ΡŒ β€” ΠΎΠ±Ρ‰ΠΈΠ΅ области памяти Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ совмСстно Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π² Π½ΠΈΡ… Π½Π΅ внСсут измСнСния. Активация Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ copy-on-write с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ preload_app! ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΌΠΎΡ‡ΡŒ ΡΠ½ΠΈΠ·ΠΈΡ‚ΡŒ ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅ памяти ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Π²Ρ‹ΡˆΠ΅ Ρ„ΠΎΡ€ΠΌΡƒΠ»ΠΎΠΉ (workersΓ—N). Однако Π½Π΅ стоит Π²ΠΎΠ·Π»Π°Π³Π°Ρ‚ΡŒ Π½Π° Π½Π΅Ρ‘ слишком большиС Π½Π°Π΄Π΅ΠΆΠ΄Ρ‹, Π½Π΅ протСстировав ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈ Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠ°Ρ….

Π‘Π΅Ρ€Π²Π΅Ρ€Ρ‹, основанныС ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π° процСссах, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Unicorn, ΠΎΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π½Π° этом ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ β€” ΠΊΠ°ΠΊ ΠΈ популярныС сСрвСры для Python, PHP ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… языков, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠ΅ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½ΡƒΡŽ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΡƒ ΠΈΠ»ΠΈ построСнныС ΠΏΠΎ схСмС ΠΎΠ΄ΠΈΠ½ ΠΏΠΎΡ‚ΠΎΠΊ/ΠΎΠ΄ΠΈΠ½ процСсс. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ процСсс ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ запрос Π·Π° Ρ€Π°Π·, Π½ΠΎ это Π½Π΅ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΏΠΎΠ»Π½ΡƒΡŽ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ: ΠΏΠΎΠΊΠ° процСсс доТидаСтся выполнСния запроса ΠΊ Π‘Π” ΠΈΠ»ΠΈ сСтСвого запроса ΠΊ Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ сСрвису, ΠΎΠ½ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ запросы, ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ ядро процСссора Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΡΡ‚Π°ΠΈΠ²Π°Ρ‚ΡŒ. Для устранСния этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ большС процСссов, Ρ‡Π΅ΠΌ имССтся ядСр CPU (Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Ρ‚ ΠΊ ΠΈΠ·Π΄Π΅Ρ€ΠΆΠΊΠ°ΠΌ, связанным с ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ контСкста), ΠΈΠ»ΠΈ Π·Π°Π΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΡ‚ΠΎΠΊΠΈ.

Π§Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ нас ΠΊΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡƒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ Puma β€” числу ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² для запуска Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ процСссС/worker’e. Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° threads позволяСт Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ минимальноС ΠΈ максимальноС число ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² Π² ΠΏΡƒΠ»Π΅ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ worker’Π°. ИспользованиС Π΄Π²ΡƒΡ… этих Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ² позволяСт ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±Ρ‰Π΅Π΅ число ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Π΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ запросов для прилоТСния. ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, ΠΎΠ½ΠΎ Ρ€Π°Π²Π½ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΡŽ числа worker’ΠΎΠ² Π½Π° число ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ².

ЭмпиричСскоС ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ доступноС ядро CPU приходится ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ worker’Ρƒ β€” ΠΏΡ€ΠΈ условии, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, Ρ‡Ρ‚ΠΎ для этого достаточно памяти. Π­Ρ‚ΠΎ позволяСт эффСктивно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ°ΠΌΡΡ‚ΡŒ, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΊΠΈΠ½ΡƒΡ‚ΡŒ, сколько RAM Π½ΡƒΠΆΠ½ΠΎ, провСдя нСсколько тСстов с этим Π½ΠΎΠΌΠ΅Ρ€ΠΎΠΌ. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π·Π°Π΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ CPU β€” ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это ΠΌΠΎΠΆΠ½ΠΎ, увСличивая максимальноС количСство ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ². Как ΠΏΠΎΠΌΠ½ΠΈΡ‚Π΅, ΠΏΠΎΡ‚ΠΎΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΏΠ°ΠΌΡΡ‚ΡŒ совмСстно с процСссом, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ ΠΈΡ… числа Π½Π΅ слишком отраТаСтся Π½Π° ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠΈ памяти. ВмСсто этого большСС число ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² Π±ΡƒΠ΄Π΅Ρ‚ всё сильнСС Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ процСссор, ΠΏΠΎΠΏΡƒΡ‚Π½ΠΎ позволяя ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ большС запросов ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ. Π­Ρ‚ΠΎ Ρ€Π°Π·ΡƒΠΌΠ½ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ, ΠΏΠΎΠΊΠ° ΠΎΠ΄ΠΈΠ½ ΠΏΠΎΡ‚ΠΎΠΊ спит Π² ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² запроса ΠΊ Π‘Π” ΠΈΠ»ΠΈ сСтСвого запроса, ядро CPU ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΡΡ Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΠΎΡ‚ΠΎΠΊ ΠΈΠ· Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ процСсса. Но ΠΏΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ большоС число ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Ρ‚ ΠΊ ΠΊΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ†ΠΈΠΈ Π·Π° Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ процСссов, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ придСтся ΠΎΠΏΡ‹Ρ‚Π½Ρ‹ΠΌ ΠΏΡƒΡ‚Π΅ΠΌ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ, сколько ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ для Π·Π½Π°Ρ‡ΠΈΠΌΠΎΠ³ΠΎ увСличСния ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

Но ΠΊΠ°ΠΊ всС эта конфигурация влияСт Π½Π° количСство соСдинСний с Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½Ρ‹Ρ…? Rails ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ автоматичСскоС ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡΠΌΠΈ ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½ΠΎΠΌΡƒ ΠΏΠΎΡ‚ΠΎΠΊΡƒ потрСбуСтся собствСнноС ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… для эффСктивной Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π±Π΅Π· оТидания, ΠΊΠΎΠ³Π΄Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ Π·Π°Π²Π΅Ρ€ΡˆΠ°Ρ‚ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΠΎΡ‚ΠΎΠΊΠΈ. Он ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΏΡƒΠ» соСдинСний (Π΅Π³ΠΎ настройки хранятся Π² Ρ„Π°ΠΉΠ»Π΅ database.yml ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ процСсса/worker’Π°). Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ссли ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, Ρ€Π°Π²Π½ΠΎΠ΅ 5, Rails Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ максимум 5 соСдинСний для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ worker’Π°. Π’Π°ΠΊΠΎΠΉ Π»ΠΈΠΌΠΈΡ‚ Π½Π΅ слишком Ρ…ΠΎΡ€ΠΎΡˆΠΎ сработаСт, Ссли ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ максимальноС число ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² β€” всС ΠΎΠ½ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ Π±ΠΎΡ€ΠΎΡ‚ΡŒΡΡ Π·Π° эти ΠΏΡΡ‚ΡŒ соСдинСний Π² ΠΏΡƒΠ»Π΅. ЭмпиричСскоС ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ число соСдинСний Π² ΠΏΡƒΠ»Π΅ Ρ€Π°Π²Π½Ρ‹ΠΌ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠΌΡƒ количСству процСссов, ΠΊΠ°ΠΊ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Π½ΠΎ Π² руководствС ΠΏΠΎ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΡŽ Heroku Puma.

Но Ρ‚ΡƒΡ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ другая ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°: количСство соСдинСний, Ρ€Π°Π²Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΡŽ числа worker’ΠΎΠ² Π½Π° число ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² (workers Γ— threads), Π±Π»Π°Π³ΠΎΡ‚Π²ΠΎΡ€Π½ΠΎ влияСт Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ сСрвСра ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π½ΠΎ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π½Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π²Ρ€ΠΎΠ΄Π΅ PostgreSQL ΠΈ, Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях, для MySQL. Π’ зависимости ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, сколько Ρƒ вас ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти (Π² случаС Postgres) ΠΈ сколько CPU (Π² случаС MySQL), данная конфигурация ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ ΡΡ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ. МоТно ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ ΠΎΠ±ΡŠΡ‘ΠΌ ΠΏΡƒΠ»Π° (pool) ΠΈΠ»ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ threads, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ число соСдинСний, ΠΈΠ»ΠΈ число worker’ΠΎΠ², ΠΈΠ»ΠΈ ΠΎΠ±Π° этих ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°. Π’ зависимости ΠΎΡ‚ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ прилоТСния, всС эти Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ, вСроятно, Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ эффСкт: Ссли ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ запрос Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΉ ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…, количСство ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ ΠΊ Π‘Π” всСгда Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒ ΡƒΠ·ΠΊΠΈΠΌ мСстом, ограничивая число запросов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ. Но Ссли Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ запросы ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π±Π΅Π· ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΉ ΠΊ Π‘Π”, Ρ‚ΠΎ число worker’ΠΎΠ² ΠΈ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ высоким, Π° ΠΎΠ±ΡŠΡ‘ΠΌ ΠΏΡƒΠ»Π° ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½ΠΈΠ·ΠΊΠΈΠΌ β€” Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ мноТСство ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ запросы, Π½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ нСбольшая ΠΈΡ… Ρ‡Π°ΡΡ‚ΡŒ станСт ΠΊΠΎΠ½ΠΊΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π·Π° ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΊ Π‘Π” Π² ΠΏΡƒΠ»Π΅ ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ нСобходимости.

Π­Ρ‚Ρƒ идСю ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠΌ способом: пСрСвСсти ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ соСдинСниями Π² ΠΊΠΎΠ΄ ΠΈ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ эффСктивно Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΡƒΡŽΡ‚ΡΡ (checkout) ΠΈ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°ΡŽΡ‚ΡΡ (release). Π­Ρ‚ΠΎ особСнно Π²Π°ΠΆΠ½ΠΎ, Ссли ΠΌΠ΅ΠΆΠ΄Ρƒ обращСниями ΠΊ Π‘Π” Π΄Π΅Π»Π°ΡŽΡ‚ΡΡ сСтСвыС запросы.

Если станСт понятно, Ρ‡Ρ‚ΠΎ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ соСдинСниями Π΄ΠΎΠ»ΠΆΠ½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΈΠ»ΠΈ Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ эти Ρ†ΠΈΡ„Ρ€Ρ‹ Π·Π°Ρ‚Ρ€ΡƒΠ΄Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΈ сСрвСр ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ искусствСнно ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ ΠΏΡ€Π΅Π΄Π΅Π»ΠΎΠΌ Π½Π° количСство ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ ΠΊ Π‘Π”, ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ инструмСнтом Π²Ρ€ΠΎΠ΄Π΅ pgBouncer, Odyssey, AWS RDS Proxy. Запуск pooling-прокси ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΏΡƒΠ»Π° Ρ€Π°Π²Π½Ρ‹ΠΌ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠΌΡƒ числу ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² ΠΈ ΠΏΠΎΠΏΡƒΡ‚Π½ΠΎ обСспСчит ΡƒΠ²Π΅Ρ€Π΅Π½Π½ΠΎΡΡ‚ΡŒ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ прокси-сСрвСр сдСлаСт всС максимально эффСктивно.

Π§Ρ‚ΠΎ касаСтся Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ…, PostgreSQL ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π½Π° основС процСссов, поэтому приходится ΠΏΡ€ΠΎΡΠ²Π»ΡΡ‚ΡŒ ΡΠ΄Π΅Ρ€ΠΆΠ°Π½Π½ΠΎΡΡ‚ΡŒ Π² ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΈ числа соСдинСний ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с этой Π‘Π”. MySQL ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΏΠΎΡ‚ΠΎΠΊΠΈ, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ количСство соСдинСний ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ β€” хотя это ΠΈ способно привСсти ΠΊ сниТСнию ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈΠ·-Π·Π° ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ контСкста ΠΈ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ.

2. ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° основС Ρ†ΠΈΠΊΠ»Π° событий

Node / Deno β€” ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ сСрвСр Π½Π° основС Ρ†ΠΈΠΊΠ»Π° событий (event loop), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ рассмотрим. ΠŸΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΉ сСрвСр с конфигурациями ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ способСн вСсьма эффСктивно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ядро процСссора, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, Π½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ практичСски ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅. Π”Π°, Π΅Π³ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ подсистСмы ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π²ΠΏΠΎΠ»Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π·Π°Π΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ядра, Π½ΠΎ сСйчас ΠΌΡ‹ большС заинтСрСсованы Π² ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅, ΠΈ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π² этом кластСризация (clustering). Она достигаСтся ΠΏΡƒΡ‚Π΅ΠΌ запуска ΠΎΠ΄Π½ΠΎΠ³ΠΎ процСсса, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ всС входящиС соСдинСния, Π° Π·Π°Ρ‚Π΅ΠΌ дСйствуСт ΠΊΠ°ΠΊ прокси-сСрвСр ΠΈ распрСдСляСт соСдинСния ΠΏΠΎ Π΄Ρ€ΡƒΠ³ΠΈΠΌ процСссам, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΌ Π½Π° Ρ‚ΠΎΠΉ ΠΆΠ΅ машинС. Π£ Node имССтся ΠΌΠΎΠ΄ΡƒΠ»ΡŒ кластСризации, входящий Π² ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ, ΠΈ популярныС сСрвСры Π²Ρ€ΠΎΠ΄Π΅ PM2 Π΅Π³ΠΎ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚. ОсновноС ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ здСсь состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΆΠ΅ процСссов, сколько ядСр CPU доступно (ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΏΡ€ΠΈ условии, Ρ‡Ρ‚ΠΎ памяти достаточно).

Stripe выпустил интСрСсный ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Einhorn, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ прСдставляСт собой ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ соСдинСний, ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Π²Π½Π΅ стСка, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΏΠΈΡˆΠ΅Ρ‚ΡΡ ΠΊΠΎΠ΄. Он запускаСт собствСнный процСсс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ соСдинСния, ΠΈ распрСдСляСт ΠΈΡ… ΠΏΠΎ экзСмплярам прилоТСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ запускаСт ΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ управляСт ΠΊΠ°ΠΊ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΌΠΈ процСссами. Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚ Π²Ρ€ΠΎΠ΄Π΅ этого ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ»Π΅Π·Π΅Π½ Π² систСмах, основанных Π½Π° Ρ†ΠΈΠΊΠ»Π°Ρ… событий, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΏΡ€ΠΈ возмоТности всСгда Π±ΡƒΠ΄Π΅Ρ‚ максимально ΠΏΠΎΠ»Π½ΠΎ Π·Π°Π΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ядро процСссора. Однако сам ΠΏΠΎ сСбС ΠΎΠ½ Π½Π΅ Ρ‚Π°ΠΊ ΠΏΠΎΠ»Π΅Π·Π΅Π½ с Ruby/Python, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ, хотя ΠΈ позволяСт Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ нСсколько процСссов, отсутствиС ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· процСссов ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±ΡΠ»ΡƒΠΆΠΈΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ запрос Π·Π° Ρ€Π°Π·.

ΠŸΠΎΠ΄Ρ…ΠΎΠ΄ Π½Π° основС кластСризации Ρ†ΠΈΠΊΠ»Π° событий ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ систСмами, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠ΅Π½ΡΡŽΡ‚ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для языка, основанного Π½Π° процСссах. Π‘Π΅Ρ€Π²Π΅Ρ€ Tornado для Python, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Ρ‹Π²Π°Π΅Ρ‚ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ запросов Python Π² систСму Π½Π° основС Ρ†ΠΈΠΊΠ»Π° событий, Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠ·Π²Π΅ΡΡ‚Π½ΡƒΡŽ ΠΊΠ°ΠΊ non-blocking I/O. Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΊΠ»Π°ΡΡ‚Π΅Ρ€ΠΈΠ·Π°Ρ†ΠΈΡŽ Π½Π° всС доступныС ядра CPU (ΠΏΡ€ΠΈ условии достаточного количСства памяти).

Аналогичный ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² Π²Π΅Π±-сСрвСрС Falcon для Ruby. Π’ Π½ΠΎΠ²Ρ‹Ρ… вСрсиях Ruby имССтся Π°Π½Π°Π»ΠΎΠ³ Π·Π΅Π»Π΅Π½Ρ‹Ρ… ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² (green-thread), Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ Ρ„Π°ΠΉΠ±Π΅Ρ€ΠΎΠΌ (fiber), ΠΈ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ входящий запрос Falcon ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ruby-ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π°. Π€Π°ΠΉΠ±Π΅Ρ€Ρ‹ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ автоматичСски ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ всС ядра CPU, поэтому Falcon запускаСт копию прилоТСния Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ доступном ядрС процСссора (ΠΎΠΏΡΡ‚ΡŒ ΠΆΠ΅, ΠΏΡ€ΠΈ условии, Ρ‡Ρ‚ΠΎ памяти достаточно).

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

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

3. Π’Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π΅ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ / ΠšΠ°ΡΡ‚ΠΎΠΌΠ½Π°Ρ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°

ΠžΠ±Ρ€Π°Π·Ρ†ΠΎΠΌ Π² Π΄Π°Π½Π½ΠΎΠΌ случаС выступаСт Go, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ всСх Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ², ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ свободСн ΠΎΡ‚ ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ запросов β€” ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎ-максимуму ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ доступныС рСсурсы CPU ΠΈ памяти. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ входящий запрос обрабатываСтся Π½ΠΎΠ²ΠΎΠΉ Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½ΠΎΠΉ (goroutine) β€” лСгковСсной ΠΏΠΎΡ‚ΠΎΠΊΠΎΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΉ конструкциСй. ИсполняСмая срСда Go управляСт Π΅ΠΉ, ΠΏΡ€ΠΈ этом ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠΏΠ΅Ρ€Π΅ΠΆΠ°Π΅Ρ‚ ΠΏΠΎ эффСктивности Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹Π΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ для ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² ΠΈΠ»ΠΈ процСссов. Go автоматичСски «раскидываСт» Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½Ρ‹ ΠΏΠΎ всСм доступным ядрам CPU, хотя Π΅Π³ΠΎ Π°ΠΏΠΏΠ΅Ρ‚ΠΈΡ‚Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ нСсколько ΠΎΠ±ΡƒΠ·Π΄Π°Ρ‚ΡŒ, Π·Π°Π΄Π°Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ runtime.GOMAXPROCS. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ всС происходит Π² Ρ€Π°ΠΌΠΊΠ°Ρ… исполняСмой срСды, ΠΏΠ°ΠΌΡΡ‚ΡŒ Π½Π΅ копируСтся. Go Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π° всСх ядрах CPU ΠΈ Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ запуска ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΊΠΎΠΏΠΈΠΈ прилоТСния Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ядрС.

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Go ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с дСсятками тысяч ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Ρ… запросов Π΄Π°ΠΆΠ΅ Π½Π° совсСм ΠΌΠ°Π»Π΅Π½ΡŒΠΊΠΈΡ… сСрвСрах, Π΅Π³ΠΎ сопряТСниС с Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° основС процСссов, Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠ°ΠΊ PosgreSQL, ΠΌΠΎΠΆΠ½ΠΎ ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ с ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΎΠΉ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π³ΠΎΠ½ΠΎΡ‡Π½Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒ Π½Π° ΠΏΠΎΠ»Π½ΠΎΠΉ скорости врСзаСтся Π² ΠΊΠΈΡ€ΠΏΠΈΡ‡Π½ΡƒΡŽ стСну. Если каТдая Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ SQL-ΠΏΠ°ΠΊΠ΅Ρ‚ ΠΈΠ· стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, Π±ΡƒΠ΄Π΅Ρ‚ создано ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ соСдинСний, сколько насчитываСтся Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½ β€” вСдь ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΏΡƒΠ»Π° Π½Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½.

ΠŸΠ΅Ρ€Π²ΠΎΠ΅, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ с Π»ΡŽΠ±Ρ‹ΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ Π½Π° Go, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰Π΅ΠΌ с SQL-Π±Π°Π·ΠΎΠΉ, β€” Π·Π°Π΄Π°Ρ‚ΡŒ ΠΏΡ€Π΅Π΄Π΅Π» соСдинСний с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ SetMaxOpenConns ΠΈ связанных ΠΎΠΏΡ†ΠΈΠΉ. Go ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ ΠΏΡƒΠ» с ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠΌ sql, поэтому ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ запрос Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ соСдинСниС ΠΈΠ· ΠΏΡƒΠ»Π°, ΠΈ сразу послС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ запроса ΠΎΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ Π² ΠΏΡƒΠ». Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, Ρ‡Ρ‚ΠΎΠ±Ρ‹ провСсти Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ, придСтся Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ, ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΌΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Β«ΠΎΠ±Ρ‘Ρ€Ρ‚Ρ‹Π²Π°Π΅Ρ‚Β» ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠ΅ соСдинСниС, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ транзакция Π±Ρ‹Π»Π° Π·Π°ΠΏΡƒΡ‰Π΅Π½Π° β€” это СдинствСнный способ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ Π² дальнСйшСм Π·Π°Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ»ΠΈ ΠΎΡ‚ΠΊΠ°Ρ‚ΠΈΡ‚ΡŒ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ. Π­Ρ‚ΠΎ ΠΈΠΌΠ΅Π΅Ρ‚ большоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈ ΠΏΡ€ΠΈ использовании Π΄Ρ€ΡƒΠ³ΠΈΡ… завязанных Π½Π° соСдинСниС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Π½Ρ‹Π΅ выраТСния ΠΈΠ»ΠΈ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ (advisory locks).

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

Помимо ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡Π½Ρ‹Ρ… нюансов, связанных с ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Π½Ρ‹ΠΌΠΈ выраТСниями ΠΈ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ°ΠΌΠΈ (advisory locks), ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅ Ρ€ΡƒΡ‡Π½ΠΎΠ΅ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ соСдинСниями Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌ, связанным со Π²Π·Π°ΠΈΠΌΠ½ΠΎΠΉ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΎΠΉ. Если Π·Π°Π΄Π°Π½ΠΎ максимальноС число соСдинСний, ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ запросам для Ρ€Π°Π±ΠΎΡ‚Ρ‹ трСбуСтся Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ соСдинСния, сущСствуСт Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ попадания Π² ΠΏΠΎΡ€ΠΎΡ‡Π½Ρ‹ΠΉ ΠΊΡ€ΡƒΠ³, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ запросы бСсконСчно Π΄ΠΎΠΆΠΈΠ΄Π°ΡŽΡ‚ΡΡ, ΠΏΠΎΠΊΠ° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ запросы освободят соСдинСния. Π’ Π·Π°ΠΌΠ΅Ρ‚ΠΊΠ°Ρ… ΠΎΠ± ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΏΡƒΠ»Π° для HikariCP приводятся Ρ„ΠΎΡ€ΠΌΡƒΠ»Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ справится с ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ Π²Ρ€ΠΎΠ΄Π΅ этой.

Π”Ρ€ΡƒΠ³ΠΈΠ΅ языки Π½Π° основС VM, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Java, Scala/Akka, Clojure, Kotlin (всС Π½Π° JVM) ΠΈ Elixir/Erlang (Π½Π° BEAM VM) Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ: задСйствованиС всСх доступных ядСр CPU Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π±Π΅Π· запуска ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΊΠΎΠΏΠΈΠΈ прилоТСния для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ядра. РСализация ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ систСмы ΠΈΠ»ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ ΠΊ Π‘Π” ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΠΌΠ΅Π΅Ρ‚ свои тонкости, ΠΎΠ΄Π½Π°ΠΊΠΎ с Π½ΠΈΠΌΠΈ Π»Π΅Π³ΠΊΠΎ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΎΠ΄Π½Ρƒ ΠΈΠ»ΠΈ нСсколько ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΉ, ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Π½Π½Ρ‹Ρ… Π²Ρ‹ΡˆΠ΅.

Π‘Π²ΡΠΆΠΈΡ‚Π΅ΡΡŒ со ΠΌΠ½ΠΎΠΉ Π² Twitter, Ссли Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π΄Ρ€ΡƒΠ³ΠΈΡ… систСм, Ρƒ вас Π΅ΡΡ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ вопросы/замСчания/поТСлания, ΠΈΠ»ΠΈ Π²Ρ‹ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ»ΠΈ ΠΎΡˆΠΈΠ±ΠΊΡƒ.

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

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

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