37
МАИ, каф 806, ППС Атрибуты качество архитектуры 1

Проектирование программных систем. Занятие 5

Embed Size (px)

Citation preview

Page 1: Проектирование программных систем. Занятие 5

МАИ, каф 806, ППС

Атрибуты качество архитектуры

1

Page 2: Проектирование программных систем. Занятие 5

МАИ, каф 806, ППС2

Атрибуты качество ПО. Доступность.

Page 3: Проектирование программных систем. Занятие 5

МАИ, каф 806, ППС3

Атрибуты качество ПО. Доступность. Тактики.

Обнаружение сбоя Ping

Пульс

Исключения

Основная задача добиться гарантированного время обнаружения недоступности модуля.

Дублирование модулей Голосование

Активная избыточность

Пассивная избыточность

Stand-by

Page 4: Проектирование программных систем. Занятие 5

МАИ, каф 806, ППС

Ping/echo

4

sd Ping

Наблюдатель Объектнаблюдения

Время между отправкой и приемеом сообщения ограничено сверху

Атомарное сообщение-запрос

Атомарное сообщение-ответ

Page 5: Проектирование программных систем. Занятие 5

МАИ, каф 806, ППС

Пульс

5

sd Hearbeat

Наблюдатель Объектнаблюдения

Время между сообщениями ограничено сверху

Атомарное сообщение

Атомарное сообщение

Page 6: Проектирование программных систем. Занятие 5

МАИ, каф 806, ППС

Исключения

6

sd Exception

Наблюдатель Объектнаблюдения

Выполнение операции

Exception

Page 7: Проектирование программных систем. Занятие 5

МАИ, каф 806, ППС

Голосование

7

sd Vote

Сервер №1 Сервер №2 Сервер№3 Управляющийсервер

Клиент

Сообщение

Сообщение

Сообщение

Сообщение

Page 8: Проектирование программных систем. Занятие 5

МАИ, каф 806, ППС

Активная избыточность

8

sd Activ e Redundancy

Клиент Управляющийсервер

Основнойсервер

Запасной сервер

Запрос

Запрос

Запрос

Ответ

Ответ

Page 9: Проектирование программных систем. Занятие 5

МАИ, каф 806, ППС

Пассивная избыточность

9

sd Passiv e Redundancy

Клиент Основнойсервер

Дополнительныйсервер

Запрос

Ответ

Синхронизация состояния

Page 10: Проектирование программных систем. Занятие 5

МАИ, каф 806, ППС10

Атрибуты качество ПО. Доступность. Тактики.

Восстановление работы компонент

Теневые операции

Некоторое время сервера работают параллельно, для проверки работоспособности.

Синхронизация состояния

Полностью восстанавливаются данные «упавшего сервера» на момент сбоя (если есть возможность).

Откат к чекпоинам

Восстанавливаются данные на определенный момент «чекпоинт», про который известно что данные были гарантированно целые.

Предотвращение сбоя

Прекращение обслуживания

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

Транзакции

Процесс-монитор.

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

Page 11: Проектирование программных систем. Занятие 5

МАИ, каф 806, ППС

Производительность

11

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

Page 12: Проектирование программных систем. Занятие 5

МАИ, каф 806, ППС12

Атрибуты качество ПО. Производительность.

Page 13: Проектирование программных систем. Занятие 5

МАИ, каф 806, ППС

Время отклика (response time)показатели производительности [1/9]

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

Основные факторы влияющие на время отклика Потребление ресурсов

Время блокировки (Blocked time)

Конкуренция за ресурсы(Contention for resources)

Доступность ресурсов(Availability of resources)

Зависимости от других вычислений

13

Page 14: Проектирование программных систем. Занятие 5

МАИ, каф 806, ППС

Быстрота реагирования (responsiveness)показатели производительности [2/9]

Скорость подтверждения запроса

Не путать с временем отклика— скоростью обработки !

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

Основные факторы влияющие на быстроту реагирования:

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

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

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

14

Page 15: Проектирование программных систем. Занятие 5

МАИ, каф 806, ППС

Время задержкипоказатели производительности [3/9]

Минимальный интервал времени до получения какого-либо отклика (даже если от системы более ничего не требуется)

В телекоммуникации - время, требуемое пакету для перемещения от источника кприёмнику, сообщению - от одной точки сети к другой.

