Найти Ρ‚Π΅ΠΌΡƒ
Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° программиста

πŸ„ 6+ Π³Π»Π°Π²Π½Ρ‹Ρ… Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² балансировки Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ

ОглавлСниС

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

ΠšΡ€ΡƒΠ³ΠΎΠ²ΠΎΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ (Round Robin) ΠΈ Π΅Π³ΠΎ Π²Π°Ρ€ΠΈΠ°Ρ†ΠΈΠΈ – квантовая, взвСшСнная ΠΈ динамичСская

Π”Ρ€ΡƒΠ³ΠΈΠ΅ названия этого Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° – круговая ротация ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΊΡ€ΡƒΠ³ΠΎΠ²ΠΎΠΉ очСрСдности.

ΠšΡ€ΡƒΠ³ΠΎΠ²Π°Ρ ротация – Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ балансировки Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ распрСдСляСт входящиС запросы ΠΌΠ΅ΠΆΠ΄Ρƒ нСсколькими сСрвСрами Π² порядкС цикличСской очСрСдности. НазваниС Round Robin происходит ΠΎΡ‚ старинного ΠΌΠ΅Ρ‚ΠΎΠ΄Π° подписания общСствСнных ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΉ ΠΈ ΠΏΠ΅Ρ‚ΠΈΡ†ΠΈΠΉ: подписи Π½Π°ΠΌΠ΅Ρ€Π΅Π½Π½ΠΎ ставили ΠΏΠΎ ΠΊΡ€ΡƒΠ³Ρƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ нСльзя Π±Ρ‹Π»ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΈΠ½ΠΈΡ†ΠΈΠ°Ρ‚ΠΎΡ€Π°.

ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΊΡ€ΡƒΠ³ΠΎΠ²ΠΎΠ³ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° максимально прост:

  • ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρƒ нас Π΅ΡΡ‚ΡŒ список сСрвСров.
  • Алгоритм Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ распрСдСлСниС запросов с ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ сСрвСра Π² спискС.
  • ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Π½ΠΎΠ²Ρ‹ΠΉ запрос направляСтся Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ сСрвСр Π² спискС.
  • Когда достигаСтся ΠΊΠΎΠ½Π΅Ρ† списка, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ возвращаСтся ΠΊ Π½Π°Ρ‡Π°Π»Ρƒ.

