- •Конспект лекций модуля № 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.3. Службы промежуточного уровня
Существует некоторое количество стандартных для систем промежуточного уровня служб. Все программное обеспечение промежуточного уровня неизменно должно тем или иным образом реализовывать прозрачность доступа путем предоставления высокоуровневых средств связи (communication facilities), скрывающих низкоуровневую пересылку сообщений по компьютерной сети. Интерфейс программирования транспортного уровня, предоставляемый сетевой операционной системой, полностью заменяется другими средствами. Способ, которым поддерживается связь, в значительной степени зависит от модели распределения, предлагаемой программным обеспечением промежуточного уровня пользователям и приложениям. Мы уже упоминали удаленный вызов процедур и обращение к распределенным объектам. Кроме того, многие системы промежуточного уровня предоставляют средства для прозрачного доступа к удаленным данным, такие как распределенные файловые системы или распределенные базы данных. Прозрачная доставка документов, реализуемая в Web, — это еще один пример коммуникаций высокого уровня (однонаправленных).
Важная служба, общая для всех систем промежуточного уровня, — это именование (naming). Службы именования сравнимы с телефонными книгами или справочниками типа «Желтых страниц». Они позволяют совместно использовать и искать сущности (как в каталогах). Хотя присвоение имен на первый взгляд кажется простым делом, при масштабировании возникают серьезные трудности. Проблема состоит в том, что для эффективного поиска имени в большой системе местоположение разыскиваемой сущности должно считаться фиксированным. Такое допущение, в частности, принято в среде World Wide Web, в которой любой документ поименован посредством URL. URL содержит имя сервера, на котором находится документ с данным URL-адресом. Таким образом, если документ переносится на другой сервер, его URL перестает работать.
Многие системы промежуточного уровня предоставляют специальные средства хранения данных, также именуемые средствами сохранности (persistence). В своей простейшей форме сохранность обеспечивается распределенными файловыми системами, но более совершенное программное обеспечение промежуточного уровня содержит интегрированные базы данных или предоставляет средства для связи приложений с базами данных.
Если хранение данных играет важную роль для оболочки, то обычно предоставляются и средства для распределенных транзакций (distributed transactions). Важным свойством транзакций является возможность множества операций чтения и записи в ходе одной атомарной операции. Под атомарностью мы понимаем тот факт, что транзакция может быть либо успешной (когда все операции записи завершаются успешно), либо неудачной, что оставляет все задействованные данные не измененными. Распределенные транзакции работают с данными, которые, возможно, разбросаны по нескольким машинам.
Предоставление таких служб, как распределенные транзакции, особенно важно в свете того, что маскировка сбоев для распределенных систем нередко затруднена. К сожалению, транзакции легче масштабировать на нескольких географически удаленных машинах, чем на множестве локальных.
Ну и, наконец, практически все системы промежуточного уровня, используемые не только для экспериментов, предоставляют средства обеспечения защиты (security). По сравнению с сетевыми операционными системами проблема защиты в системах промежуточного уровня состоит в том, что они распределены. Промежуточный уровень в принципе не может «надеяться» на то, что базовые локальные операционные системы будут адекватно обеспечивать защиту всей сети. Соответственно, защита отчасти ложится на программное обеспечение промежуточного уровня. В сочетании с требованием расширяемости защита превращается в одни из наиболее трудно реализуемых в распределенных системах служб.