Параметр приобретает особую важность в распределенных системах

Снизить время задержки разработчику прикладной программы не под силу

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

Первый Закон Распределения Объектов гласит: "Не распределяйте объекты!"

15

Page 16: Проектирование программных систем. Занятие 5

МАИ, каф 806, ППС

Пропускная способностьпоказатели производительности [4/9]

Количество данных (операций), передаваемых выполняемых) в единицу времени

Скорость обработки недостаточна, должен быть указан один или более интервалов наблюдения.

Пример: 120 сообщений в час, не гарантирует 2 сообщения в минуту.

В корпоративных приложениях обычной мерой производительности служит число транзакций в секунду (transactions per second — tps)

Транзакции различаются по степени сложности

Для конкретной системы необходимо рассматривать смесь "типовых" транзакций

16

Page 17: Проектирование программных систем. Занятие 5

МАИ, каф 806, ППС

Рабочая нагрузка (Work load)показатели производительности [5/9]

Значение, определяющее степень "давления" на систему

Общее количество пользователей

Количество одновременно активных пользователей

Объемы данных

Количество транзакций

Примеры:

100 пользователей работают одновременно в системе.

10 пользователей размещают заказы одновременно.

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

«время отклика на запрос составляет 0,5 секунды для 10 пользователей и 2 секунды для 20 пользователей»

17

Page 18: Проектирование программных систем. Занятие 5

МАИ, каф 806, ППС

Чувствительность к загрузке (load sensitivity)показатели производительности [6/9]

Выражение, задающее зависимость времени отклика от загрузки

Пример:

Система А обладает временем отклика, равным 0,5 секунды для 10-20 пользователей

Система В обладает временем отклика в 0,2 секунды для 10 пользователей и 2 секунды для 20 пользователей

Это дает основание утверждать, что система А обладает меньшей чувствительностью к загрузке

18

Page 19: Проектирование программных систем. Занятие 5

МАИ, каф 806, ППС

Эффективность (efficiency)показатели производительности [7/9]

Удельная производительность в пересчете на одну единицу ресурса

Например, система с двумя процессорами, способная выполнить 30 tps, более эффективна по сравнению с системой, оснащенной четырьмя аналогичными процессорами и обладающей продуктивностью в 40 tps

19

Page 20: Проектирование программных систем. Занятие 5

МАИ, каф 806, ППС

Мощность (Capacity)показатели производительности [8/9]

Наибольшее значение пропускной способности или загрузки

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

20

Page 21: Проектирование программных систем. Занятие 5

МАИ, каф 806, ППС

Способность к масштабированию (scalability)показатели производительности [9/9]

Свойство, характеризующее поведение системы при добавлении ресурсов (обычно аппаратных)

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

Вертикальное масштабирование (vertical scalability, scaling up) Увеличение мощностиотдельного сервера (например, за счет увеличения объема оперативной памяти)

Горизонтальное масштабирование (horizontal scalability, scaling out) Наращиваниепотенциала системы путем добавления новых серверов

21

Page 22: Проектирование программных систем. Занятие 5

МАИ, каф 806, ППС22

Управление потреблением ресурсов Атрибуты качество ПО. Производительность. Тактики.

Уменьшение запросов к ресурсам входе вычислений

Увеличить эффективность вычислений (основной подход)Пример: от сортировки пузырьком к сортировке Хоара

Уменьшить накладные расходы при вычисленияхУменьшаем число обращений к «медленным ресурсам»

Page 23: Проектирование программных систем. Занятие 5

МАИ, каф 806, ППС23

Тактики: Управление потреблением ресурсов.

Уменьшение числа обрабатываемых событий Управлению частотой событий. Если возможно уменьшить число точек

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

Пример: при изменении данных можно сначала получать данные, а потом перезаписывать новое значение. А можно изменять данные на дельту (без блокировки ресурса).

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

например, использование MOM взаимодействия позволяет контролировать скорость обработки событий

Page 24: Проектирование программных систем. Занятие 5

МАИ, каф 806, ППС24

Тактики: Управление потреблением ресурсов

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

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

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

Page 25: Проектирование программных систем. Занятие 5

МАИ, каф 806, ППС25

Тактики: Управление ресурсом

Распаралеливание обработки. Если запрос может идти параллельно, то общее потраченное время обработки может быть уменьшено. Возможно применение Load Balancing.

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

