
- •Введение
- •Раздел 1. Предмет распределенных вычислений
- •1.1. Понятия распределенных вычислений и распределенной системы
- •1.2. Цели построения распределенных систем
- •1.3. Требования к распределенным системам
- •1.3.1. Прозрачность (Transparency)
- •1.3.2. Открытость (Openness)
- •1.3.3. Масштабируемость (Scalability)
- •1.3.4. Сложности разработки распределенных систем
- •1.4. Понятие и назначение программного обеспечения промежуточного уровня
- •1.5. Взаимодействие в распределенных системах
- •1.5.1. Физическое время
- •1.5.2. Синхронные и асинхронные распределенные системы
- •1.5.3. Упорядочивание событий
- •1.5.4. Примитивы взаимодействия
- •1.5.5. Синхронный и асинхронный обмен сообщениями
- •Раздел 2. Модель распределенного вычисления
- •2.1. Модель распределенной системы
- •2.2. Причинно-следственный порядок событий
- •2.3. Эквивалентные выполнения
- •2.4. Конус прошлого и конус будущего для события
- •2.5. Свойства каналов
- •Раздел 3. Логические часы
- •3.1. Общие принципы построения логических часов
- •3.2. Скалярное время Лэмпорта
- •3.2.1 Основные свойства
- •3.2.2 Примеры использования
- •3.3. Векторное время
- •3.3.1 Основные свойства
- •3.3.2 Пример использования
- •3.4. Методы эффективной реализации векторных часов
- •3.4.1 Дифференциальная пересылка векторного времени
- •3.4.2 Часы, фиксирующие прямую зависимость
- •3.4.3 Адаптивный метод Жарда-Жордана
- •3.5. Матричное время
- •3.5.1 Основные свойства
- •Раздел 4. Взаимное исключение в распределенных системах
- •4.1. Общие концепции
- •4.2. Централизованный алгоритм
- •4.3. Алгоритмы на основе получения разрешений
- •4.3.1 Алгоритм Лэмпорта
- •4.3.2 Алгоритм Рикарта-Агравала
- •4.3.3 Алгоритм обедающих философов
- •4.4. Алгоритмы на основе передачи маркера
- •4.4.1 Широковещательный алгоритм Сузуки-Касами
- •4.4.2 Алгоритм Реймонда на основе покрывающего дерева
- •Список литературы
- •Основная литература
- •Дополнительная литература
1.3.4. Сложности разработки распределенных систем
Реализация перечисленных выше свойств распределенных систем на практике представляет непростую задачу. Основные сложности вытекают именно из того факта, что компоненты распределенной системы территориально удалены друг от друга и выполняются на независимых компьютерах в сети. Игнорирование этого обстоятельства на этапе проектирования и разработки соответствующего программного обеспечения часто приводит к существенным проблемам в функционировании распределенной системы.
В этой связи еще в 90-х годах прошлого века сотрудник компании Sun Microsystems Питер Дейч в своей статье "Восемь заблуждений относительно распределенных вычислений" сформулировал основные ошибки, которые допускают при создании распределенных приложений. Он писал: "По существу, каждый, кто впервые создает распределенное приложение, делает следующие предположения. Все они, в конце концов, оказываются ложными, и все вызывают большие неприятности. Вот эти восемь заблуждений:
1.Сеть является надежной.
2.Задержки передачи сообщений равны нулю.
3.Полоса пропускания не ограничена.
4.Сеть является безопасной.
5.Сетевая топология неизменна.
6.Систему обслуживает только один администратор.
7.Издержки на транспортную инфраструктуру равны нулю.
8.Сеть является однородной".
Важно отметить, что перечисленные предположения как раз и
отличают разработку традиционных локальных приложений и систем от распределенных в том смысле, что для нераспределенных приложений большинство из этих допущений остается верным, а проблемы, возникающие при нарушении любого из них, скорее всего, не будут проявляться. Большая же часть принципов, лежащих в основе распределенных систем, имеет непосредственное отношение к перечисленным предположениям. Поэтому в области распределенных вычислений рассматриваются методы и алгоритмы, позволяющие реализовывать распределенные системы, при условии того, что хотя бы одно из представленных допущений является ложным. Например, понятно, что надежных сетей не существует, что, в свою очередь, приводит к невозможности достижения абсолютной прозрачности отказов. Другим примером может являться необходимость принимать во внимание доступную полосу пропускания и ненулевую задержку обмена сообщениями в сети при реализации и использовании механизмов репликации.
23