- •Конспект лекций модуля № 2 "Базовый курс" дисциплины "Распределенные программные системы и технологии" Тема 5. Организация взаимодействия распределенных компонент
- •5.1. Виды взаимодействия
- •5.2. Синхронное взаимодействие.
- •5.1.1. Организация синхронного взаимодействия.
- •5.1.2. Удаленный вызов процедур
- •5.1.3. Удаленным вызовом методов
- •5.3. Асинхронное взаимодействие.
- •5.3.1. Организация асинхронного взаимодействия
- •5.3.2. Очереди сообщений
- •Тема 6. Идентификация компонентов
- •6.1. Задача идентификации
- •6.2.Централизованная служба имен
- •6.3. Распределенная служба имен
- •Тема .7 Синхронизация
- •7.1. Задачи синхронизации
- •7.2. Синхронизация доступа к данным
- •7.2.1. Гонки
- •7.2.2 Семафоры
- •7.2.2.1. Простые семафоры
- •7.2.2.2 Семафоры со счетчиками
- •7.2.4 Мониторы
- •7.2.4.1 Простые мониторы
- •7.2.4.2 Мониторы с условными переменными
- •7.2.4.3. Реализация мониторов
- •7.3. Синхронизация взаимодействия
- •7.3.1. Ситуация тупика
- •7.3.2. Моделирование тупиков сетью Петри
- •7.3.2.1. Сеть Петри
- •7.3.2.2. Моделирование тупика
- •7.4 Синхронизация времени
- •7.4.1. Проблема синхронизации времени
- •7.4.2. Алгоритм синхронизации времени
- •Тема 8. Транзакции
- •8.1. Понятие транзакции
- •8.2.Модели обработки транзакций
- •8.2.1. Плоские транзакции
- •8.2.2. Контрольные точки
- •8.2.3. Многозвенные транзакции
- •8.2.4. Вложенные транзакции
- •8.3. Классификация транзакций
- •8.4. Распределенные транзакции
- •8.4.1. Монитры транзакций
- •8.4.2 Управление транзакциями
- •8.4.3 Реализация транзакций
- •Литература к теме 8
- •Документация по библиотекам j2se
6.3. Распределенная служба имен
В случае если служба имен хранит большое количество записей процедура поиска в ней, с учетом большого количества обращений к службе, может занимать достаточно длительный промежуток времени. Так как в процессе работы любой распределенный компонент достаточно часто долен взаимодействовать с другими компонентами, следовательно и обращаться к службе имен он будет часто. По этой причине служба имен может стать «узким» местом всей РПС. Любые задержки службы будут приводить к задержкам работы в РПС.
Типичным решением данной проблемы является распределенная организация службы наименования. Такое решение также позволяет повысить надежность службы, за счет уменьшения зависимости ее работоспособности от работы одного компьютера.
Хорошим примером распределения службы имен является система доменных имен Интернета (DNS). Пространство DNS-имен организовано иерархически, в виде дерева доменов (domains), которые разбиты на неперекрывающиеся зоны (zones), как показано на рис. 6.2. Имена каждой зоны обрабатываются одним сервером имен. Каждое доменное имя является именем хоста в Интернете и ассоциируется с сетевым адресом этого хоста. В основном интерпретация имени означает получение сетевого адреса соответствующего хоста. Рассмотрим, к примеру, имя nl.vu.cs.flits. Для интерпретации этого имени оно сначала передается на сервер зоны Z1 (рис. 6.2), который возвращает адрес сервера зоны Z2, который, вероятно, сможет обработать остаток имени, vu.cs.flits. Сервер зоны Z2 вернет адрес сервера зоны Z3, который способен обработать последнюю часть имени и вернуть адрес соответствующего хоста.
Рис. 6.2. Пример разделения пространства DNS-имен на зоны
Эти примеры демонстрируют, как служба именования, предоставляемая DNS, распределена по нескольким машинам и как это позволяет избежать обработки всех запросов на интерпретацию имен одним сервером.
Тема .7 Синхронизация
7.1. Задачи синхронизации
При создании РПС решающих общие задачи и состоящих из распределенных компонентов встает важная проблема их синхронизации. При этом синхронизации подлежат различные аспекты работы РПС.
Доступ к ресурсам. Распределение компонентов по разным компьютерам и возможность их параллельной работы порождает проблему, связанную с общим доступом компонентов к ресурсу. При этом в качестве ресурса могут выступать файлы, данные в БД, сервисы и др.
Взаимодействие. Синхронное взаимодействие (которое требует блокировки работы компонента до получения ответа) нескольких компонентов требует согласования для избегания взаимоблокировки и «зависания» работы.
Время. Распределенные компоненты работающие на разных компьютерах используют локальное системное время, которое часто может быть несинхронизированое. Следствием этого является, то что для разных компонентов понятие «раньше» и «позже» может не совпадать
7.2. Синхронизация доступа к данным
7.2.1. Гонки
При параллельной работе распределенных компонентов они могут обращаться к одним и тем же ресурсам.
Ситуация при которой несколько задач одновременно попытаются изменить некоторую общую область данных, а конечное значение данных при этом зависит от того, какая задача обратится к этой области первой называется гонкой (race condition).
Когда процесс обращается к разделяемым данным, говорят, что он находится в своем критическом участке.
Для решения задачи синхронизации необходимо, в случае если один процесс находится в критическом участке, исключить возможность вхождения для других процессов в их критические участки, т.е. блокировать их выполнение. Когда процесс выходит из своего критического участка, то одному из остальных процессов, ожидающих входа в свои критические участки, должно быть разрешено продолжить работу (разблокирование процесса).
Процессы должны как можно быстрее проходить свои критические участки и не должны в этот период блокироваться.
Если процесс, находящийся в своем критическом участке, завершается (возможно, аварийно), то необходимо, чтобы некоторый другой процесс мог отменить режим взаимоисключения, предоставляя другим процессам возможность продолжить выполнение и войти в свои критические участки.
Для синхронизации обращения процессов к общим ресурсам используют семафоры и мониторыю..
