Что значит сказать, что фреймворк «хорошо масштабируется»? - PullRequest
17 голосов
/ 01 июня 2009

Когда я читаю о фреймворках (.net. Ruby на рельсах, django, spring и т. Д.), Я постоянно вижу, что и так хорошо или плохо масштабируется.

Что это значит, когда кто-то говорит, что фреймворк "хорошо масштабируется" и что значит сказать, что фреймворк "плохо масштабируется"?

Спасибо.

Ответы [ 8 ]

17 голосов
/ 02 июня 2009

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

Малый - несколько пользователей - использует несколько ресурсов.

Крупномасштабное - большое количество пользователей - использует большое количество ресурсов.

Критический вопрос: "Насколько близко к линейному масштабирование?" Если он линейно масштабируется, то обслуживание 2000 одновременно работающих пользователей стоит в 2 раза дороже обслуживания 1000 пользователей и в 4 раза дороже обслуживания 500 пользователей. Это инструмент / framework / язык / платформа / OS, который хорошо масштабируется. Это предсказуемо, и предсказание является линейным.

Если он не масштабируется линейно, то обслуживание 4000 пользователей обходится в 1000 раз дороже, чем обслуживание 2000 пользователей, что в 100 раз дороже обслуживания 500 пользователей. Это не хорошо масштабируется. Что-то пошло не так, как использование выросло; оно не выглядит предсказуемым и не является линейным.

8 голосов
/ 02 июня 2009

Это означает, что конкретный фреймворк (или не) удовлетворяет возросший спрос, который предъявляют все больше пользователей. Если у вас есть приложение, написанное на VBScript, оно может не справиться с 40 000 000 пользователей Facebook, например.

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

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

4 голосов
/ 02 июня 2009

Если фреймворк или приложение хорошо масштабируются, это означает, что они могут обрабатывать большие нагрузки. Поскольку ваш сайт становится все более популярным с большим количеством посетителей и большим количеством посещений в день, платформа, которая хорошо масштабируется, будет обрабатывать большую нагрузку так же, как она обрабатывает меньшую нагрузку. Структура, которая хорошо масштабируется, будет действовать так же, когда она получает 200 000 попаданий в час, так же, как когда она получает 1 удар в час. Не только попадания, но и развертывания на нескольких серверах, возможно, за балансировкой нагрузки, возможно, на нескольких разных серверах баз данных. Платформа, которая хорошо масштабируется, может хорошо справляться с этими растущими требованиями.

Например, твиттер взорвался почти за ночь в прошлом году. Он был разработан с использованием Ruby On Rails и горячо освещался в продолжающихся дебатах о том, хорошо ли масштабируется Rails.

2 голосов
/ 02 июня 2009

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

Во-вторых, может ли оно масштабироваться до более крупных команд или предприятия. То есть хорошо ли он работает с большими базами кода? Большие команды разработчиков? Есть ли хорошая поддержка инструмента? Насколько легко развернуть? Можете ли вы выкатить десятки или сотни или даже тысячи пользователей? Весь путь к тому, чтобы легко нанять людей, которые имеют этот навык. Подумайте о попытке собрать команду разработчиков из 20 или 50 человек, которые все работают на этой основе. Будет ли это легко или почти невозможно?

2 голосов
/ 02 июня 2009

заменить фразу "расширение ручки" на "масштаб"

0 голосов
/ 21 сентября 2009

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

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

0 голосов
/ 02 июня 2009

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

0 голосов
/ 02 июня 2009

ИМХО, говоря, что фреймворк "хорошо масштабируется", обычно означает, что кто-то в цепочке слухов смог использовать его для обработки большого объема.

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

По моему опыту, практически любой каркас может быть сделан в масштабе при достаточном опыте.

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

...