System Design
Средний
Зачем нужен load balancer?
Load Balancer
Зачем нужен:
- Распределение нагрузки между серверами
- Высокая доступность — если сервер упал
- Масштабирование — добавление серверов
- SSL termination — разгрузка серверов
Архитектура:
Client
│
▼
┌──────────────┐
│ Load Balancer│
└──────────────┘
/ | \
▼ ▼ ▼
Server1 Server2 Server3
Алгоритмы балансировки:
Round Robin
Request 1 → Server 1
Request 2 → Server 2
Request 3 → Server 3
Request 4 → Server 1
Weighted Round Robin
Server 1 (weight: 3) → 3 запроса
Server 2 (weight: 1) → 1 запрос
Least Connections
Направляет на сервер с наименьшим числом активных соединений
IP Hash
Один клиент всегда попадает на один сервер (sticky sessions)
Типы:
L4 (Transport Layer)
- Работает с TCP/UDP
- Быстрее, меньше функций
- Примеры: HAProxy, AWS NLB
L7 (Application Layer)
- Работает с HTTP/HTTPS
- Маршрутизация по URL, headers
- Примеры: Nginx, AWS ALB
Nginx пример:
upstream backend {
server server1:8080 weight=3;
server server2:8080;
server server3:8080 backup;
}
server {
listen 80;
location / {
proxy_pass http://backend;
}
}
Health Checks:
upstream backend {
server server1:8080;
server server2:8080;
# Проверка здоровья
health_check interval=5s fails=3 passes=2;
}
Session Persistence:
upstream backend {
ip_hash; # Sticky sessions по IP
server server1:8080;
server server2:8080;
}
Cloud Load Balancers:
| Провайдер | L4 | L7 |
|---|---|---|
| AWS | NLB | ALB |
| GCP | TCP/UDP LB | HTTP(S) LB |
| Azure | LB | Application Gateway |
Best Practices:
- Используйте health checks
- Настройте connection draining
- Мониторьте метрики (latency, errors)
- Рассмотрите CDN для статики
Готовитесь к собеседованию?
ENIGMA AI — невидимый ИИ-помощник для технических интервью
Попробовать бесплатно