Что такое масштабирование?

Я всегда получаю этот аргумент против RoR, что он не масштабируется, но я никогда не получаю никакого подходящего ответа, если это действительно означает? Итак, вот новичок, спрашивающий, что, черт возьми, это « масштабирование » и как вы это измеряете?

6
задан itsaboutcode 19 February 2011 в 22:11
поделиться

7 ответов

Что это за "масштабирование"...

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

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

Например, bogo sort легко реализовать, но как только вы сортируете больше, чем горстку вещей, это начинает занимать очень много времени, чтобы получить нужный вам ответ. Было бы справедливо сказать, что сорт бого не очень хорошо масштабируется.

... и как вы его измеряете?

На этот вопрос сложнее ответить. В общем, нет единиц, связанных с масштабируемостью; Такие утверждения, как "эта система в N раз более масштабируема, чем эта", в лучшем случае были бы сравнением между яблоками и диапазонами.

Масштабируемость чаще всего измеряется тем, насколько хорошо система выдерживает различные типы нагрузок в условиях тестирования. Люди могут сказать, что система хорошо масштабируется, если, в широком диапазоне спроса различных видов, она может идти в ногу. Это особенно верно, если она выдерживает спрос, который она в настоящее время не испытывает, но можно ожидать, если есть внезапный всплеск популярности. (Вспомните эффекты Slashdot/Digg/Reddit.)

.
10
ответ дан 8 December 2019 в 04:52
поделиться

Масштабирование или масштабируемость относится к тому, как проект может расти или расширяться, чтобы соответствовать спросу:

http://en.wikipedia.org/wiki/Scalability

9
ответ дан 8 December 2019 в 04:52
поделиться

Масштабируемость имеет широкий спектр применения, как указано в Википедии:

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

  • Масштабируемость нагрузки: Способность распределенной системы легко расширить и сократить свой пул ресурсов для размещения более тяжёлого или более лёгкого Грузы. В качестве альтернативы, легкость с какой системой или компонентом может быть изменённый, добавленный или удалённый приспособлены к изменяющейся нагрузке.
  • Географическая масштабируемость: Способность поддерживать производительность, полезность или удобство в использовании независимо от расширение от концентрации в локальная область для более распределённого географическая модель.
  • Административная масштабируемость: Способность к увеличению числа организациям легко поделиться одним распределенная система.
  • Функциональная масштабируемость: Способность к расширению системы за счет минимальное добавление нового функционала

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

В более общем плане часто обнаруживается, что увеличение проблемы на (скажем, на один-два порядка) приводит к появлению совершенно нового набора задач, которые нелегко предсказать из более маленькой системы

.
2
ответ дан 8 December 2019 в 04:52
поделиться

Это термин для выражения способности системы сохранять свою производительность по мере роста с течением времени.

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

Например: Это означает, что когда три webapp сервера могут обрабатывать тысячу одновременных пользователей, что, добавив три более сервера, они могут обрабатывать двойную величину , две тысячи одновременных пользователей в данном случае и не менее .

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

Таким образом, масштабируемость - это тот фактор, который говорит о том, что вы получаете на выходе из заданного входа. Теоретически, ее диапазон значений лежит между 0 и положительной бесконечностью. На практике наиболее желательным является все, что равно 1...

.
2
ответ дан 8 December 2019 в 04:52
поделиться

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

Подумайте о том, как сделать систему ввода заказов, рассчитанную на 1000 повторений в масштабе, чтобы вместить 100 000 повторений в секунду. Какое оборудование необходимо добавить? Как насчет баз данных? В двух словах, это масштабируемость.

1
ответ дан 8 December 2019 в 04:52
поделиться

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

.
0
ответ дан 8 December 2019 в 04:52
поделиться

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

.
0
ответ дан 8 December 2019 в 04:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: