Что такое highload-проекты?

«Что такое highload-проекты?» — вопрос из категории Архитектура, который задают на 24% собеседований PHP Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Highload-проекты — это системы, рассчитанные на обработку экстремально высоких нагрузок, часто измеряемых в тысячах или миллионах запросов в секунду. Их ключевые характеристики — горизонтальная масштабируемость, отказоустойчивость и минимальные задержки (low latency).

Основные принципы архитектуры:

  • Масштабирование: Горизонтальное масштабирование (добавление серверов) предпочтительнее вертикального (увеличение мощности одного сервера). Используются балансировщики нагрузки (Nginx, HAProxy) и оркестраторы (Kubernetes).
  • Оптимизация данных: Шардинг и репликация БД, активное использование кэширования (Redis, Memcached) для снижения нагрузки на основное хранилище.
  • Асинхронность: Обработка длительных задач через очереди сообщений (RabbitMQ, Kafka) и воркеры, чтобы не блокировать основной поток запросов.
  • Мониторинг и метрики: Непрерывный сбор метрик (Prometheus, Grafana) для выявления узких мест и автоматического масштабирования.

Пример подхода к кэшированию:

// Стратегия "Cache-Aside" (Lazy Loading)
$cacheKey = 'user_profile_' . $userId;
$userData = $redis->get($cacheKey);

if ($userData === false) {
    // Данных нет в кэше, загружаем из БД
    $userData = $db->query('SELECT * FROM users WHERE id = ?', [$userId])->fetch();
    // Сохраняем в кэш на 5 минут
    $redis->setex($cacheKey, 300, serialize($userData));
} else {
    $userData = unserialize($userData);
}