Π“Π»Π°Π²Π½Ρ‹Π΅ ΠΏΠ»ΡŽΡΡ‹ этого ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° – простота Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ ΡΠΏΡ€Π°Π²Π΅Π΄Π»ΠΈΠ²ΠΎΡΡ‚ΡŒ распрСдСлСния: ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ сСрвСр ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Ρ€Π°Π²Π½ΠΎΠ΅ количСство запросов. Но, ΠΊΠ°ΠΊ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, эта ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ°Ρ вСрсия Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° Π±ΡƒΠ΄Π΅Ρ‚ эффСктивно Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² сфСричСской срСдС Π² Π²Π°ΠΊΡƒΡƒΠΌΠ΅, Π³Π΄Π΅ всС сСрвСры ΠΎΠ±Π»Π°Π΄Π°ΡŽΡ‚ ΠΏΠΎΡ‡Ρ‚ΠΈ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠΉ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠ΅ΠΉ, Π° всС входящиС запросы (Π·Π°Π΄Π°Ρ‡ΠΈ, процСссы) ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ ΠΈ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ ΠΊΡ€ΡƒΠ³ΠΎΠ²ΠΎΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΡΠ½Π°Π±ΠΆΠ°ΡŽΡ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡΠΌΠΈ:

  • Π’Ρ‹Π΄Π΅Π»ΡΡŽΡ‚ фиксированныС Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΊΠΈ (ΠΊΠ²Π°Π½Ρ‚Ρ‹) для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π·Π°Π΄Π°Ρ‡ΠΈ. Если Π·Π°Π΄Π°Ρ‡Π° Π½Π΅ Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ своСго ΠΊΠ²Π°Π½Ρ‚Π°, ΠΎΠ½Π° пСрСмСщаСтся Π² ΠΊΠΎΠ½Π΅Ρ† ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ.
  • Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Weighted Round Robin, Π²Π·Π²Π΅ΡˆΠ΅Π½Π½Ρ‹ΠΉ цикличСский ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€, ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ ΠΌΠΎΡ‰Π½ΠΎΡΡ‚ΡŒ сСрвСров. НапримСр, Ссли Ρƒ нас Π΅ΡΡ‚ΡŒ Ρ‚Ρ€ΠΈ сСрвСра с вСсами 4, 2 ΠΈ 1, это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ сСрвСр ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Π² Π΄Π²Π° Ρ€Π°Π·Π° ΠΌΠΎΡ‰Π½Π΅Π΅ Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΈ Π² Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ Ρ€Π°Π·Π° ΠΌΠΎΡ‰Π½Π΅Π΅ Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅Π³ΠΎ. ВмСсто Ρ€Π°Π²Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ распрСдСлСния запросов, ΠΊΠ°ΠΊ Π² ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΌ Round Robin, WRR распрСдСляСт запросы ΠΏΡ€ΠΎΠΏΠΎΡ€Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ вСсам сСрвСров: ΠΈΠ· ΠΊΠ°ΠΆΠ΄Ρ‹Ρ… 7 запросов 4 запроса ΠΏΠΎΠΉΠ΄ΡƒΡ‚ Π½Π° ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ сСрвСр, 2 запроса Π½Π° Π²Ρ‚ΠΎΡ€ΠΎΠΉ, 1 запрос Π½Π° Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ.
  • ΠŸΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ динамичСский ΠΊΡ€ΡƒΠ³ΠΎΠ²ΠΎΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Dynamic Round Robin, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Π΅Ρ‚ Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ Π½Π° сСрвСры ΠΏΡ€ΠΈ распрСдСлСнии запросов. ΠŸΡ€ΠΈ поступлСнии запроса Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ с ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ сСрвСра (DRR ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ для ΠΎΡ†Π΅Π½ΠΊΠΈ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π½Π° сСрвСр – количСство Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… соСдинСний, Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ процСссора, использованиС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти, врСмя ΠΎΡ‚ΠΊΠ»ΠΈΠΊΠ° сСрвСра, ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡŽ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ). На основС ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… вычисляСтся ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ сСрвСра, послС Ρ‡Π΅Π³ΠΎ запрос направляСтся Π½Π° сСрвСр с наимСньшим ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ.

πŸ’» Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° программиста

Π‘ΠΎΠ»ΡŒΡˆΠ΅ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΎΠ² Π²Ρ‹ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ Π½Π° нашСм Ρ‚Π΅Π»Π΅Π³Ρ€Π°ΠΌ-ΠΊΠ°Π½Π°Π»Π΅ Β«Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° программиста»

НаимСньшСС количСство соСдинСний (Least Connections) ΠΈ Π΅Π³ΠΎ Π²Π·Π²Π΅ΡˆΠ΅Π½Π½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚

НаимСньшСС количСство соСдинСний

