
- •Распределенные системы обработки информации. Недашковский Вячеслав Михайлович
- •Лекция 3.09.04 Литература
- •1.Язык программирования Java
- •1.1.История и предпосылки
- •1.3.Архитектура Java
- •1.3.1Именованные константы
- •1.3.2Классы и объекты
- •1.3.3Комментарии
- •Лекция 21.09.04
- •1.3.4Класс Object
- •1.3.5Класс Class
- •Синхронизация
- •Взаимодействие потоков
- •1.5.Библиотека Swing
- •1.5.2Панели
- •1.5.3Обработка событий
- •2.1.1Требования к системе
- •2.1.2Прозрачность системы
- •2.2.Общие сведения о промежуточном слое
- •2.3.Типы промежуточного слоя
- •2.4.Удаленный вызов процедур
- •Лекция 2.11.04
- •2.5.Передача параметров
- •2.6.Передача параметров по ссылке.
- •2.7.Расширение модели rpc. Асинхронный вызов.
- •3.Общие сведения об объектно-ориентированном промежуточном слое. Обращение к удаленным объектам.
- •3.1.Привязка клиента к распределенному объекту.
- •3.2.Объекты времени компиляции и объекты времени выполнения (раздел)
- •3.3.Сохранные и не резидентные объекты.
- •3.3.1Привязка клиента к объекту.
- •3.4.Реализация ссылок на объект
- •Лекция 9.11.04
- •3.4.1Идентификатор сервера. Об именовании. Имена, идентификаторы, адреса.
- •Идентификатор сервера
- •3.5.2Динамическое обращение
- •Передача параметров
- •3.5.3Сервер объектов
- •3.5.4Адаптер объекта
- •3.6.Перенос кода
- •3.6.1Модели переноса кода
- •3.8.4Реализация технологии клиент-сервер на Java (работа с сетями)
- •Лекция 30.11.04
- •3.8.5Клиентская часть
- •Объяснение в виде диаграммы последовательности
- •3.8.6Дополнительные сведения rmi.Java
- •Разница между удаленными и локальными объектами.
- •Блокировка объектов
- •Вопрос удаленных объектов
- •4.Последний раздел языка Java: интерфейс jdbc при работе с бд
- •4.1.Определение местонахождения распределенных объектов
- •Именование
- •Трейдинг
- •Лекция 7.12.04
- •4.2.Иерархические подходы в службах локализации.
- •4.2.1Кэширование указателей
- •4.2.2Масштабирование
- •4.3.Объектный трейдинг.
- •4.5.Алгоритм Крестиана
- •4.6.Алгоритм Беркли
- •4.7.Логические часы. Алгоритм Лампорта.
- •4.8.Жизненный цикл объекта
- •4.9.Миграция объектов на удаленный хост
4.5.Алгоритм Крестиана
Одна из машин имеет приемник коротких импульсов в начале каждой секунды от радиостанции с позывными wwv(штат Колорадо, США). Такие приемники – wwv-приемники. Эту машину называют сервером времени. А машины, работающие в рамках 2ρ запрашивают периодически сервер времени за метками времени. И здесь есть 2 момента:
Чтобы запросить нужно время. Но один из вариантов приема: поделить время на ответ пополам и прибавить к полученному.
Если часы отстают, то мы их доставляем. А вот если часы спешат, то мы их должны ставить назад. А это не допустимо. Тогда мы не одномоментно подстраиваем часы, а растягиваем это во времени, просто замедляя их ход.
4.6.Алгоритм Беркли
Там сервер на рассылает эти метки времени. А у него есть демон времени, который периодически в фоновом режиме опрашивает все машины о времени. Дальше вычисляет среднее и когда его спрашивают о времени, он его и выдает. В такой машине wwv-приемника нет.
4.7.Логические часы. Алгоритм Лампорта.
Есть ситуации, когда важно нет точное время выполнения процесса, а точная последовательность выполнения. Для таких случаев используют достаточно часто алгоритм Лампорта синхронизации логических часов.
Лампорт определил отношение: «Происходит раньше». Оно обозначается: a b. Это значит, что все процессы согласны, что событие а происходит первым, а все остальные за ним. Если это в одном процессе, то вообще это отношение выполняется.
Если процесс посылает сообщение, а второй процесс это сообщение принимает, то это отношение тоже выполняется. Это отношение транзитивное. В этом алгоритме каждому событию a ставится метка времени C(a). Эта метка должна быть принята как достоверно правильная всеми процессами. То есть если действительно a b, то C(a) < C(b).
Будем передавать сообщения.
Передачи метки времени.
Рис. 4.26.
Коррекция: b ставится метка 201. А если часы шли вперед, то метка так и принимается. И так все события расставляются в последовательности.
4.8.Жизненный цикл объекта
Жизненный цикл объекта.
Рис. 4.27.
Фабрика классов.
Рис. 4.28.
Найти фабрику можно с помощью искания (?) фабрики.
Поиск фабрик классов.
Рис. 4.29.
Служба именования получа(?)ет и на исх.(?) ему говорят «Найти Team Factory».
1.
Инициализация vars.
Брокер объектных заявок .
Функции фабрики выполняет переносимый объектный адаптер. В Java-интерфейсы активации (naming – bind()).
Универсальные фабрики.
4.9.Миграция объектов на удаленный хост
Под объектной миграцией понимаем копирование/перемещение объекта-сервера с одной машины на другую. При копировании создается новый объект, создается новая ссылка. При перемещении ссылка сохраняется.
Пример полезности- перемещение объектов - перераспределение нагрузки.
Как можно представить последовательность действий:
Hite(?)CycleObject
Транспорт. объект -> найти с помощью исх. фабрики хост, на котором надо разместить новый объект. Затем удалить себя. (см. ?) Ссылка остается прежней.
Когда клиент обращается по ссылке – см. предыдущую лекцию.
Размещение объекта.
Рис. 4.30.
Для клиента перемещение прозрачно. Но для разраб…
Есть так называемые ? системы, в которых все это уже реализовано. ? объекта – см. сборку мусора.
5.OMG и CORBA
1989 – Object Management Group – общество. Задача: создание технологии, позволяющей объединить приложения, выполняемые на различных программных и аппаратных платформах, выполняемые в разных потоках, написанных на различных языках программирования, созданных в разных уголках мира.
Результат: набор спецификаций, а не готовый продукт.
В качестве идеологии решено было использовать ООП-подход.
OMG занимается только стандартами и принципиально не разрабатывает готовые продукты.
OMG не навязывает свои стандарты, они сделали такой стандарт, который использовать удобно.