- •Конспект лекций модуля № 1 "Введение" дисциплины "Распределенные программные системы и технологии" Тема 1. Определение и характеристики распределенных программных систем
- •1.1. Определение и задачи распределенных систем
- •1.2. Прозрачность
- •1.3. Открытость
- •1.4. Масштабируемость
- •1.5. Дополнительные свойства распределенных систем
- •1.5.1. Отказоустойчивость.
- •1.5.2. Безопаснтность.
- •1.6. Проблемы создания распределенных систем
- •Тема 2. Организация распределенных систем
- •2.1. Уровни распределенных программных систем
- •2.2. Аппаратный уровень
- •2.2.1. Классификация Флина
- •Simd(векторные компьютеры)
- •Misd(систалический массив)
- •Mimd(локальные, глобальные сети)
- •2.2.2. Классификация, основанная на процессорах и памяти (разделённой памяти)
- •2.2.3. Мультипроцессоры и мультикомпьютеры Базовые архитектуры
- •Мультипроцессоры
- •Гомогенные мультикомпьютерные системы
- •Гетерогенные мультикомпьютерные системы
- •2.3. Уровень операционных систем
- •2.3.1. Виды операционных систем
- •2.3.2 Распределенные операционные системы
- •Операционные системы для однопроцессорных компьютеров
- •Мультипроцессорные операционные системы
- •Мультикомпьютерные операционные системы
- •Системы с распределенной разделяемой памятью
- •2.3.3. Сетевые операционные системы
- •2.4. Программное обеспечение промежуточного уровня
- •2.4.1. Позиционирование программного обеспечения промежуточного уровня
- •2.4.2. Модели промежуточного уровня
- •2.4.3. Службы промежуточного уровня
- •2.4.4. Промежуточный уровень и открытость
- •Тема 3. Архитектуры распределенных программных систем
- •3.1. Протокол запрос-ответ
- •3.2. Выбор архитектуры
- •3.2.1.Виды архитектур
- •3.2.2. Архитектура клиент/сервер
- •3.2.3. Трехзвенная архитектура
- •3.2.4. Архитектура распределенных объектов.
- •Тема 4. Декомпозиция программных систем
- •4.1. Проектирование модульных систем
- •4.1.1. Основные понятия
- •4.3.2. Проектирование на основе структур данных (Data-Structure-Centered Design)
- •4.3.3. Компонентное проектирование (Component-Based Design)
- •4.1. Декомпозиция программных систем
- •4.1.1. Объектно-ориентированная декомпозиция
- •4.1.2. Статически-ориентированная декомпозиция
- •4.2. Метрики связанности модулей
- •4.2.1. Основные метрики
- •4.2.2. Главная последовательность
- •4.2.3. Расстояние от главной последовательности
- •4.3. Параллелизм программных систем
- •4.3.1 Признаки параллельных программ
- •4.3.2. Параллелизм данных (Data Parallel)
- •4.3.3. Параллелизм задач
- •4.3.3.1. Общая идея
- •4.3.3.2. Модель процесс/канал
- •4.3.3.3. Модель обмен сообщениями
- •4.3.3.3. Модель общая память
- •4.3.4. Оценки эффективности параллелизма.
2.4.4. Промежуточный уровень и открытость
Современные распределенные системы обычно создаются в виде систем промежуточного уровня для нескольких платформ. При этом приложения создаются для конкретной распределенной системы и не зависят от платформы (операционной системы). К сожалению, эта независимость часто заменяется жесткой зависимостью от конкретной системы промежуточного уровня. Проблема заключается в том, что системы промежуточного уровня часто значительно менее открыты, чем утверждается.
Как мы обсуждали ранее, истинно открытая распределенная система определяется полнотой (завершенностью) ее интерфейса. Полнота означает реальное наличие всех необходимых для создания систем описаний. Неполнота описания интерфейса приводит к тому, что разработчики систем вынуждены добавлять свои собственные интерфейсы. Таким образом, мы можем прийти к ситуации, когда разными командами разработчиков в соответствии с одним и тем же стандартом создаются разные системы промежуточного уровня и приложения, написанные под одну из систем, не могут быть перенесены под другую без значительных усилий.
Не менее неприятна ситуация, когда неполнота приводит к невозможности совместной работы двух реализаций, несмотря на то, что они поддерживают абсолютно одинаковый набор интерфейсов, но различные базовые протоколы. Так, если две реализации основаны на несовместимых коммуникационных протоколах, поддерживаемых сетевой операционной системой, маловероятно, что удастся с легкостью добиться их совместной работы. Необходимо, чтобы и протоколы промежуточного уровня, и его интерфейсы были одинаковы, как показано на рис. 1.17.
Еще один пример. Для гарантии совместной работы различных реализаций необходимо, чтобы к сущностям разных систем можно было одинаково обращаться. Если к сущностям в одной системе обращение идет через URL, а в другой системе — через сетевой адрес, понятно, что перекрестные обращения приведут к проблемам. В подобных случаях определения интерфейсов должны точно предписывать вид ссылок.
Рис. 1.17. В открытых распределенных системах должны быть одинаковыми как протоколы, используемые промежуточными уровнями каждой из систем, так и интерфейсы, предоставляемые приложениям
Сравнение систем. Краткое сравнение распределенных операционных систем, сетевых операционных систем и распределенных систем промежуточного уровня приводится в табл. 1.5.
Таблица 1.5. Сравнение распределенных операционных систем, сетевых операционных систем и распределенных систем промежуточного уровня
Характеристика |
Распределенная операционная система |
Сетевая операционная система |
Распределенная система промежуточного уровня |
|
|
мульти-процессорная |
мульти-компьютерная |
|
|
|
|
|
|
|
Степень прозрачности |
Очень высокая |
Высокая |
Низкая |
Высокая |
Идентичность операционной системы на всех узлах |
Поддерживается |
Поддерживается |
Не поддерживается |
Не поддерживается |
Число копий ОС |
1 |
N |
N |
N |
Коммуникации на основе |
Совместно используемой памяти |
Сообщений |
Файлов |
В зависимости от модели |
Управление ресурсами |
Глобальное, централизованное |
Глобальное, распределенное |
Отдельно на узле |
Отдельно на узле |
Масштабируемость |
Отсутствует |
Умеренная |
Да |
Различная |
Открытость |
Закрытая |
Закрытая |
Открытая |
Открытая |
Что касается прозрачности, ясно, что распределенные операционные системы работают лучше, чем сетевые. В мультипроцессорных системах нам нужно скрывать только общее число процессоров, а это относительно несложно. Сложнее скрыть физическое распределение памяти, поэтому не просто создать мультикомпьютерную операционную систему с полностью прозрачным распределением. Распределенные системы часто повышают прозрачность путем использования специальных моделей распределения и связи. Так, например, распределенные файловые системы обычно хорошо скрывают местоположение файлов и доступ к ним. Однако они несколько теряют в общности, и пользователи, решившие выразить все, что можно, в рамках конкретной модели, могут получить взамен проблемы с некоторыми приложениями.
Распределенные операционные системы гомогенны, то есть каждый узел имеет собственную операционную систему (ядро). В мультипроцессорных системах нет необходимости копировать данные — таблицы и пр., поскольку все они находятся в общей памяти и могут использоваться совместно. В этом случае вся связь также осуществляется через общую память, в то время как в мультикомпьютерных системах требуются сообщения. Мы обсуждали, что в сетевых операционных системах связь чаще всего базируется на файлах. Так, например, в Интернете большая часть обмена осуществляется путем передачи файлов. Кроме того, однако, интенсивно используется обмен сообщениями высокого уровня в виде систем электронной почты и досок объявлений. Связь в распределенных системах промежуточного уровня зависит от модели, на которой основана система.
Ресурсы в сетевых операционных системах и распределенных системах промежуточного уровня управляются на каждом узле, что делает масштабирование этих систем относительно простым. Однако практика показывает, что реализация в распределенных системах программного обеспечения промежуточного уровня часто приводит к ограниченности масштабирования. Распределенные операционные системы осуществляют глобальное управление ресурсами, что усложняет их масштабирование. В связи с централизованным подходом (когда все данные находятся в общей памяти) в мультипроцессорных системах они также масштабируются с трудом.
И, наконец, сетевые операционные системы и распределенные системы промежуточного уровня выигрывают с точки зрения открытости. В основном узлы поддерживают стандартный коммуникационный протокол типа TCP/IP, что делает несложной организацию их совместной работы. Однако здесь могут встретиться трудности с переносом приложений под разные платформы. Распределенные операционные системы в основном рассчитаны не на открытость, а на максимальную производительность, в результате на дороге к открытым системам у них стоит множество запатентованных решений.
