Средний

Балансировка нагрузки и кеширование

Урок 2 из 3 в курсе Масштабирование backend-систем

Содержание курса (2/3)

Балансировка нагрузки и кеширование

балансировщики распределяют трафик, кеши снимают нагрузку с БД и вычислений.

Почему это важно: Большинство масштабирования начинается не с добавления серверов, а с правильного кеширования и балансировки.

Главная идея

Кеш — самый дешёвый способ ускорить систему. Балансировка обеспечивает равномерную нагрузку.

Как это выглядит на практике

  1. Популярная страница генерируется 200 мс.
  2. Добавили кеш Redis с TTL 5 минут — страница отдаётся за 5 мс.
  3. Нагрузка на БД упала в 40 раз.
  4. Балансировщик равномерно распределяет запросы на 4 инстанса.

Что происходит под капотом

  • Уровни кеша: CDN, reverse proxy (Varnish, nginx), application cache (Redis), БД кеш.
  • Стратегии инвалидации: TTL, event-based, manual.
  • Балансировка L4 (TCP/UDP) vs L7 (HTTP) — разные возможности.
  • Sticky sessions привязывают клиента к одному инстансу, но мешают масштабированию.

Типичные ошибки и заблуждения

  • Ошибка: кеш всё ускоряет. Неправильный кеш может ухудшить performance из-за stale data.
  • Ошибка: балансировщик — это просто раздатчик. Современные LB делают health checks, rate limiting, TLS termination.
  • Ошибка: кешировать всё. Это приводит к сложной инвалидации и багам.
  • Ошибка: sticky sessions — лучшая практика. Они мешают элегантному масштабированию.

Ключевые выводы

  • Кеш — главный ускоритель backend-систем.
  • Инвалидация — сложнейшая проблема в кешировании.
  • Балансировщики делают больше, чем распределение запросов.
  • Множественные уровни кеша работают вместе.

Термины урока

Cache hit/miss: попадание/промах в кеш.
TTL: Time To Live, время жизни записи в кеше.
Health check: проверка живости инстанса балансировщиком.
Sticky session: привязка клиента к одному backend-инстансу.

Связь с работой backend-разработчика

Перед тем как добавлять серверы, проверьте, что у вас есть кеширование и оптимизированные запросы. Часто это решает 80% проблем.

Мини-разбор реальной ситуации

API тормозил при 1000 RPS. Добавление Redis-кеша на hot-данные снизило нагрузку на БД в 10 раз. Добавление серверов не потребовалось ещё полгода.

Что запомнить

  • Кеш раньше серверов.
  • Инвалидация — сложнее, чем кажется.
  • LB — не только распределитель, но и защитник.

Итог

Балансировка и кеширование — базовые инструменты масштабирования, и часто их достаточно.

Комментарии к уроку

Войдите, чтобы оставить комментарий.

Пока нет комментариев — будьте первым.