Что такое HighLoad?

Например, один запрос в секунду – это нагрузка явно не highload, любой сервер, вроде бы, справится. Но, например, если он перекодирует видеоролики, то тут может наступить highload.

Высокая нагрузка это нагрузка, с которой не справляется железо.

Нет языков, технологий или баз данных, которые лучше или хуже подходят для высоконагруженного проекта. Вопрос - на чём лучше писать highload-проект - на Ruby или Python’е лишён смысла и говорит о низкой технической грамотности вопрошающего.

Высокие нагрузки, отказоустойчивость - это не про технологии, это про АРХИТЕКТУРУ!

Основная логика увеличения производительности:

  • Увеличиваем эффективность использования ресурсов
  • Увеличиваем количество ресурсов

Алгоритм проектирования

  1. Первым делом необходимо провести Анализ данных проекта.
  2. Для каждого использования подобрать архитектурный прием, разработать архитектуру.
  3. Для каждой архитектуры подобрать инструменты и технологии.

Алгоритм диагностики существующего решения

Что делать если решение уже разработано и его нужно переделать в highload-решение. Для начала необходимо поставить “диагноз”. А именно понять где у системы узкое горлышко. На какие процессы тратится больше всего ресурсов.

Архитектурные паттерны

Улучшения

Заметки

В чем измеряется нагрузка:

  • Количество запросов в единицу времени
    • Requests per seconds (RPS)
    • Request per minute (RPM)
  • Количество данных в единицу времени
    • Packets per seconds (PPS)
    • Мегабит в секунду (MB/s)
  • Количество одновременно обслуживаемых соединений
    • Simultaneous connections
    • Cuncurrency

Зачем нужен хайлоад?

Пропускная способность сетевой карты 1 Гбит/с (реальная 800-900 Мбит/с) или 120 000 пакетов в секунду. Bonding позволяет несколько физических интернет соединений объединить в одно логическое, например, 4 интерфейса - 3.5 Гбит/с.

В highload системах как правило отдают предпочтение throughput.