Увеличение доступности ресурса. Более быстрые процессоры, дополнительные процессоры, больше памяти, более быстрая сеть ....

Page 26: Проектирование программных систем. Занятие 5

МАИ, каф 806, ППС26

Арбитраж ресурсаАтрибуты качество ПО. Производительность. Тактики.

Очередь. Очередь подразумевает что все ресурсы равноправные. По этому то что первый пришедший запрос обрабатывается первым - это нормально.

Позволяет ограничивать нагрузку на процессоры.

Позволяет балансировать нагрузку между процессорами.

Может использоваться как одна очередь с несколькими читателями, так и несколько очередей (для каждого читателя своя).

Page 27: Проектирование программных систем. Занятие 5

МАИ, каф 806, ППС

Арбитраж ресурсаработа с очередями

Фиксированный приоритет. Для всех источников событий устанавливается приоритет. Вначале должны быть обработаны самые приоритетные. Однако не стоит забывать, что менее приоритетные тогда могут быть забыты. Следующие стратегии управления приоритетами: Семантическая важность. Каждому потоку устанавливается приоритет в

зависимости от семантической важности задачи. Контролирование срока запроса. Больший приоритет устанавливается

потоку с запросами у которых deadline наступает раньше (на уровне типа запроса).

По скорости обработки(основываясь на семантике). Запросу которые выполняются быстрее получают больший приоритет. Таким образом число запросов уменьшается быстрее.

Обычно, что бы избежать ситуации когда не-приоритетные задачи совсем не обрабатываются делают систему квантования. Например, 8 раз из 10 пытаемся обработать первые высокоприоритетные сообщения, а 2 раза – остальные. «Пытаемся» означает, что если нет сообщений нужного типа то берем первые по очередности.

27

Page 28: Проектирование программных систем. Занятие 5

МАИ, каф 806, ППС

Арбитраж ресурсаработа с очередями

Динамический приоритет• Round robin.

Пусть имеется N объектов, способных выполнить заданное действие, и M задач, которые должны быть выполнены этими объектами. Подразумевается, что объекты n равны по своим свойствам между собой, задачи m имеют равный приоритет. Тогда первая задача (m = 1) назначается для выполнения первому объекту (n = 1), вторая — второму и т. д., до достижения последнего объекта (m = N). Тогда следующая задача (m = N+1) будет назначена снова первому объекту и т. п. Проще говоря, происходит перебор выполняющих задания объектов по циклу, или по кругу (round), и по достижении последнего объекта следующая задача будет также назначена первому объекту.

• Более ранний deadline. Из запроса считывается deadline и тому запросу у которого он раньше назначается наивысший приоритет.

Статическое расписание.В данной стратегии алгоритм выдачи приоритетов определяется offline базируясь на природе событий.

28

Page 29: Проектирование программных систем. Занятие 5

МАИ, каф 806, ППС

Паттерны

Паттерн - это описание успешного инженерного решения

Паттерн предназначен для повторного использования ранее найденных решений

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

Паттерн не должен быть использован механически. Применение паттерна зачастую – компромисс

29

Page 30: Проектирование программных систем. Занятие 5

МАИ, каф 806, ППС

Load Balancerпостроение web-приложений

30 http://horicky.blogspot.ru/2010/10/scalable-system-design-patterns.html

Page 31: Проектирование программных систем. Занятие 5

МАИ, каф 806, ППС

Scatter and GatherПрименяется в поисковых машинах yahoo, google …

31

Page 32: Проектирование программных систем. Занятие 5

МАИ, каф 806, ППС

Result Cacheв enterprise приложениях

32

Page 33: Проектирование программных систем. Занятие 5

МАИ, каф 806, ППС

Shared Spacejavaspace, gigaspace

33

Page 34: Проектирование программных систем. Занятие 5

МАИ, каф 806, ППС

Pipe and Filterenterprise приложения

34

Page 35: Проектирование программных систем. Занятие 5

МАИ, каф 806, ППС

Map Reducehandoop

35

Page 36: Проектирование программных систем. Занятие 5

МАИ, каф 806, ППС

Bulk Synchronous ParellelGoogle's Pregel graph processing modelApache Hama project.

36

Page 37: Проектирование программных систем. Занятие 5

МАИ, каф 806, ППС

Execution OrchestratorMicrosoft's Dryad project

37