Что такое масштабируемость по рабочим местам

Обновлено: 14.05.2024

Я думаю, лучший способ сформулировать этот вопрос: как я могу написать свой код с учетом масштабируемости? Так что код масштабируется от get-go, а не от запоздалой мысли. Существуют ли определенные методологии проектирования? Или это просто вопрос выбора правильных алгоритмов для работы?

Существует два направления масштабируемости:

  • вертикальный (расширение a.k.a.): более быстрый процессор, больше оперативной памяти, больше места на диске;
  • горизонтальный (масштабирование a.k.a.): больше ядер в процессорах, больше процессоров, больше серверов;

Для первого нужно просто позаботиться о том, чтобы у вас не было никаких произвольных ограничений. Они либо из-за слишком малых целых размеров, либо с фиксированной /ограниченной длины. Эти структуры могут быть связаны с базовой ОС. Например, если вы попытаетесь увеличить масштабы использования большего количества потоков или процессов, в какой-то момент вы достигнете пределов ОС. Именно поэтому в настоящее время серверы для высокой масштабируемости выполняют параллелизм на основе асинхронных событий. Эта проблема описана в известном документе C10K .

Второй сложнее. Это требует программирования с учетом двух факторов: данные будут обрабатываться параллельно, а данные могут быть физически распределены. Связь между узлами должна быть ограничена. На практике это обычно означает жертвовать некоторыми частями ACID (доказано, что вы не можете иметь полную ACID и способность масштабирования в одно и то же время). Наиболее известным решением для хранения данных в этой парадигме являются NoSQL решения. Они варьируются от очень простых хранилищ ключей до систем RDBMS-подобных, только лишенных возможности делать соединения. магазины с ключевыми знаками являются ультрамасштабируемыми, но это идет как цена. Вы можете запросить только первичный ключ. Однако есть решение, это сокращение карты . Это может показаться очень субоптимальным, если вы посмотрите на кумулятивную точку сложности, но вы должны иметь в виду, что он работает параллельно.

Масштабируемость измеряется с точки зрения пропускной способности, основанной на некоторой переменной. Например, количество запросов /секунд с пользователями X . Самый простой способ описать масштабируемость:

Мера эффективности эффективность по мере увеличения нагрузки.

Первое, что вам нужно понять при разработке масштабируемости, - это то, что измерение наиболее важно для вашего приложения? Существует несколько способов измерения эффективности , который является ключевым компонентом масштабируемости:

  • Параллельные запросы в секунду
  • Среднее время отклика на запрос
  • Количество обработанных записей в секунду /минуту

Есть более эффективные измерения, которые могут быть использованы, но они распространены для веб-систем или систем пакетной обработки.

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

  • Больше пользователей поражает сервер (т. е. больше веб-трафика)
  • Больше данных в базе данных (т. е. запросы занимают больше времени, или обработка занимает больше времени)
  • Сбой жесткого диска в RAID (на производительность /надежность хранения влияет).
  • Насыщенность сети

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

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

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

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

Надеюсь, это поможет!

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

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

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

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

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

Если вы строили функцию поиска, которая хорошо работала, когда у нее есть 100 строк в БД для поиска и 10 пользователей, использующих ее за раз. Насколько хорошо он будет работать, когда 100 пользователей будут использовать его в одно и то же время, и есть 100K строк для поиска.

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

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

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

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

Так, например, возможность масштабирования кластера ограничена значением отношения скорости процессора к скорости связи, которое не должно быть слишком большим (реально это отношение для больших систем не может быть более 3-4, в противном случае не удается даже реализовать режим единого образа операционной системы). С другой стороны, последние 10 лет истории развития процессоров и коммуникаторов показывают, что разрыв в скорости между ними все увеличивается. Добавление каждого нового процессора в действительно масштабируемой системе должно давать прогнозируемое увеличение производительности и пропускной способности при приемлемых затратах. Одной из основных задач при построении масштабируемых систем является минимизация стоимости расширения компьютера и упрощение планирования. В идеале добавление процессоров к системе должно приводить к линейному росту ее производительности. Однако это не всегда так. Потери производительности могут возникать, например, при недостаточной пропускной способности шин из-за возрастания трафика между процессорами и основной памятью, а также между памятью и устройствами ввода/вывода. В действительности реальное увеличение производительности трудно оценить заранее, поскольку оно в значительной степени зависит от динамики поведения прикладных задач.

Совместимость и мобильность программного обеспечения

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

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

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

облачные технологии

