Масштабируемость

Способность системы справляться с возрастающим объемом работы

Масштабируемость — это свойство системы справляться с растущим объемом работы. Одно из определений программных систем указывает, что это может быть достигнуто путем добавления ресурсов в систему. [1]

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

В вычислительной технике масштабируемость является характеристикой компьютеров, сетей, алгоритмов , сетевых протоколов , программ и приложений. Примером может служить поисковая система , которая должна поддерживать растущее число пользователей и число индексируемых ею тем . [3] Webscale — это подход к компьютерной архитектуре, который переносит возможности крупных компаний облачных вычислений в корпоративные центры обработки данных. [4]

В распределенных системах существует несколько определений, согласно авторам, некоторые рассматривают концепции масштабируемости как часть эластичности , другие как отдельные. По словам Марка Брукера: «система масштабируется в диапазоне, где предельная стоимость дополнительной рабочей нагрузки почти постоянна». Бессерверные технологии соответствуют этому определению, но вам нужно учитывать общую стоимость владения, а не только стоимость инфраструктуры. [5]

В математике масштабируемость в основном относится к замкнутости относительно скалярного умножения .

В промышленном проектировании и производстве масштабируемость относится к способности процесса, системы или организации справляться с растущей рабочей нагрузкой, адаптироваться к растущим требованиям и поддерживать операционную эффективность. Масштабируемая система может эффективно управлять возросшими объемами производства, новыми линейками продукции или расширяющимися рынками без ущерба для качества или производительности. В этом контексте масштабируемость является жизненно важным фактором для предприятий, стремящихся оправдать ожидания клиентов, оставаться конкурентоспособными и достигать устойчивого роста. Факторы, влияющие на масштабируемость, включают гибкость производственного процесса, адаптивность рабочей силы и интеграцию передовых технологий. Внедряя масштабируемые решения, компании могут оптимизировать использование ресурсов, сократить расходы и оптимизировать свои операции. Масштабируемость в промышленном проектировании и производстве позволяет предприятиям реагировать на меняющиеся рыночные условия, извлекать выгоду из появляющихся возможностей и процветать в постоянно меняющемся глобальном ландшафте. [ необходима цитата ]

Примеры

Система управления инцидентами (ICS) используется агентствами по реагированию на чрезвычайные ситуации в Соединенных Штатах. ICS может масштабировать координацию ресурсов от пожара на обочине дороги с одним двигателем до лесного пожара на межгосударственном уровне. Первый ресурс на месте происшествия устанавливает командование, имея полномочия заказывать ресурсы и делегировать ответственность (управление пятью-семью офицерами, которые снова делегируют полномочия семи и так далее по мере разрастания инцидента). По мере расширения инцидента более старшие офицеры принимают на себя командование. [6]

Размеры

Масштабируемость можно измерить по нескольким параметрам, например: [7]

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

Домены

  • Протокол маршрутизации считается масштабируемым относительно размера сети, если размер необходимой таблицы маршрутизации на каждом узле растет как O (log N ), где N — количество узлов в сети. Некоторые ранние одноранговые (P2P) реализации Gnutella имели проблемы с масштабированием. Каждый запрос узла переполнял все узлы. Спрос на каждый одноранговый узел увеличивался пропорционально общему количеству одноранговых узлов, быстро переполняя их пропускную способность. Другие P2P-системы, такие как BitTorrent, хорошо масштабируются, поскольку спрос на каждый одноранговый узел не зависит от количества одноранговых узлов. Ничто не централизовано, поэтому система может расширяться бесконечно без каких-либо ресурсов, кроме самих одноранговых узлов.
  • Масштабируемая система обработки онлайн-транзакций или система управления базами данных — это система, которую можно модернизировать для обработки большего количества транзакций путем добавления новых процессоров, устройств и хранилищ, и которую можно легко и прозрачно модернизировать, не останавливая ее работу.
  • Распределенная природа системы доменных имен (DNS) позволяет ей работать эффективно, обслуживая миллиарды хостов во всемирной сети Интернет .

Горизонтальное (уменьшение) и вертикальное масштабирование (увеличение)

Ресурсы делятся на две основные категории: горизонтальные и вертикальные. [8]

Горизонтальное или масштабируемое

Горизонтальное масштабирование (вне/внутрь) означает добавление или удаление узлов, например, добавление нового компьютера в распределенное программное приложение. Примером может служить масштабирование с одного веб-сервера до трех. Высокопроизводительные вычислительные приложения, такие как сейсмический анализ и биотехнологии , масштабируют рабочие нагрузки горизонтально для поддержки задач, которые когда-то потребовали бы дорогих суперкомпьютеров . Другие рабочие нагрузки, такие как крупные социальные сети, превышают возможности самого большого суперкомпьютера и могут обрабатываться только масштабируемыми системами. Использование этой масштабируемости требует программного обеспечения для эффективного управления ресурсами и обслуживания. [7]