НаимСньшСС количСство соСдинСний – динамичСский Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ балансировки Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ направляСт входящиС запросы Π½Π° сСрвСр с наимСньшим количСством Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… соСдинСний Π² Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. ЦСль Least Connections – Ρ€Π°Π²Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎ Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ запросы ΠΌΠ΅ΠΆΠ΄Ρƒ сСрвСрами, прСдотвращая ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΡƒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… ΡƒΠ·Π»ΠΎΠ².

ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°

  • Балансировщик Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ отслСТиваСт количСство Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… соСдинСний Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ сСрвСрС Π² ΠΏΡƒΠ»Π΅.
  • ΠŸΡ€ΠΈ поступлСнии Π½ΠΎΠ²ΠΎΠ³ΠΎ запроса балансировщик Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ состояниС всСх сСрвСров.
  • Запрос направляСтся Π½Π° сСрвСр с наимСньшим количСством Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… соСдинСний.

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π°

  • ΠΠ΄Π°ΠΏΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ ΠΊ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌ мощностям сСрвСров – Π±ΠΎΠ»Π΅Π΅ ΠΌΠΎΡ‰Π½Ρ‹Π΅ сСрвСры СстСствСнным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ большС запросов ΠΈ, ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΈΠΌΠ΅Ρ‚ΡŒ большС соСдинСний. И Π½Π°ΠΏΡ€ΠΎΡ‚ΠΈΠ², ΠΌΠ΅Π½Π΅Π΅ ΠΌΠΎΡ‰Π½Ρ‹Π΅ сСрвСры Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ мСньшС запросов, Ρ‡Ρ‚ΠΎ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΈΡ… ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΡƒ.
  • Π“ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ – Ссли ΠΎΠ΄ΠΈΠ½ сСрвСр Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅, ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ мСньшС Π½ΠΎΠ²Ρ‹Ρ… запросов.
  • Π£Π»ΡƒΡ‡ΡˆΠ΅Π½Π½ΠΎΠ΅ распрСдСлСниС Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Π½Π΅ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ ΠΊΡ€ΡƒΠ³ΠΎΠ²Ρ‹ΠΌ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ распрСдСляСт запросы Ρ€Π°Π²Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎ Π±Π΅Π· ΡƒΡ‡Π΅Ρ‚Π° Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ состояния сСрвСров.

НСдостатки

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

Когда ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ

  • Π’ Π³Π΅Ρ‚Π΅Ρ€ΠΎΠ³Π΅Π½Π½ΠΎΠΉ сСрвСрной инфраструктурС, Π³Π΄Π΅ сСрвСры ΠΈΠΌΠ΅ΡŽΡ‚ Ρ€Π°Π·Π½ΡƒΡŽ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ.
  • Когда запросы ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡƒΡŽ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ.

Π’Π·Π²Π΅ΡˆΠ΅Π½Π½ΠΎΠ΅ наимСньшСС количСство соСдинСний

Π’Π·Π²Π΅ΡˆΠ΅Π½Π½ΠΎΠ΅ наимСньшСС количСство соСдинСний (Weighted Least Connections) – ΡƒΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΡΡ‚Π²ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ балансировки Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ‚ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² наимСньшСго количСства соСдинСний ΠΈ взвСшСнного цикличСского ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π°: ΠΎΠ½ направляСт запросы Π½Π° сСрвСр с наимСньшим ΡΠΎΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ΠΌ Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… соСдинСний ΠΊ Π΅Π³ΠΎ Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½ΠΎΠΌΡƒ вСсу.

ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ Ρ€Π°Π±ΠΎΡ‚Ρ‹

  • ΠšΠ°ΠΆΠ΄ΠΎΠΌΡƒ сСрвСру присваиваСтся вСс, ΠΎΡ‚Ρ€Π°ΠΆΠ°ΡŽΡ‰ΠΈΠΉ Π΅Π³ΠΎ ΠΌΠΎΡ‰Π½ΠΎΡΡ‚ΡŒ.
  • Балансировщик отслСТиваСт количСство Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… соСдинСний Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ сСрвСрС.
  • ΠŸΡ€ΠΈ поступлСнии Π½ΠΎΠ²ΠΎΠ³ΠΎ запроса вычисляСтся ΡΠΎΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ (АктивныС соСдинСния) / (ВСс сСрвСра).
  • Запрос направляСтся Π½Π° сСрвСр с наимСньшим Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ этого ΡΠΎΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€