Современные вычислительные системы, в том числе и облачные, постоянно сталкиваются с повышенными нагрузками. Чтобы удовлетворить потребности всех пользователей, они вынуждены постоянно расширяться. Достигается это видоизменением базовой архитектуры. Она постепенно становится более сложной и разветвленной. Применяются новые программные ресурсы, позволяющие корректировать производительность под потребительские запросы. В расширении нуждаются и серверы. Один из наиболее эффективных способов, позволяющих реализовать все это на практике – масштабирование. Познакомимся с этой технологией более подробно. Определим, что такое масштабируемость и как ее реализовать на практике, чтобы получить максимальный эффект для бизнес-процессов вашей компании.

Масштабируемость облака: определение понятия

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

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

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

  1. Общая численность запросов.
  2. Количество запросов, поступающих одновременно.

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

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

Обеспечить масштабирование облачных ресурсов можно при помощи:

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

Способы обеспечения наибольшей масштабируемости

trends

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

  • Достижение баланса нагрузки.
  • Автоматическое масштабирование.
  • Кластеризация.
  • Применение кэширования.
  • Привлечение CDN.

Достижение баланса нагрузки

В каждом кластере, сокете, сосредоточено несколько аппаратно-программных ресурсов. Речь идет как о самих процессорах и дисках, так и о серверах. И если равномерно распределить нагрузку вычислительной сети между всеми ими, будет достигнут баланс, способный гарантировать:

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

Обеспечить балансировку позволяют специальные методы и алгоритмы. На примере модели OSI, существующие методики должны обладать несколькими уровнями: Сеть, Транспорт, Приложение. Реализовать это на практике позволяют несколько реальных серверов, оснащенных специализированным программным обеспечением.

Автоматическое масштабирование

Автоматическое масштабирование предполагает самостоятельную настройку системой вычислительных мощностей исходя из объема нагрузки на сеть. Это один из вариантов динамического масштабирования, реализованного на базе облачных серверов. На сегодня наиболее известными пользователями, применяющими на практике возможности автоматического масштабирования являются корпорации Google Cloud Platform, Amazon Web Service, Microsoft Azure. Если в масштабировании возникает необходимость, пользователям их служб выделяются дополнительные виртуальные серверы, которые в автоматическом порядке выводятся из контейнера или кластера. Как только ситуация стабилизируется, интенсивность запросов и трафик возвращаются к изначальному уровню, система сама выполняет обратный процесс, отключая от работы дополнительные мощности.

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

Кластеризация

Кластеризация или использование контейнеров микросервисов – один из ресурсоэффективных методов повышение производительности системы. Технология предполагает объединение отдельных серверов в контейнеры, которые в последующем объединяются в кластеры. После реализации кластеризации необходимо определить сценарии будущей работы. Здесь 2 варианта:

  1. Добавлять ресурсы, которых не хватает для удовлетворения потребностей бизнеса.
  2. Уменьшать выделение дополнительных ресурсов, чтобы исключить их избыток.

Применение кэширования

В случае горизонтального масштабирования не представляется возможным одновременно организовать простое кэширование памяти для нескольких компонентов. В этом случае выполняется оптимизация. Как пример, можно использовать хранилища Memcached либо Redis, чтобы равномерно распределить информацию кэша между рабочими циклами программы. Учитывая тот факт, что инструменты в работе используют принципиально разные алгоритмы, объем данных, которые следует подвергнуть кэшированию, постепенно будет уменьшаться. К тому же, подобные хранилища имеют повышенную защиту от ошибок в процессе репликации и хранения информации.

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

Привлечение CDN

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

Такие решения нецелесообразно использовать в случае, если трафик, хоть и распределяется по территории с большой площадью, но имеет несколько локальных концентраций пользователей. Как пример: 50% трафика приходится на Россию, 40% - на Беларусь, а оставшиеся 10 % распределены по другим странам СНГ. Чтобы удовлетворить запросы такой сети, требуется установить дополнительные серверы в России и Беларуси, в то время как для последних 10% пользователей применить CDN.

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

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

Гибридное облако (hybridcloud) – отдельная IT-инфраструктура, представляющая собой объединение виртуального приватного облака (VPC) и выделенных серверов. Использование гибридных решений позволяет компании решить нехватку собственных ресурсов за счет мощностей облачного провайдера.

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

Облако для бизнеса

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

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

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

Связанные понятия

Разделяемая память (англ. Shared memory) является самым быстрым средством обмена данными между процессами.

Высокая доступность (англ. high availability) — характеристика технической системы, разработанной для избежания невыполненного обслуживания путём уменьшения или управления сбоями и минимизацией времени плановых простоев. Высокая доступность ожидается от систем жизнеобеспечения, здравоохранения и систем, от которых зависит благополучие общества в целом и экономического благополучия отдельных организаций.

