Рубрики
Без рубрики

Простое уравнение масштабируемости

Автор оригинала: Vlad Mihalcea.

Теория массового обслуживания позволяет нам прогнозировать длину очереди и время ожидания, что имеет первостепенное значение для планирования пропускной способности. Для архитектора это очень удобный инструмент, поскольку очереди-это не просто принадлежность систем обмена сообщениями.

Чтобы избежать перегрузки системы, мы используем дросселирование . Всякий раз, когда количество входящих запросов превышает доступные ресурсы, у нас в основном есть два варианта:

  • отбрасывание всего переполненного трафика, следовательно, снижение доступности
  • постановка запросов в очередь и ожидание (до тех пор, пока не будет превышен порог ожидания), пока будут доступны занятые ресурсы

Это поведение применимо к веб-серверам с потоками по запросу, пакетным процессорам или пулам соединений.

Простое уравнение масштабируемости @vlad_mihalcea https://t.co/ajur9yg6qB pic.twitter.com/GOB9GffSBN

Агнер Краруп Эрланг является отцом теории массового обслуживания и проектирования трафика, первым сформулировавшим математические модели, необходимые для обеспечения телекоммуникационных сетей.

Формулы Эрланга моделируются для моделей M/M/k очередей, что означает, что система характеризуется:

Формулы Эрланга дают нам вероятность обслуживания для:

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

Формула общего назначения, применимая к любой стабильной системе (системе, в которой скорость прибытия не превышает скорость отправления), является Законом Литтла .

где

L – среднее количество клиентов λ – долгосрочная средняя скорость прибытия W-среднее время, которое запрос проводит в системе

Вы можете применять его практически везде, от очередей покупателей до анализа трафика веб-запросов.

Это можно рассматривать как простую формулу масштабируемости, поскольку для удвоения входящего трафика у нас есть два варианта:

  1. сократите вдвое время отклика (следовательно, повысив производительность).
  2. удвоьте количество доступных серверов (следовательно, увеличьте пропускную способность)

Простой пример – очередь в супермаркете. Когда вы прибываете в очередь, вы должны обратить внимание на скорость прибытия (например, человек/минута) и длину очереди (например, человек), чтобы узнать, сколько времени вы собираетесь потратить на ожидание обслуживания (например,/минут).

Допустим, мы хотим настроить пул соединений для поддержки заданного спроса на трафик. Система пула соединений характеризуется следующими переменными:

Время Ws (получение и удержание соединения.1s -запросы на обслуживание (пул

Предполагая, что очереди нет):

Наш пул подключений может доставлять до 50 запросов в секунду без какой-либо очереди входящих запросов на подключение.

Всякий раз, когда возникают скачки трафика, нам нужно полагаться на очередь, и поскольку мы устанавливаем фиксированное время ожидания получения соединения, длина очереди будет ограничена.

Поскольку система считается стабильной, скорость прибытия применяется как к записи в очередь, так и к фактическим услугам:

Эта конфигурация очереди по-прежнему обеспечивает 50 запросов в секунду, но она также может ставить в очередь 100 запросов в течение 2 секунд.

Будет обработан односекундный пакет трафика из 150 запросов, так как:

  • 50 запросов могут быть поданы в первую секунду
  • остальные 100 будут поставлены в очередь и обслужены в течение следующих двух секунд

Уравнение времени ожидания таково:

Таким образом, в течение 3 секунд всплеск составляет 250 запросов в секунду:

λспик/с

Количество запросов, которые необходимо обслужить, составляет:

Для полной обработки этого всплеска потребуется 15 секунд, что означает буфер очереди 700, обработка которого займет еще 14 секунд.

Закон Литтла работает с долгосрочными средними значениями, и он может не подходить для различных моделей всплесков трафика. Вот почему показатели очень важны при выделении ресурсов.

Очередь ценна тем, что она дает нам больше времени. Это не влияет на пропускную способность. Пропускная способность имеет значение только для повышения производительности или увеличения числа серверов.

Но если пропускная способность постоянна, то очереди будут выравнивать потоки трафика за счет задержки обработки запросов на переполнение.

Flexipool позволяет анализировать все данные о трафике, чтобы вы могли лучше понять внутреннюю работу вашего пула соединений. Стратегии отработки отказа являются безопасными механизмами для случаев, когда исходные предположения о конфигурации больше не выполняются.