Допустим, Ρƒ нас Π΅ΡΡ‚ΡŒ Ρ‚Ρ€ΠΈ сСрвСра:

  • Server A – 10 Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… соСдинСний, вСс 5
  • Server B – 15 Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… соСдинСний, вСс 10
  • Server C – 8 Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… соСдинСний, вСс 3

ВычисляСм ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ:

  • Server A – 10/5 = 2
  • Server B – 15/10 = 1.5
  • Server C – 8/3 β‰ˆ 2.67

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π½ΠΎΠ²Ρ‹ΠΉ запрос Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ Π½Π° Server B, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Ρƒ Π½Π΅Π³ΠΎ наимСньший ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ.

Π‘Ρ‚Π°Ρ‚ΡŒΡ ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅

πŸ€” Π˜Π½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹: ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ эффСктивных Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ²

Π₯Сш IP-адрСса

Алгоритм IP Hash ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ IP-адрСс ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° (ΠΈ ΠΈΠ½ΠΎΠ³Π΄Π° сСрвСра) для опрСдСлСния, Π½Π° ΠΊΠ°ΠΊΠΎΠΉ сСрвСр Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ запрос. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΎΠ½ обСспСчиваСт постоянство сСссии ΠΈ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ запросы ΠΎΡ‚ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° всСгда ΠΏΠΎΠΏΠ°Π΄Π°ΡŽΡ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ сСрвСр.

ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ Ρ€Π°Π±ΠΎΡ‚Ρ‹:

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

Π’Ρ‹Π²ΠΎΠ΄:

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° IP Hash

  • ΠŸΠΎΡΡ‚ΠΎΡΠ½ΡΡ‚Π²ΠΎ сСссии – Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ запросы ΠΎΡ‚ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° всСгда ΠΏΠΎΠΏΠ°Π΄Π°ΡŽΡ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ сСрвСр.
  • Π­Ρ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ для статичСских IP – ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² срСдах, Π³Π΄Π΅ IP ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ Ρ€Π΅Π΄ΠΊΠΎ.
  • ΠžΠ±Π»Π΅Π³Ρ‡Π°Π΅Ρ‚ ΠΊΠ΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° сторонС сСрвСра для ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ².

НСдостатки

  • Если ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ приходят ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° IP, ΠΎΠ΄ΠΈΠ½ сСрвСр ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠΆΠ΅Π½.
  • НСэффСктивСн Π² срСдах, Π³Π΄Π΅ IP ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² часто ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ (ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Π΅ сСти).
  • ΠœΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ Π½Π΅Ρ€Π°Π²Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠΉ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅, Ссли Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρ‹ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΡŽΡ‚ большС Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ°.

Π‘Ρ‚Π°Ρ‚ΡŒΡ ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅

🀀 Π–Π°Π΄Π½Ρ‹Π΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹: всС, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π·Π½Π°Ρ‚ΡŒ для собСсСдования

НаимСньшСС врСмя ΠΎΡ‚ΠΊΠ»ΠΈΠΊΠ°