Балансировка нагрузки отличается от физического соединения тем, что балансировка нагрузки делит трафик между сетевыми интерфейсами на сетевой сокет (модель OSI уровень 4) основе, в то время как соединение канала предполагает разделение трафика между физическими интерфейсами на более низком уровне, либо в пакет (модель OSI уровень 3) или по каналу связи (модель OSI уровень 2); Основы с, как протокол соединения кратчайшего пути.

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

Упоминания в литературе

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

В разработке ПО существуют определенные сложности и проблемы, которые нужно решать со стороны как разработчика, так и системного архитектора и даже руководителя программного проекта. Необходимо достичь определенного уровня качества, которое связано с теми метриками, о которых уже было сказано: порог ошибок, интерфейс пользователя, эргономичность, масштабируемость , количество одновременных пользователей, количество транзакций, время реакции системы и объем БД. Программный продукт должен удовлетворять этим метрикам при определенном дефиците ресурсов, имеющем место в любом проекте и который в любом случае достаточно жестко контролируется в ходе программных проектов. Это возрастающая сложность программных систем. Корпоративные системы – это десятки взаимодействующих систем, каждая из которых объединяет зачастую сотни первичных сущностей и часто терабайты данных, т. е. это очень сложные программные системы, которые достаточно быстро растут и которым необходимо взаимодействовать друг с другом.

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

Связанные понятия (продолжение)

Переключение контекста (англ. context switch) — в многозадачных ОС и средах - процесс прекращения выполнения процессором одной задачи (процесса, потока, нити) с сохранением всей необходимой информации и состояния, необходимых для последующего продолжения с прерванного места, и восстановления и загрузки состояния задачи, к выполнению которой переходит процессор.

Се́рвис-ориенти́рованная архитекту́ра (SOA, англ. service-oriented architecture) — модульный подход к разработке программного обеспечения, основанный на использовании распределённых, слабо связанных (англ. loose coupling) заменяемых компонентов, оснащённых стандартизированными интерфейсами для взаимодействия по стандартизированным протоколам.

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

Репликация (англ. replication) — механизм синхронизации содержимого нескольких копий объекта (например, содержимого базы данных). Репликация — это процесс, под которым понимается копирование данных из одного источника на другой (или на множество других) и наоборот.

Кластер — группа компьютеров, объединённых высокоскоростными каналами связи, представляющая с точки зрения пользователя единый аппаратный ресурс.

Защита памяти (англ. Memory protection) — это способ управления правами доступа к отдельным регионам памяти. Используется большинством многозадачных операционных систем. Основной целью защиты памяти является запрет доступа процессу к той памяти, которая не выделена для этого процесса. Такие запреты повышают надёжность работы как программ, так и операционных систем, так как ошибка в одной программе не может повлиять непосредственно на память других приложений. Следует различать общий принцип защиты.

Межпроцессное взаимодействие (англ. inter-process communication, IPC) — обмен данными между потоками одного или разных процессов. Реализуется посредством механизмов, предоставляемых ядром ОС или процессом, использующим механизмы ОС и реализующим новые возможности IPC. Может осуществляться как на одном компьютере, так и между несколькими компьютерами сети.

Сериализация (в программировании) — процесс перевода какой-либо структуры данных в последовательность битов. Обратной к операции сериализации является операция десериализации (структуризации) — восстановление начального состояния структуры данных из битовой последовательности.

Модуль ядра, загружаемый модуль ядра (англ. loadable kernel module, LKM) — объект, содержащий код, который расширяет функциональность запущенного или т. н. базового ядра ОС. Большинство текущих систем, основанных на Unix, поддерживают загружаемые модули ядра, хотя они могут называться по-разному (например, kernel loadable module в FreeBSD и kernel extension в Mac OS X).

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

Удалённый вызов процедур, реже Вызов удалённых процедур (от англ. Remote Procedure Call, RPC) — класс технологий, позволяющих компьютерным программам вызывать функции или процедуры в другом адресном пространстве (как правило, на удалённых компьютерах). Обычно реализация RPC-технологии включает в себя два компонента: сетевой протокол для обмена в режиме клиент-сервер и язык сериализации объектов (или структур, для необъектных RPC). Различные реализации RPC имеют очень отличающуюся друг от друга архитектуру.

А́дресное пространство (англ. address space) — совокупность всех допустимых адресов каких-либо объектов вычислительной системы — ячеек памяти, секторов диска, узлов сети и т. п., которые могут быть использованы для доступа к этим объектам при определенном режиме работы (состоянии системы).

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

Сервер баз данных (БД) выполняет обслуживание и управление базой данных и отвечает за целостность и сохранность данных, а также обеспечивает операции ввода-вывода при доступе клиента к информации.