Вертикальное или масштабируемое

Вертикальное масштабирование (вверх/вниз) означает добавление ресурсов к (или удаление ресурсов из) одного узла, обычно включающее добавление процессоров, памяти или хранилища к одному компьютеру. [7]

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

Масштабируемость сети

Виртуализация сетевых функций определяет эти термины по-разному: масштабирование наружу/внутрь — это возможность масштабирования путем добавления/удаления экземпляров ресурсов (например, виртуальной машины), тогда как масштабирование вверх/вниз — это возможность масштабирования путем изменения выделенных ресурсов (например, памяти/ЦП/емкости хранилища). [9]

Масштабируемость базы данных

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

Алгоритмические инновации включают блокировку на уровне строк и секционирование таблиц и индексов. Архитектурные инновации включают архитектуры «ничего общего» и «всего общего» для управления конфигурациями нескольких серверов.

Сильная и конечная последовательность (хранение)

В контексте масштабируемого хранилища данных масштабируемость определяется как максимальный размер кластера хранения, который гарантирует полную согласованность данных, то есть существует только одна допустимая версия хранимых данных во всем кластере, независимо от количества избыточных физических копий данных. Кластеры, которые обеспечивают «ленивую» избыточность путем обновления копий асинхронным способом, называются «в конечном итоге согласованными» . Этот тип масштабируемого дизайна подходит, когда доступность и скорость реагирования оцениваются выше согласованности, что справедливо для многих веб-сервисов размещения файлов или веб-кэшей ( если вам нужна последняя версия, подождите несколько секунд, пока она распространится ). Для всех классических приложений, ориентированных на транзакции, такой дизайн следует избегать. [10]

Многие кластеры хранения с открытым исходным кодом и даже коммерческие масштабируемые кластеры, особенно те, которые построены на основе стандартного оборудования ПК и сетей, обеспечивают только конечную согласованность, например, некоторые базы данных NoSQL, такие как CouchDB и другие, упомянутые выше. Операции записи делают другие копии недействительными, но часто не ждут их подтверждений. Операции чтения обычно не проверяют каждую избыточную копию перед ответом, потенциально пропуская предыдущую операцию записи. Большой объем трафика сигналов метаданных потребует специализированного оборудования и коротких расстояний для обработки с приемлемой производительностью (т. е., действуя как некластеризованное устройство хранения или база данных). [ необходима цитата ]

Если ожидается высокая согласованность данных, обратите внимание на следующие индикаторы: [ необходима ссылка ]

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

Индикаторы для в конечном итоге согласованных конструкций (не подходят для транзакционных приложений!): [ необходима ссылка ]

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

Настройка производительности против масштабируемости оборудования

Часто советуют сосредоточиться на проектировании системы на масштабируемости оборудования, а не на емкости. Обычно дешевле добавить новый узел в систему, чтобы добиться повышения производительности, чем участвовать в настройке производительности для повышения емкости, которую может обрабатывать каждый узел. Но этот подход может иметь убывающую отдачу (как обсуждалось в инженерии производительности ). Например: предположим, что 70% программы можно ускорить, если распараллелить и запустить на нескольких ЦП вместо одного. Если — это часть вычисления, которая является последовательной, а — это часть, которая может быть распараллелена, максимальное ускорение , которого можно достичь с помощью процессоров P, определяется в соответствии с законом Амдаля : α {\displaystyle \alpha } 1 α {\displaystyle 1-\alpha }

1 α + 1 α P . {\displaystyle {\frac {1}{\alpha +{\frac {1-\alpha }{P}}}}.}

Подставляя значение для этого примера, используя 4 процессора, получаем

1 0.3 + 1 0.3 4 = 2.105. {\displaystyle {\frac {1}{0.3+{\frac {1-0.3}{4}}}}=2.105.}

Удвоение вычислительной мощности до 8 процессоров дает

1 0.3 + 1 0.3 8 = 2.581. {\displaystyle {\frac {1}{0.3+{\frac {1-0.3}{8}}}}=2.581.}

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

Закон универсальной масштабируемости

