2009-12-26 1 views
6

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

+5

Я думаю, что масштабирование - это то, что вы делаете при программировании в Scala. :-) –

+0

Можете ли вы предоставить какой-нибудь контекст, пожалуйста? Вы спрашиваете о масштабировании веб-сайтов и/или приложений для обработки большего количества пользователей/данных? – ChrisF

+0

@ChrisF Ну, в частности, я говорю о веб-сайтах, а также о том, что вообще означает этот термин. – itsaboutcode

ответ

10

Какое черт это «масштабирование» ...

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

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

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

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

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

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

1

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

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

+1

Это не обязательно относится к числу пользователей. Например, представьте себе систему с одним пользователем, которая отслеживает автомобили на дороге. Возможно, он был опробован в городе с населением 10 000 человек, но будет ли он масштабироваться до города с населением в миллионах? –

+0

Правда, но я приводил пример, который, как я думаю, кто-то из SO может относиться к – DenaliHardtail

9

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

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

0

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

2

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

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

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

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

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

+0

. Можем ли мы сказать, что это все о том, сколько людей проходит через туннель за одну секунду? – itsaboutcode

+2

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

0

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

2

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

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

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

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

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