Иерархия компьютерной памяти — концепция построения взаимосвязи классов разных уровней компьютерной памяти на основе иерархической структуры.

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

Синхронизация (от др.-греч. σύγχρονος — одновременный) в информатике обозначает одно из: синхронизацию процессов, либо синхронизацию данных, либо процесс синхронизации передачи данных.

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

Визуальное программирование — способ создания программы для ЭВМ путём манипулирования графическими объектами вместо написания её текста. Визуальное программирование часто представляют как следующий этап развития текстовых языков программирования. Наглядным примером может служить утилита Визуальный Pascal или Microsoft Visual Studio, где редактируются графические объекты и одновременно отображается соответствующий текст программы. В последнее время визуальному программированию стали уделять больше.

Снимок файловой системы, или снапшот, или снепшот (от англ. snapshot — мгновенный снимок), — моментальный снимок, копия файлов и каталогов файловой системы на определённый момент времени.

Отказоустойчивый кластер (англ. High-Availability cluster, HA cluster — кластер высокой доступности) — кластер (группа серверов), спроектированный в соответствии с методиками обеспечения высокой доступности и гарантирующий минимальное время простоя за счёт аппаратной избыточности. Без кластеризации сбой сервера приводит к тому, что поддерживаемые им приложения или сетевые сервисы оказываются недоступны до восстановления его работоспособности. Отказоустойчивая кластеризация исправляет эту ситуацию.

Поток данных (англ. stream) в программировании — абстракция, используемая для чтения или записи файлов, сокетов и т. п. в единой манере.

Архитектура программного обеспечения (англ. software architecture) — совокупность важнейших решений об организации программной системы. Архитектура включает.

Пото́к выполне́ния (тред; от англ. thread — нить) — наименьшая единица обработки, исполнение которой может быть назначено ядром операционной системы. Реализация потоков выполнения и процессов в разных операционных системах отличается друг от друга, но в большинстве случаев поток выполнения находится внутри процесса. Несколько потоков выполнения могут существовать в рамках одного и того же процесса и совместно использовать ресурсы, такие как память, тогда как процессы не разделяют этих ресурсов. В.

Процессорное время (англ. process time или CPU time) — время, затраченное процессором компьютера на обработку задачи (программы). Распределяется между процессами в соответствии с используемым режимом операционной системы.

Моноли́тное ядро́ — классическая и, на сегодняшний день, наиболее распространённая архитектура ядер операционных систем. Монолитные ядра предоставляют богатый набор абстракций оборудования. Все части монолитного ядра работают в одном адресном пространстве.

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

Паке́т прикладны́х програ́мм (аббр. ППП, англ. application package) или паке́т програ́мм — набор взаимосвязанных модулей, предназначенных для решения задач определённого класса некоторой предметной области. По смыслу ППП было бы правильнее назвать пакетом модулей вместо устоявшегося термина пакет программ. Отличается от библиотеки тем, что создание библиотеки не ставит целью полностью покрыть нужды предметной области, так как приложение может использовать модули нескольких библиотек. Требования же.

Храни́лище да́нных (англ. Data Warehouse) — предметно-ориентированная информационная база данных, специально разработанная и предназначенная для подготовки отчётов и бизнес-анализа с целью поддержки принятия решений в организации. Строится на базе систем управления базами данных и систем поддержки принятия решений. Данные, поступающие в хранилище данных, как правило, доступны только для чтения.

В компьютерной операционной системе, легковесный процесс является средством достижения многозадачности, в традиционном понимании этого термина. В Unix System V и Solaris, легковесный процесс работает в пространстве пользователя поверх одного потока выполнения ядра, разделяет виртуальное адресное пространство и системные ресурсы потока выполнения с другими легковесными процессами, в рамках того же процесса. Несколько потоков пользовательского уровня, управляемые с помощью библиотеки потоков, могут.

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

Документа́ция на программное обеспечение — печатные руководства пользователя, диалоговая (оперативная) документация и справочный текст, описывающие, как пользоваться программным продуктом.

Насыщенное интернет-приложение (англ. rich internet application, RIA) — это веб-приложение, загружаемое пользователем через интернет, предназначенное для выполнения функций традиционных настольных приложений и работающее на устройстве пользователя (не на сервере).

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

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

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

Hardware Abstraction Layer (HAL, Слой аппаратных абстракций) — слой абстрагирования, реализованный в программном обеспечении, находящийся между физическим уровнем аппаратного обеспечения и программным обеспечением, запускаемом на этом компьютере. HAL предназначен для скрытия различий в аппаратном обеспечении от основной части ядра операционной системы, таким образом, чтобы большая часть кода, работающая в режиме ядра, не нуждалась в изменении при её запуске на системах с различным аппаратным обеспечением.

Читайте также: