ENIGMA AI
ENIGMA AI
System Design Средний

Зачем нужен load balancer?

Load Balancer

Зачем нужен:

  1. Распределение нагрузки между серверами
  2. Высокая доступность — если сервер упал
  3. Масштабирование — добавление серверов
  4. 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:

  1. Используйте health checks
  2. Настройте connection draining
  3. Мониторьте метрики (latency, errors)
  4. Рассмотрите CDN для статики

Готовитесь к собеседованию?

ENIGMA AI — невидимый ИИ-помощник для технических интервью

Попробовать бесплатно
Все вопросы