Слайд 2
План занятия
Модели распределенных систем
Архитектура распределенных систем
Слои и уровни
Возможные
архитектурные решения
Слайд 3
Модели распределенных систем
Модели архитектуры
Физическое размещение компонентов между
узлами
Взаимодействие между компонентами
Другие модели
Формальное описание различных параметров и свойств
системы
Модели взаимодействия, обработки ошибок, безопасности, …
Слайд 4
Модели архитектуры
Модель архитектуры распределенной системы должна содержать решение
двух проблем:
физическое размещение компонентов между узлами
взаимодействие между компонентами
Слайд 5
Модели архитектуры
Реальные функции отдельных компонентов не указываются
Указываются:
Расположение (размещение
по узлам)
Шаблоны распределения данных и задач по их обработке
Взаимодействие
компонентов
Роли компонентов
Шаблоны взаимодействия
Слайд 6
Архитектура
Определяет разделение системы на наиболее крупные составные части
Определяет
конструктивные решения, которые после их принятия с трудом поддаются
изменению
Отображает общий взгляд разработчиков на результаты проектирования системы: идентификация главных компонентов системы, способов их взаимодействия, выбор основополагающих решений, не подлежащих изменению в будущем
Слайд 7
Основные принципы архитектуры
Согласованность
Частичное знание системы позволяет предсказать остальное
Ортогональность
Функции
независимы и специфицированы по отдельности
Соответствие
Включаются только функции, соответствующие существенным
требованиям к системе, нет ненужных функций
Экономичность
Отсутствие дублирования
Слайд 8
Основные принципы архитектуры
Прозрачность
Функции должны быть известны пользователю
Общность
Если функция
должна быть введена, ее следует вводить в таком виде,
чтобы она отвечала как можно большему числу назначений
Открытость
Можно использовать функцию иначе, чем это предполагалось при проектировании
Полнота
Введенные функции должны с учетом экономических и технологических ограничений как можно полнее соответствовать требованиям и пожеланиям пользователя
Слайд 9
Преодоление сложности
Использование паттернов проектирования
Разделение системы на слои
(расслоение)
Слайд 10
Типовые решения –
паттерны проектирования
Кристофер Александер
(Christopher Alexander):
Каждое
типовое решение описывает некую повторяющуюся проблему и ключ к
ее разгадке, причем таким образом, что вы можете пользоваться этим ключом многократно, ни разу не придя к одному и тому же результату
Слайд 11
Структура типовых решений
Название решения
Назначение (аннотация)
Мотивация, применимость
Принцип действия (структура,
участники, отношения)
Результаты
Реализация
Слайд 12
ПРАВИЛО ДОБАВЛЕНИЯ КОСВЕННОСТИ
Если есть проблема – введите посредника,
т.е. вместо прямого взаимодействия используйте косвенное
Слайд 13
Слои
Основная идея: независимость нижележащих уровней от вышележащих
Основная задача:
уменьшать сложность систем, разделяя их на слои и сервисы
Слой
(уровень): группа сильно связанных и закрытых элементов, реализующих одну функциональность
Сервис: функциональность, обеспечиваемая для вышестоящего слоя
Слайд 14
Примеры подхода
Архитектура сетевых протоколов
Физический уровень
Уровень соединения
Сетевой уровень
Транспортный уровень
Сеансовый
уровень
Уровень представления
Прикладной уровень
Распределенные приложения
Аппаратура
Операционная система
Промежуточное программное обеспечение
Приложения, сервисы
Слайд 15
Монолитная система
Логика
представления
Бизнес-логика
Логика
доступа к данным
Слайд 16
Двухслойная система
Логика
представления
Бизнес-логика
Логика
доступа к данным
Слайд 17
Трехслойная система
Логика
представления
Бизнес-логика
Логика
доступа к данным
Слайд 18
Три основных слоя
Слои:
представление (presentation)
домен (domen) – предметная область,
бизнес-логика
работа с данными (data source)
Рекомендуется различать:
Слой (layer) – логическое
разделение
Уровень или Ярус (tier) – физическое разделение
Слайд 19
Одноуровневая система
Представление
Домен
Источник данных
Слайд 20
Система клиент/сервер
(двухуровневая)
Слайд 22
Трехуровневая система
Middleware
Слайд 23
Middleware
“Слой программного обеспечения, чья цель состоит в том,
чтобы скрывать неоднородность и обеспечивать удобную модель программирования для
разработчиков”
Предоставляет прикладной интерфейс программирования
Примеры
CORBA (OMG)
.Net (Microsoft)
Remote Procedure Call (Sun)
Java Remote Method Invocation (Sun)
Технология EJB (Enterprise JavaBeans, Sun)
Может также предоставлять услуги (сервисы)
Слайд 24
Сервисы Middleware
Сервисы
Именования
Безопасности
Транзакций
Долговременного хранения
Уведомления о событиях
…
Слайд 25
Основные парадигмы программирования
Message Passing
Client
Server
send()
receive()
Remote Procedure Call
Client
Server
proc()
Virtual Shared Memory
Client
Server
write()
read()
Distributed
Object System
Client
Server
o.operat()
Слайд 26
Требования к дизайну
Требования, накладываемые обеспечением требуемой производительности
Время отклика
Производительность
Балансировка
нагрузки
Использование кэширования и репликации
Очень многие проблемы производительности системы могут
быть решены путем кэширования данных
Требование надежности
Слайд 27
Возможные архитектуры
Клиент-сервер
Модель предоставления услуг пулом серверов
Модель прокси-
и кэш- серверов
Модель равных процессов
Слайд 28
Модель клиент-сервер
Наиболее распространенная и часто используемая модель архитектуры
Слайд 29
Модель клиент-сервер
Клиент
Процесс, желающий получить доступ к данным, использует
ресурсы и/или выполняет действия на удаленном узле
Сервер
Процесс, управляющий данными
и всеми другими разделяемыми ресурсами, обеспечивающий клиентам доступ к ресурсам и производящий вычисления
Взаимодействие
Пары запрос / результат
Пример
http-сервер: клиент (браузер) запрашивает страницу, сервер поставляет страницу
Слайд 31
Модель «пул серверов»
Услуги могут обеспечиваться многими серверами
Распределенные
между серверами объекты
Реплицированные объекты
Увеличение производительности, доступности и отказоустойчивости
Но требуют
координации копий / консистентности представления
Например, высокодоступные серверы (порталы, диллинговые центры), информационные службы
Серверы, обслуживающие распределенную БД
Слайд 33
Модель с прокси-сервером
Кэш: «близкая» копия наиболее часто используемых
данных
значительно повышает производительность большинства приложений
Но требует усилий по поддержанию
когерентности
Прокси-сервер: разделяемый кэш ресурсов
Еще сложнее, чем простой кэш…
Обычно используется (и хорошо подходит) для доступа к веб-ресурсам
Слайд 35
Равноправные процессы (P2P)
Равные процессы: процессы, которые играют равные
роли
Никакого абсолютного различия между клиентом / сервером
Роли клиента и
сервера различаются от вызова к вызову (или со временем)
Увеличивает устойчивость к сбоям и масштабируемость
Трудности с координацией
Примеры: BitTorrent, распределенное вычисление
Слайд 36
Вариации модели
клиент-сервер
Вариации возможны по следующим параметрам:
Связь инициируется сервером
Использование
мобильного кода или мобильных агентов
Легкие клиенты базирующиеся на потребности
пользователей в дешевых компьютерах и простом управлении (тонкий клиент)
Слайд 37
Мобильный код
Мобильный код: код, посланный процессу клиента, чтобы
выполнить его же задачу
Слайд 38
Мобильные агенты
Выполнение программы (код + данные), которая перемещается
между узлами в сети
Выполняет автономную задачу обычно под управлением
некоторого другого процесса
Имеет внутреннее знание и цели
Преимущество: всюду локальный доступ
Снижает затраты на коммуникации
Потенциальная угроза безопасности
Ограниченная применимость
Примеры: сбор данных из многих источников, установка программ, программы типа червей
Слайд 40
Тонкие клиенты
Аппаратные
(сетевые компьютеры, network computers)
Все файлы сохраняются на
удаленном носителе
Минимум локального программного обеспечения
Любой локальный диск используется только
под кэш
Программные
Реализуют только интерфейс пользователя на локальном компьютере
Непосредственно программы работают на вычислительном сервере
Слайд 41
Итоги
Использование модели слоев для снижения сложности системы
Middleware обеспечивает
дополнительное удобство и дополнительные сервисы
Выбор модели архитектуры в зависимости
от особенностей задачи
Клиент – сервер
Модель предоставления услуг пулом серверов
Модель прокси- и кэш-серверов
Модель равных процессов