Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
Модератор
Эксперт CЭксперт С++
 Аватар для sourcerer
5288 / 2376 / 342
Регистрация: 20.02.2013
Сообщений: 5,773
Записей в блоге: 20

Что имеют в виду, когда говорят о масштабируемости системы?

05.01.2017, 14:51. Показов 2054. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Что имеют в виду, когда говорят о масштабируемости системы? Что такое масштабируемость?
Хочется простого внятного определения, с простыми примерами на C++.

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

_____________________________
Примечание: вопрос возник в связи с разбором паттерна "Одиночка" (Singleton). Довольно часто среди минусов данного паттерна упоминается, что он препятствует масштабируемости системы.
2
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
05.01.2017, 14:51
Ответы с готовыми решениями:

Распределённые системы. Как именно реализовываются механизмы масштабируемости?
Пишу простую распределённую систему. Её задача - связать каждый узел с каждым гарантированно за конечное время в том смысле, что, взяв...

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

Говорят, что математика умрёт
Увлекшись математикой, прослушав ряд лекций, прочитав много статей по теме я натыкался на такие фразы (как в статьях и в лекциях, так и в...

7
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,033
Записей в блоге: 1
05.01.2017, 15:06
Простой пример на C++:
C++
1
2
3
4
//Стоит проц с двумя ядрами. Можно программу распараллелить.
std::thread th1(func, pamams1);
func(params2);
//...
Отлично, теперь у нас два потока и мы задействуем весь проц.
Отдали всё это заказчику, но вот беда, у него проц с четырьмя ядрами,
и там можно задействовать четыре потока, а не два.
А другой комп у него с процем двумя ядрами...

Так что вышеприведенный код не подстроится под новое оборудование,
хоть мильёнёдренный процессор ему подавай,
он всё равно не будет жрать больше двух ядер.
1
Модератор
Эксперт CЭксперт С++
 Аватар для sourcerer
5288 / 2376 / 342
Регистрация: 20.02.2013
Сообщений: 5,773
Записей в блоге: 20
05.01.2017, 15:20  [ТС]
Croessmah, так, пока понятно. Написали прогу под заданные аппаратные требования, но при улучшении аппаратных характеристик прога лучше работать не будет. Тут ясно. Однако же, если пользоваться мои определением (другого пока никто не привёл) функциональность системы (программы) сохранена. Прога работает. Лучше работать не стала, но и ухудшения не наблюдаем. Или в данном примере под системой имеется ввиду аппаратная часть (количество ядер проца)?

А насчёт синглтона? Как он препятствует (может препятствовать) масштабируемости системы?
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
05.01.2017, 15:25
Я бы сказал, что масштабируемость - это способность программной системы эффективно
использовать все доступные ресурсы, независимо от их количества.

Пример с искусственным ограничением по количеству потоков уже привели выше,
приведу еще один.

Пусть, например, у нас есть программа, которая кушает в среднем 5-7 процентов CPU.
Пока пользователь один, все хорошо и загрузка незаметна. Но как только программу
запускают на сервере терминалов в множестве параллельных сессий, она начинает безбожно
нагружать проц так, что работать становится вообще невозможно. Это пример программы,
которая не масшабируется, ее авторы явно были не в курсе, что такое сервер терминалов,
'server consolidation' и т.д.

Некоторые программы, которые работают с большими объемами данных, умеют загружать и
хранить их целиком в оперативной памяти, без промежуточных кэшей. В таких случаях
скорость доступа к данным напрямую зависит от объема установленной RAM. Здесь тоже
можно сказать, что программа хорошо масшабируется по памяти. А ведь есть такие,
которым сколько RAM и CPU не подавай - им все мало

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

Добавлено через 15 секунд
Не вижу причин, по которым использование синглтона могло бы как-то негативно
сказаться на масшабируемости или тестируемости системы. Разумеется, это
предполагает, что мы используем "правильные, хорошие" синглтоны...
1
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,033
Записей в блоге: 1
05.01.2017, 15:30
gru74ik, например, если взять многопоточное приложение,
то конкуренция за синглтон среди двух потоков может быть несущественной,
но если потоков станет восемь, то конкуренция за синглтон
может существенно стукнуть по производительности,
так что увкличение количества потоков в четыре раза
не даст четырехкратного увеличения производительности,
и увеличение производительности железа ничего не даст,
т.к. потоки всё равно будут простаивать в ожидании своей очереди.
0
Модератор
Эксперт CЭксперт С++
 Аватар для sourcerer
5288 / 2376 / 342
Регистрация: 20.02.2013
Сообщений: 5,773
Записей в блоге: 20
05.01.2017, 15:31  [ТС]
Цитата Сообщение от Убежденный Посмотреть сообщение
масштабируемость - это способность программной системы эффективно
использовать все доступные ресурсы, независимо от их количества
Ага, вот теперь ситуация ещё более прояснилась. Благодарю.

Цитата Сообщение от Убежденный Посмотреть сообщение
Не вижу причин, по которым использование синглтона могло бы как-то негативно
сказаться на масшабируемости или тестируемости системы. Разумеется, это
предполагает, что мы используем "правильные, хорошие" синглтоны...
Что понимается под "правильностью" и "хорошестью" синглтонов? Какие синглтоны "правильные и хорошие", а какие не очень? Если можно, пожалуйста, парочку простеньких коротеньких вопиющих примеров.
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
05.01.2017, 15:41
Ну я буду краток.
Хороший синглтон - это класс с реентрабельным полиморфным API, который не
имеет побочных эффектов, связанных с временем жизни синглтона.
Такой синглтон тоже может эффективно масшабироваться в многопоточной среде.
Например, за счет "умных" блокировок: одна блокировка на поток, на сессию и т.д.
Тестировать его можно через полиморфный API с моками, стабами и всеми
остальными характерными "примочками" юнит-тестов.

Простых примеров кода не приведу, потому что написать такой синглтон довольно сложно.
Но не невозможно...
1
Модератор
Эксперт CЭксперт С++
 Аватар для sourcerer
5288 / 2376 / 342
Регистрация: 20.02.2013
Сообщений: 5,773
Записей в блоге: 20
05.01.2017, 17:01  [ТС]
Ага, я не один такой умник, оказывается.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
05.01.2017, 17:01
Помогаю со студенческими работами здесь

Говорят что пых регистрозависимый язык
а это тогда что: class TESt { public function geG() { echo 'И после этого пых - регистрозависимый язык?'; } ...

Говорят, что Яндекс банит за скрытый текст
Говорят, что Яндекс банит за скрытый текст, откройте эту страницу, нажите СTRL-A и посмотрите правее "партнерам"ха-ха

Почему говорят, что Linq To Sql умер?
Я тут на форуме это вычитал, не помню тему, но там такое говорили. Откуда такая инфа? Что ещё из .NET умирает? Я задаю вопрос к тому, что...

Почему все говорят, что программируют на Delphi, а не на Pascal?
Почему все говорят, что программируют на Delphi, а не на Pascal? Или, аналогично, почему говорят, что программируют на Lazarus, а не на...

Не катят игры, говорят что скорее всего из-за оперативы
Не устанавливается ни одна игра, ошибка может выйти где угодно, на 40% на 10% и на 90% установки. Слышал что может быть из-за оперативной...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru