Довідка та теорія
Балансувальник навантаження розподіляє вхідні запити між пулом серверів бекенду, щоб жоден не був перевантажений, поки інші простоюють. Політика вирішує, який сервер отримає кожен запит.
Політики
- Циклічна — по черзі обходить сервери за порядком.
- Найменше зʼєднань — серверу з найменшим числом активних запитів.
- Зважена — швидшим серверам пропорційно більше трафіку.
- Випадкова — рівномірно випадковий вибір сервера.
Пуассонівські надходження
Запити надходять випадково: міжприбуттєві проміжки дорівнюють
−ln(U)/λ для випадкового U — класичний
пуассонівський процес реального «вибухового» трафіку.
Завантаженість і затримка
Завантаженість ρ = λ/μ — частка зайнятості сервера.
Теорія черг дає час очікування ∝ 1/(1 − ρ), тож
затримка вибухає при ρ → 1. Циклічна політика може
накопичувати черги на повільних серверах; найменше-зʼєднань
адаптується, щоб тримати їх рівними.
Поширені запитання
Що робить балансувальник навантаження?
Балансувальник навантаження стоїть перед пулом серверів бекенду й вирішує, який сервер має обробити кожен вхідний запит, розподіляючи трафік так, щоб жоден сервер не був перевантажений, поки інші простоюють.
Як працює циклічне (round-robin) балансування?
Циклічна політика надсилає кожен наступний запит наступному серверу у фіксованому циклічному порядку: сервер 1, сервер 2, сервер 3, потім знову до 1. Вона проста й справедлива, коли сервери однакові, а запити коштують приблизно однаково.
Що таке балансування за найменшим числом зʼєднань?
Політика найменше-зʼєднань надсилає кожен новий запит серверу, що наразі обробляє найменше активних запитів. Вона адаптується до нерівної тривалості запитів і різної швидкості серверів значно краще за циклічну.
Що таке зважене балансування навантаження?
Зважене балансування призначає кожному серверу вагу, пропорційну до його потужності, тож швидші сервери отримують пропорційно більше запитів. Сервер з вагою 3 отримує приблизно втричі більшу частку, ніж сервер з вагою 1.
Коли прийнятне випадкове балансування навантаження?
Вибір сервера рівномірно випадково не зберігає стану й тривіальний у реалізації, а за багатьох серверів наближається до рівномірного розподілу. Варіант «сила двох випадкових виборів» — обрати два, взяти менш завантажений — працює напрочуд добре.
Що таке пуассонівські надходження?
Пуассонівські надходження моделюють незалежні випадкові моменти запитів, де проміжки між надходженнями мають експоненційний розподіл. Ця симуляція генерує їх із міжприбуттєвим часом −ln(U)/λ для випадкового U, що відповідає реальному «вибуховому» трафіку.
Чому затримка різко зростає поблизу повної завантаженості?
Теорія черг показує, що час очікування зростає як 1/(1 − ρ), де ρ — завантаженість. Коли сервер наближається до 100% зайнятості, навіть невелике зростання трафіку спричиняє вибух черг і затримки.
Що таке завантаженість сервера?
Завантаженість ρ — це частка часу, коли сервер зайнятий, що дорівнює інтенсивності надходжень, поділеній на інтенсивність обслуговування цього сервера. Понад ρ = 1 сервер не встигає, і його черга росте необмежено.
Чому циклічна політика все одно може спричинити дисбаланс?
Циклічна політика ігнорує, скільки триває кожен запит і наскільки швидкий кожен сервер. Якщо запити різняться вартістю або сервери — швидкістю, в одних серверів накопичуються черги, а інші спорожнюються, хоча кількості рівні.
Як тут вимірюється середня затримка?
Симуляція записує повний час кожного завершеного запиту — очікування в черзі плюс обслуговування — і повідомляє поточне середнє по всіх завершених запитах за чинної політики.