То, что вы делаете, является хорошей обратной стороной конверта, но вы ни в коем случае не должны использовать свое мысленное упражнение в качестве окончательного руководства для масштабирования вашего сервиса.
Это связано с тем, что ни одна служба не будет демонстрировать такое постоянное поведение, как вы описываете (винить, если это непредсказуемый периферийный ввод-вывод, сборка мусора, внешние факторы, пользовательский ввод и т. д.)
Правильный подход — выполнить масштабирование и нагрузочное тестирование. После того, как вы написали свой сервис, начните его нагрузочное тестирование и обратите внимание на характеристики производительности вашего сервиса. Если вы все делаете правильно, вы должны достичь точки, в которой ваша конфигурация достигает максимума: ЦП, пропускная способность сети, память или дисковый ввод-вывод. Если ни один из них не исчерпан, и вы достигли предела, то это одна из ваших восходящих зависимостей (ваша база данных и т. д.).
Как только вы достигнете своего пика, он сообщит вам, сколько запросов в секунду вы можете обработать на пике.
Вы также заметите, что в большинстве случаев пиковая производительность не является устойчивой: ваша установка может работать в течение коротких периодов времени, обрабатывая гораздо больше запросов в секунду, чем при постоянной нагрузке.
После того, как вы получите цифры для одного сервера, вы можете начать варьироваться двумя способами:
протестируйте с различными аппаратными конфигурациями (добавьте больше оперативной памяти, если у вас ограничена память, добавьте более мощный процессор, если вы ограничены процессором и т. д.)
тест с несколькими серверами; начните добавлять серверы и посмотрите, как ваш сервис масштабируется по горизонтали
В идеале ваш сервис должен масштабироваться линейно по мере добавления серверов, но вы, вероятно, обнаружите, что кривая производительности не является линейной.
Получите свои номера, настройте свой дизайн. Смывать. Повторить.
Замены нет, волшебная формула.
person
Mike Dinescu
schedule
02.11.2016