Алгоритм Least Response Time балансируСт Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ, направляя запросы Π½Π° сСрвСр, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‚ Π½Π°ΠΈΠ»ΡƒΡ‡ΡˆΡƒΡŽ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π² Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚. Он ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Π΅Ρ‚ Π΄Π²Π° ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… Ρ„Π°ΠΊΡ‚ΠΎΡ€Π°: врСмя ΠΎΡ‚ΠΊΠ»ΠΈΠΊΠ° сСрвСра ΠΈ количСство Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… соСдинСний.

ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ Ρ€Π°Π±ΠΎΡ‚Ρ‹

  • Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ сСрвСра Π² систСмС балансировщик Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ постоянно ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΡ‚ врСмя, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ трСбуСтся сСрвСру для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ запроса ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ ΠΎΡ‚Π²Π΅Ρ‚Π°.
  • Π’Π°ΠΊΠΆΠ΅ отслСТиваСтся количСство Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… соСдинСний Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ сСрвСрС.
  • ΠŸΡ€ΠΈ поступлСнии Π½ΠΎΠ²ΠΎΠ³ΠΎ запроса выбираСтся сСрвСр с наимСньшим Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ ΠΎΡ‚ΠΊΠ»ΠΈΠΊΠ° ΠΈ наимСньшим количСством Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… соСдинСний.
  • Помимо Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΎΡ‚ΠΊΠ»ΠΈΠΊΠ° ΠΈ количСства Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… соСдинСний ΠΌΠΎΠ³ΡƒΡ‚ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ вСса: score = (response_time * weight1) + (active_ connections * weight2)

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π°

  • Π£Ρ‡Π΅Ρ‚ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ сСрвСров ΠΈ динамичСская адаптация ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ баланс ΠΈ Π½Π°ΠΈΠ»ΡƒΡ‡ΡˆΠΈΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ ΠΎΠΏΡ‹Ρ‚.
  • ΠœΠ΅Ρ‚ΠΎΠ΄ Ρ…ΠΎΡ€ΠΎΡˆΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с сСрвСрами Ρ€Π°Π·Π½ΠΎΠΉ мощности ΠΈ прилоТСниями с Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ характСристиками.

НСдостатки

  • Π‘Π»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ – Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ постоянного ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° ΠΈ Π°Π½Π°Π»ΠΈΠ·Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ сСрвСров.
  • ΠΠ΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ большСго объСма Π΄Π°Π½Π½Ρ‹Ρ… для принятия Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ создаСт ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½Π½ΡƒΡŽ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ Π½Π° балансировщик.
  • ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΈ динамичСскоС ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… вСсов ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚Π°Ρ‚ΡŒ Π½Π΅Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ Π·Π°Π΄Π°Ρ‡Π΅ΠΉ.

Π‘Π»ΡƒΡ‡Π°ΠΉΠ½Ρ‹ΠΉ Π²Ρ‹Π±ΠΎΡ€ (Random) ΠΈ Π»ΡƒΡ‡ΡˆΠΈΠΉ ΠΈΠ· Π΄Π²ΡƒΡ… Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ²

Π‘Π»ΡƒΡ‡Π°ΠΉΠ½Ρ‹ΠΉ Π²Ρ‹Π±ΠΎΡ€ (Random, Randomized Load Balancing) распрСдСляСт входящиС запросы ΠΌΠ΅ΠΆΠ΄Ρƒ сСрвСрами случайным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Π½ΠΎΠ²Ρ‹ΠΉ запрос направляСтся Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎ Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹ΠΉ сСрвСр ΠΈΠ· доступного ΠΏΡƒΠ»Π°, ΠΈ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρƒ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ сСрвСра Π±Ρ‹Π» Ρ€Π°Π²Π½Ρ‹ΠΉ шанс (1/n, Π³Π΄Π΅ n – число сСрвСров) Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹ΠΌ, для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π΅ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ псСвдослучайных чисСл, Π° тасованиС Π€ΠΈΡˆΠ΅Ρ€Π°-ЙСтса.

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π°

  • ΠžΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°Π΅Ρ‚ Ρ€Π°Π²Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ΅ распрСдСлСниС Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π² долгосрочной пСрспСктивС.
  • ΠŸΡ€ΠΎΡΡ‚ΠΎΡ‚Π° Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ Π½ΠΈΠ·ΠΊΠΈΠ΅ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π·Π°Ρ‚Ρ€Π°Ρ‚Ρ‹.
  • НС Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ хранСния состояния ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… запросов.

НСдостатки

НСдостаток – Π½Π΅ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Π΅Ρ‚ Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ Π½Π° сСрвСры ΠΈ ΠΈΡ… ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, поэтому Π»ΡƒΡ‡ΡˆΠ΅ всСго ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для систСм, Π³Π΄Π΅ сСрвСры ΠΈΠΌΠ΅ΡŽΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡƒΡŽ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, Π° Π·Π°Π΄Π°Ρ‡ΠΈ – Π±ΠΎΠ»Π΅Π΅-ΠΌΠ΅Π½Π΅Π΅ Ρ€Π°Π²Π½ΡƒΡŽ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ.

