Добавить в корзинуПозвонить
Найти в Дзене
System Design World

📈 Балансировка трафика == просто “раскидать запросы по серверам

” !?🤔 ⚠️ Это способ сделать систему устойчивее, управляемее и дешевле в масштабировании. Что важно понимать на практике: ◦ Базово существуют балансировки на уровнях L4 и L7, которые решают разные задачи: ◦ ◦ L4 хорош, когда нужно быстро и просто проксировать соединения. ◦ ◦ L7 нужен, когда появляется логика маршрутизации по URL, headers, cookies и другим признакам. 🌝 Не каждая задача требует сложного алгоритма балансировки. Для гомогенного backend’а может хватит обычного Round Robin. Если машины разные по мощности -> то пригодится Weighted Round Robin - когда мы явно указываем в балансировщике веса. Если важна привязка пользователя к конкретной ноде -> consistent hashing. 😉 Динамические алгоритмы не всегда “умнее” в реальной жизни. Least connections и least response time звучат красиво, но часто смотрят на условный /ping, который вообще не отражает реальную деградацию. Сервер может отвечать на хелсчек и при этом умирать на тяжёлых запросах в CPU или базе. ✏️ Какой bottleneck эт

📈 Балансировка трафика == просто “раскидать запросы по серверам” !?🤔

⚠️ Это способ сделать систему устойчивее, управляемее и дешевле в масштабировании.

Что важно понимать на практике:

◦ Базово существуют балансировки на уровнях L4 и L7, которые решают разные задачи:

◦ ◦ L4 хорош, когда нужно быстро и просто проксировать соединения.

◦ ◦ L7 нужен, когда появляется логика маршрутизации по URL, headers, cookies и другим признакам.

🌝 Не каждая задача требует сложного алгоритма балансировки.

Для гомогенного backend’а может хватит обычного Round Robin.

Если машины разные по мощности -> то пригодится Weighted Round Robin - когда мы явно указываем в балансировщике веса.

Если важна привязка пользователя к конкретной ноде -> consistent hashing.

😉 Динамические алгоритмы не всегда “умнее” в реальной жизни.

Least connections и least response time звучат красиво, но часто смотрят на условный /ping, который вообще не отражает реальную деградацию. Сервер может отвечать на хелсчек и при этом умирать на тяжёлых запросах в CPU или базе.

✏️ Какой bottleneck этим не победить?

Можно раздать запросы на много хостов, но если все они ходят в один инстанс БД, потолок системы останется 😐

🤔 Какую балансировку выбирать?

Пользуемся базовым принципом:

Сначала простая система, которая работает; потом усложнение только там, где это уже действительно необходимо.

Расширенно про балансировку здесь.

-2