В распределенных системах вы можете использовать универсальный закон масштабируемости (USL) для моделирования и оптимизации масштабируемости вашей системы. USL был придуман Нилом Дж. Гюнтером и количественно определяет масштабируемость на основе таких параметров, как конкуренция и согласованность. Конкуренция относится к задержке из-за ожидания или очередей для общих ресурсов. Согласованность относится к задержке для того, чтобы данные стали согласованными. Например, наличие высокой конкуренции указывает на последовательную обработку, которая может быть распараллелена, в то время как наличие высокой согласованности предполагает чрезмерные зависимости между процессами, побуждая вас минимизировать взаимодействия. Кроме того, с помощью USL вы можете заранее рассчитать максимальную эффективную емкость вашей системы: масштабирование вашей системы за пределами этой точки является пустой тратой. [11]

Слабое и сильное масштабирование

В высокопроизводительных вычислениях есть два общих понятия масштабируемости:

  • Сильное масштабирование определяется тем, как время решения зависит от количества процессоров при фиксированном общем размере задачи.
  • Слабое масштабирование определяется как то, как время решения зависит от количества процессоров для фиксированного размера задачи на процессор . [12]

Смотрите также

Ссылки

  1. ^ Бонди, Андре Б. (2000). Характеристики масштабируемости и их влияние на производительность . Труды второго международного семинара по программному обеспечению и производительности – WOSP '00. стр. 195. doi :10.1145/350391.350432. ISBN 158113195X.
  2. ^ Хилл, Марк Д. (1990). «Что такое масштабируемость?» (PDF) . ACM SIGARCH Computer Architecture News . 18 (4): 18. doi :10.1145/121973.121975. S2CID  1232925.и Дубок, Летиция; Розенблюм, Дэвид С.; Уикс, Тони (2006). Структура для моделирования и анализа масштабируемости программных систем (PDF) . Труды 28-й международной конференции по программной инженерии – ICSE '06. стр. 949. doi :10.1145/1134285.1134460. ISBN
     1595933751.
  3. ^ Лаудон, Кеннет Крейг; Трэвер, Кэрол Гуэрсио (2008). Электронная коммерция: бизнес, технологии, общество. Pearson Prentice Hall/Pearson Education. ISBN 9780136006459.
  4. ^ "Почему веб-масштаб — это будущее". Network World . 2020-02-13 . Получено 2017-06-01 .
  5. ^ Создание бессерверных приложений на Knative . O'Reilly Media. ISBN 9781098142049.
  6. ^ Бигли, Грегори А.; Робертс, Карлин Х. (2001-12-01). «Система управления инцидентами: организация высокой надежности для сложных и изменчивых рабочих сред». Журнал Академии управления . 44 (6): 1281– 1299. doi : 10.5465/3069401 (неактивен 1 ноября 2024 г.). ISSN  0001-4273.{{cite journal}}: CS1 maint: DOI inactive as of November 2024 (link)
  7. ^ abc Хешам Эль-Ревини и Мостафа Абд-Эль-Барр (апрель 2005 г.). Современная компьютерная архитектура и параллельная обработка. John Wiley & Sons . стр. 66. ISBN 978-0-471-47839-3.
  8. ^ Майкл, Магед; Морейра, Хосе Э.; Шилоах, Дорон; Вишневски, Роберт В. (26 марта 2007 г.). Масштабирование x масштабирование: исследование случая с использованием Nutch/Lucene . 2007 IEEE International Parallel and Distributed Processing Symposium. стр. 1. doi :10.1109/IPDPS.2007.370631. ISBN 978-1-4244-0909-9.
  9. ^ "Виртуализация сетевых функций (NFV); Терминология основных концепций в NFV". Архивировано из оригинала (PDF) 2020-05-11 . Получено 2016-01-12 .
  10. ^ Садек Дроби (11 января 2008 г.). «Eventual conformality by Werner Vogels». InfoQ . Получено 8 апреля 2017 г. .
  11. ^ Гюнтер, Нил (2007). Партизанское планирование мощностей: тактический подход к планированию высокомасштабируемых приложений и сервисов . ISBN 978-3540261384.
  12. ^ "Слабое масштабирование DL_POLY 3". STFC Computational Science and Engineering Department. Архивировано из оригинала 7 марта 2014 г. Получено 8 марта 2014 г.
  • Ссылки на разнообразные обучающие ресурсы – страница, созданная проектом memcached .
  • Масштабируемое определение – от Linux Information Project (LINFO)
  • Масштаб в распределенных системах Б. Клиффорд Ньюман, В: Чтения по распределенным вычислительным системам , IEEE Computer Society Press, 1994
Retrieved from "https://en.wikipedia.org/w/index.php?title=Scalability&oldid=1263136437"