Алгоритм Power of Two Random Choices (Π»ΡƒΡ‡ΡˆΠΈΠΉ ΠΈΠ· Π΄Π²ΡƒΡ… случайных Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ²), прСдставлСнный Π² 1996 Π³ΠΎΠ΄Ρƒ Майклом ΠœΠΈΡ‚Ρ†Π΅Π½ΠΌΠ°Ρ…Π΅Ρ€ΠΎΠΌ – ΡƒΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΡΡ‚Π²ΠΎΠ²Π°Π½Π½Π°Ρ вСрсия случайного Π²Ρ‹Π±ΠΎΡ€Π°: вмСсто Π²Ρ‹Π±ΠΎΡ€Π° ΠΎΠ΄Π½ΠΎΠ³ΠΎ случайного сСрвСра, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚ Π΄Π²Π° случайных сСрвСра ΠΈ направляСт запрос Π½Π° Ρ‚ΠΎΡ‚ ΠΈΠ· Π½ΠΈΡ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΌΠ΅Π½ΡŒΡˆΡƒΡŽ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ. ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° этого ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° ΠΏΠ΅Ρ€Π΅Π΄ простым случайным Π²Ρ‹Π±ΠΎΡ€ΠΎΠΌ:

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ NGINX Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽΡ‚ этот ΠΌΠ΅Ρ‚ΠΎΠ΄ для высоконагруТСнных систСм ΠΈ распрСдСлСнных сцСнариСв балансировки Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² кластСрах Kubernetes с нСсколькими Ingress-ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°ΠΌΠΈ.

Π‘Ρ‚Π°Ρ‚ΡŒΡ ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅

πŸ…ΎοΈ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ «О» большоС: объясняСм Π½Π° простых ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ…

НаимСньший объСм Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ°

НаимСньший объСм Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° (Least Bandwidth, Π±ΡƒΠΊΠ²Π°Π»ΡŒΠ½ΠΎ – наимСньшая пропускная ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ) – динамичСский Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ балансировки Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ направляСт входящиС запросы Π½Π° сСрвСр, ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‰ΠΈΠΉ наимСньший объСм Π΄Π°Π½Π½Ρ‹Ρ… Π² Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚. ОсобСнно эффСктивСн Π² срСдах, Π³Π΄Π΅ пропускная ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ сСти являСтся критичСским Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΎΠΌ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ Ρ€Π°Π±ΠΎΡ‚Ρ‹

  • Балансировщик Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ постоянно ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΡ‚ использованиС пропускной способности ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ сСрвСра.
  • ΠŸΡ€ΠΈ поступлСнии Π½ΠΎΠ²ΠΎΠ³ΠΎ запроса выбираСтся сСрвСр с наимСньшим Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΌ использованиСм полосы пропускания.
  • Запрос направляСтся Π½Π° Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹ΠΉ сСрвСр.

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π°

  • ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ использования сСтСвых рСсурсов – Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ эффСктивно ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΡƒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… сСтСвых ΠΊΠ°Π½Π°Π»ΠΎΠ².
  • Π£Π»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π·Π° счСт избСТания Π·Π°Π΄Π΅Ρ€ΠΆΠ΅ΠΊ, связанных с ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠΎΠΉ сСти.
  • Адаптация ΠΊ измСнСниям Π² пропускной способности систСмы Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.

НСдостатки

  • ΠŸΠΎΡΡ‚ΠΎΡΠ½Π½ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠ΅ пропускной способности ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ Π½Π° систСму.
  • НС ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Π΅Ρ‚ использованиС CPU ΠΈ памяти.

