В чем разница между масштабируемостью и эластичностью? - PullRequest
48 голосов
/ 06 марта 2012

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

МАСШТАБИЛЬНОСТЬ - способность системы увеличивать нагрузку на свои текущие аппаратные ресурсы ( увеличивать );

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

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

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

Ответы [ 7 ]

47 голосов
/ 08 марта 2012

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

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

33 голосов
/ 07 апреля 2014

_

Масштабируемость: «Увеличение» потенциала для удовлетворения «растущей» рабочей нагрузки.

Эластичность: «Увеличение или уменьшение» способности соответствовать «увеличивающейся или уменьшающейся» рабочей нагрузке.


Масштабируемость: В среде масштабирования доступные ресурсы могут превышать для удовлетворения "будущих потребностей".

Эластичность: В эластичной среде доступные ресурсы максимально соответствуют «текущим потребностям».


Масштабируемость: Масштабируемость адаптируется только к «увеличению рабочей нагрузки» путем «выделения» ресурсов «инкрементным» способом.

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


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

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


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

Эластичность: Эластичность позволяет компании удовлетворять неожиданные изменения в спросе на услуги с «краткосрочными, тактическими потребностями».


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

Эта масштабируемость может быть "Масштабирование" или "Масштабирование".

(Пример:

Масштабирование - увеличение возможностей отдельного сервера

Масштабирование - расширение возможностей путем добавления нескольких серверов к отдельному серверу.)

Эластичность: Это способность «увеличивать или уменьшать» способность служить по желанию.


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

Эластичность: Чтобы использовать сравнение, киноактер увеличивает или уменьшает свой вес, чтобы удовлетворить различные потребности киноиндустрии.

_

20 голосов
/ 07 марта 2012

Обычно, когда кто-то говорит, что платформа или архитектура масштабируется , это означает, что затраты на оборудование линейно растут с ростом спроса.Например, если один сервер может обрабатывать 50 пользователей, 2 сервера могут обрабатывать 100 пользователей, а 10 серверов могут обрабатывать 500 пользователей.Если на каждые 1000 пользователей, которые вы получаете, вам нужно в 2 раза больше серверов, то можно сказать, что ваш дизайн имеет масштаб , а не , поскольку вы быстро исчерпали бы деньги по мере роста количества пользователей.

Эластичность используется для описания того, насколько хорошо ваша архитектура может адаптировать к нагрузке в режиме реального времени.Например, если у вас есть один вход пользователя каждый час на ваш сайт, то вам действительно нужен только один сервер для этого.Однако, если вдруг 50 000 пользователей вошли в систему одновременно, может ли ваша архитектура быстро (и, возможно, автоматически) выделить новые веб-серверы на лету для обработки этой нагрузки?Если это так, то можно сказать, что ваш дизайн упругий .

2 голосов
/ 06 июля 2018

В пересчете на AWS :

Масштабируемость относится к способности ваших ресурсов увеличиваться или уменьшаться в размере или количестве.

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

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

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


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

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

Масштабируемость требуется для эластичности, но не наоборот.

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

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

-

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

0 голосов
/ 20 мая 2018

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

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

Аналогичным образом вы можете настроить свою систему на удаление серверов из внутреннего кластера, если нагрузка на систему уменьшается, а средняя загрузка ЦП в минуту ниже установленного вами порогового значения (например, 30%).

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

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

Масштабируемая система не зависит от эластичности. Традиционно ИТ-отделы могли заменить свои существующие серверы новыми серверами, на которых было больше ЦП, ОЗУ и хранилища, и перенести систему на новое оборудование, чтобы использовать дополнительные вычислительные мощности, доступные для него.

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

0 голосов
/ 23 марта 2016

Из моего ограниченного понимания этих концепций, пример:

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

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

0 голосов
/ 05 сентября 2015

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

...