Подтвердить что ты не робот

Что для вас означает масштабируемость?

Я разместил аналогичный вопрос о том, насколько масштабируемым является linq. Было так много разных взглядов на то, что в некоторых недавних разговорах на самом деле означало масштабируемость, и это заставило меня задать этот вопрос. Что означает масштабируемость для вас?

4b9b3361

Ответ 1

Я рассматриваю масштабируемость с двух точек зрения:

Масштабирование

Если я добавлю больше оперативной памяти в окно, в котором что-то работает, сколько дополнительной производительности и емкости я получу? Если одно приложение, которое у меня есть, может обрабатывать еще 300 соединений и работает на 15% быстрее, когда я добавляю 2 ГБ ОЗУ на свой сервер, а другое приложение может обрабатывать только 100 соединений и работает на 5% быстрее, приложение А явно более масштабируемо.

Масштабирование

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

Это, кстати, один из основных приводов n-уровня.

Ответ 2

Масштабируемость означает способность обрабатывать рост в любой из этих двух областей:

1) Простота добавления новых функций, исправления ошибок. Чтобы сделать код такими новыми вещами, как трудно это сделать? Хотя в некоторых случаях это может быть ремонтопригодностью, это также вопрос о том, можно ли легко создавать код для большей масштабируемости.

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

В целом для меня масштабируемость означает способность расти.

Ответ 3

Я не думаю, что масштабируемость делает йоту смысла без контекста.

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

(ОК, поэтому ответ на все эти вопросы обычно "Да", а затем добавьте слово "Как" к этим вопросам.)

Чтобы выбрать не совсем фиктивный пример: система, в настоящее время поддерживающая очень мало пользователей, и чья пользовательская база, как ожидается, быстро растет, имеет серьезную проблему масштабирования, если администратор базы данных должен потратить два часа на выполнение запросов вручную из информации, выбранной из сообщения электронной почты каждый раз, когда он должен настроить новую учетную запись. Это не проблема, которая может быть исправлена ​​путем добавления дополнительных ресурсов, если вы не включите администраторов баз данных в список ресурсов, которые вы собираетесь добавить (и есть много причин, которые не будут хорошо масштабироваться).

Или представьте себе сайт социальной сети, в котором вы увидите захватывающую новую функцию, которую вы можете видеть, если ваши друзья в сети и общаться с ними через приятный интерфейс Ajax-y. Внезапно, без увеличения пользовательской базы, количество запросов HTTP, которое ваши серверы обрабатывают в день, прыгает в двадцать раз, и ваши заботы о масштабируемости вашей базы данных отступают в фоновом режиме. (Если, конечно, вы не использовали базу данных в своем чат-приложении. Хорошее мышление!)

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

Ответ 4

Я ответил на этот вопрос так, как будто вы имели в виду быстро, но это потому, что я не хотел быть рывком:) - то есть я не хотел начинать дискуссию о том, какие масштабируемые средства. Я думаю о масштабируемости, поскольку: добавление ресурсов в систему увеличивает его производительность.

В этом смысле PLINQ является масштабируемым, поскольку добавление большего количества ядер ускорит его выполнение.

Ответ 5

Просто добавьте сообщение @Lou Franco.

PLINQ даже имеет причудливые "суперлинейные" характеристики в некоторых сценариях с ограниченными накладными расходами (согласно некоторым из их демо). Попробуйте.

Если вы являетесь парнем С++, Microsoft также хочет освободить функции concurrency, которые, по-видимому, не связаны с затратами на выполнение, связанными с ними, и дополнительными инструментами concurrency на основе задач, которые помогут вам лучше позвонить.

Ответ 6

Я рассматриваю масштабируемость как меру плавности кривой стоимости.

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

Ответ 7

Масштабируемость - способность системы использовать дополнительные ресурсы для увеличения пропускной способности или пропускной способности. Дополнительные ресурсы, такие как диски, память, сетевые карты, процессоры или машины.

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

Ответ 8

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

Можно ли обрабатывать больше (трафик, данные, обработка), добавляя больше товарного оборудования? даже используя "облачные серверы" amazon ec2, движок Google и т.д.?

Ответ 9

Масштабируемое означает, что я могу вложить n ресурсов в систему и будет расти как в пространстве, так и во времени между O (log (n)) и O (n log n). Это несколько нереально, но я думаю о "масштабируемых".

Ответ 10

Woh!, большое слово....

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

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