Π’ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π’ ΠΌΠ°ΡΡˆΡ‚Π°Π±Π½Ρ‹Ρ… инфраструктурах часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π²Π·Π²Π΅ΡˆΠ΅Π½Π½Ρ‹ΠΉ ΠΊΡ€ΡƒΠ³ΠΎΠ²ΠΎΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ (Weighted Round Robin), ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ сочСтаСт простоту Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ с ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒΡŽ распрСдСлСния Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ. Однако ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ, разумССтся, Π½Π΅ сущСствуСт: Π² зависимости ΠΎΡ‚ спСцифики систСмы, Π±ΠΎΠ»Π΅Π΅ подходящим ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ наимСньшСго количСства соСдинСний, ΠΈΠ»ΠΈ Ρ…Π΅Ρˆ IP-адрСса.

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

Π’ΠΎ ΠΆΠ΅ самоС касаСтся ΠΈ инструмСнтов – ΠΏΠΎΠΏΡƒΠ»ΡΡ€Π½Π΅ΠΉΡˆΠΈΠΉ Π²Π΅Π±/прокси-сСрвСр NGINX, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ‚Π°ΠΊΠΆΠ΅ исполняСт Ρ€ΠΎΠ»ΡŒ балансировщика, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ всС пСрСчислСнныС Π²Ρ‹ΡˆΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΎΡ‚ ΠΊΡ€ΡƒΠ³ΠΎΠ²ΠΎΠ³ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° Π΄ΠΎ Π»ΡƒΡ‡ΡˆΠ΅Π³ΠΎ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° ΠΈΠ· Π΄Π²ΡƒΡ… случайных.

Какой Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ балансировки Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Π² своСй инфраструктурС ΠΈ ΠΏΠΎΡ‡Π΅ΠΌΡƒ?

***

Если вас заинтСрСсовала Ρ‚Π΅ΠΌΠ° Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² балансировки Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Π°ΠΌ стоит ΡƒΠ³Π»ΡƒΠ±ΠΈΡ‚ΡŒ свои знания Π² области Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² ΠΈ структур Π΄Π°Π½Π½Ρ‹Ρ…. На курсС «Алгоритмы ΠΈ структуры Π΄Π°Π½Π½Ρ‹Ρ…Β» ΠΎΡ‚ Proglib Academy Π²Ρ‹ Π½Π°ΡƒΡ‡ΠΈΡ‚Π΅ΡΡŒ:

  • Π Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с популярными Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°ΠΌΠΈ ΠΈ структурами Π΄Π°Π½Π½Ρ‹Ρ….
  • ΠŸΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ Π½Π°Π²Ρ‹ΠΊΠΈ ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ.
  • ΠŸΠΈΡΠ°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΉ ΠΈ эффСктивный ΠΊΠΎΠ΄.
  • Π Π΅ΡˆΠ°Ρ‚ΡŒ слоТныС алгоритмичСскиС Π·Π°Π΄Π°Ρ‡ΠΈ.

Π—Π½Π°Π½ΠΈΠ΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² – это Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ° ΠΊ собСсСдованиям, Π½ΠΎ ΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ вашСго ΠΏΡ€ΠΎΡ„Π΅ΡΡΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ инструмСнтария для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ практичСских Π·Π°Π΄Π°Ρ‡ Π² Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ….

Π˜Π½Ρ‚Π΅Ρ€Π΅ΡΠ½ΠΎ, Ρ…ΠΎΡ‡Ρƒ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ

(function () { let link = document .getElementById ("7772e1b0-a9ef-420a-8bfe-3d323fcb1417-https://proglib.io/w/9b8479f6-78"); if (! link) return; let href = link .getAttribute ("href"); if (! href) return; let prefix = link .dataset .prefix; let action = link .dataset .action; link .addEventListener ("click", function (e) { let data = new FormData (); data .append ("url", href); apiFetch (action, { method: "POST", body: data }) .then (function (res) {}) .catch (function (err) { console .error (err); }); }) })();