- •Распределенные системы обработки информации. Недашковский Вячеслав Михайлович
- •Лекция 3.09.04 Литература
- •1.Язык программирования Java
- •1.1.История и предпосылки
- •1.3.Архитектура Java
- •1.3.4Класс Object
- •1.3.5Класс Class
- •1.3.1Именованные константы
- •1.3.2Классы и объекты
- •1.3.3Комментарии
- •Лекция 21.09.04
- •Синхронизация
- •Взаимодействие потоков
- •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.Миграция объектов на удаленный хост
3.6.Перенос кода
Вообще-то передаются программы. Каковы же причины для переноса кода?
Идет процесс. Принимается решение системы: взять исполняемый код и перенести его на другой компьютер. Задача дорогостоящая. И должны быть причины, при которых это актуально.
Одна из них – распределение выполняемых задач при большой загрузке для повышения производительности.
Коммуникационный трафик. Это даже более веская причина.
БД на сервере. Надо выполнить анализ. Варианты:
Тащить фрагмент БД на клиент
Анализ сделать на сервере, а результаты передать на клиент.
Заполнение форм данных. Заполнить на клиенте, проверить, а затем передать на сервер.
Поисковая система: мобильные программы, переносимые с сайта на сайт.
Гибкость. Получается что можно РС формировать динамически под задачу. Возникла задача и известно, откуда взять код, решающий ее. Он загружается, выполняется, выгружается. Но проблема – защита.
3.6.1Модели переноса кода
При переносе процесса должно также переноситься состояние программы, получившей сигналы и другие элементы среды исполнения.
Шаблон:
Сегмент кода
Сегмент исполнения
Сегмент ресурсов (ссылка на внешние ресурсы необходимы процессу)
Модели:
модель слабой мобильности(Applet)
простота
единственное требование – чтобы машина могла выполнить
модель сильной мобильности
перенос 1+2 (можно переносить работающую программу)
Инициатор переноса:
- отправитель - (поиск программы напрямую)
- получатель
Где запускать полученную программу?
процесс – приемник (Java applet загружен в броузер)
в отдельном процессе – более ???
Можно не передавать, а сделать копию.
3.7.Перенос и локальные ресурсы
3 типа связи процесса с ресурсом:
Процесс передает в точности тот ресурс, на который ссылаются аргументы – ссылка на локальную конечную точку (наиболее сильная связь)
Более слабая связь процессу нужно только значение (libs)
наиболее слабая форма связи – процесс указывает на использование ресурса определенного типа (принтер «номер»)
Связь ресурса с машиной
??? ресурсы (могут быть перенесены с машины на машину) Например, файлы данных
Свободные ресурсы локальные
фиксированные ресурсы
3.7.1Перенос кода в неоднородных системах
Все упрощается, если применяется модель слабой мобильности. На сегодняшний день ряд языков обладает высокой степенью переносимости, например Java. Недостаток - ???
3.8.О программных агентах
Определение 3.5 Программный агент – автономный процесс, способный реагировать на среду исполнения, вызывать изменения в среде исполнения, возможно в кооперации с другими агентами.
Автономность
инициатива
кооперация
3.8.1Классификация агентов
Мобильные
Могут перемещаться с машины на машину
3.8.2Модель – клиент-сервер
Соотношение клиент-сервер.
Рис. 3.14.
Определение 3.6 Процессы, реализующие службы и предоставляющие к ним доступ, называются серверами.
Определение 3.7 Процессы, запрашивающие службы – клиенты.
Режимы установления соединения:
не требует – клиент не получает результат выполнения запроса может использоваться только для очень надежных систем
требует TCP/IP
3.8.3Разделение приложений по уровням
Есть задача, как разделить на 2 уровня? Пока универсального решения нет. Рассмотрим ситуацию доступа к БД.
Можно выделить 3 уровня:
Уровень пользователя интерфейсом – содержит все, что необходимо для обмена с пользователем
Уровень обработки – средний уровень
Уровень данных – содержит данные – БД
Вариант разделения приложения модели клиент-сервер.
1-3 можно разбить по физическим объектам.
Разбиение на уровни.
Рис. 3.15.
Таблица 3.4. Утолщение клиента
1. можно разбить пользователей интерфейса |
2. БД на сервере, клиент – у клиента |
3. Часть приложения + клиент |
4. пользователь интерфейса + приложение |
5. Часть БД на клиенте |
тонкий клиент
|
||||
Трехзвенная архитектура.
Рис. 3.16.
Приложение выступает в роли клиентосервера.

толстый клиент