Ожидание ответа от нескольких серверов.
Вариант А – клиент реализует некий удаленный интерфейс, содержащий метод уведомление о результате, сервер по завершению вычислений вызывает этот метод
Вариант Б – вызов метода сервера происходит в отдельном потоке.
Использование общего реестра
Запускается с помощью RMIRegistry из дистрибутива java
Необходимо удалить создание реестра из кода сервера
String name = “rmi://localhost/compare”;
Tyr
{
locateRegistry.CreateRegistry(Registy.REGISTY_PORT);
Compare engine = new ComputeEngine();
Naming.ribbon()
Распределенные вычисления
RPC – Remote Procedure Call – Технология, позволяющая программам вызывать процедуры в другом адресном пространстве (как правило, на удаленных компьютерах)
Начало
1976 – идея RPC описана в RFC 707 (A high-Level Framework for Network-Based Resource Sharing)
1981 – Xerox создает реализацию и используют RPC.
Популярные реализации
Sun RPC (ONC RPC)
DCE/RPC
MSRPC
Иногда, когда говорят RPC, подразумевают не технологию, а одну из реализаций.
Взаимодействие в RPC
Передача параметров
Потом возвращается результат,
Заглушка извлекает результат и представляет клиенту.
Асинхронные вызовы
Java Remote Method Invocation
RMI
Интерфейс вызова удаленны методов
Распределенная объектная модель, специфицирующая, каким образом производится вызов удаленных методов, работающих на другой виртуальной машине Java, возможно на другом компьютере.
Характеристики RMI
Доступ к удаленным объектам
Только дл взаимодействия Java-Java
Высокоуровневый API
Прозрачность
Легковесность.
Взамодействие Client-Server
Слои RMI
Удаленные объекты
Находятся на сервере
Вызов методов удаленных объектов аналогичен вызову методов локальных объектов.
Вызов удаленных методов
Для вызова удаленных методов необходимо иметь ссылку на удаленный объект
Ссылка может быть получена посредством сервиса именований, как параметр или возвращаемый результат.
Клиентская заглушка (Stub)
Находится на клиенте
Является заместителем удаленного объекта
Обеспечивает маршалинг параметров и передачу запросов и параметров Skeleton`у.
Серверная заглушка (Skeleton)
Находится на сервере
Принимает запросы от клиентской заглушки
Обеспечивает вызов методов удаленного объекта
Доставляет ответ клиентской заглушке.
Асинхронные вызовы не поддерживаются в RMI.
Stub – реализует тот же интерфейс, что и удаленный объект.
1. сервер создает удаленный объект
2. Сервер регистрирует удаленный объект
3. Клиент запрашивает объект из реестра
4. Реестр возвращает удаленную ссылку (при этом создается клиентская заглушка)
5. Клиент вызывает метод заглушки (Stub)
6. Stub отправляет запрос Skeleton
7. Skeleton вызывает метод удаленного объекта
Передача параметров
Простые типы
Передаются по значению
Удаленные объекты
Передаются по ссылке
Локальные объекты
Передаются по значению
Используется сериализация.
Java Сериализация (Serialization)
Сохраняет состояние определенного объекта
Преобразует объект в последовательность байт
Записывает ее в поток
Получает данные из потока
Создает новый объект с указанным состоянием (на основании полученных данных)
Java.io.serializable
Объекты реализующие указанный интерфейс отмечается как сериализуемые
Сереализуемыми являются все подклассы объекта реализующего данный интерфейс.
Не сериализуемые объекты
Любой объект не реализующий Serializable интерфейс
Объекты, приводящие к рискам в безопасности, например FileInputStream.
Объекты с привязкой к конкретной VM например Thread
Объекты, содержащие на сериализуемые объекты.
Лекция 4
Распределенные системы CORBA
CORBA(Common Object Request Broker Architecture) (Обобщенная архитектура брокера объектных запросов) – технология построения распределенных объектных приложений, разработана группой по управлению объектами (OMG) для стандартизации услуг, которые брокеры объектных запросов (ORB) должны предоставлять пользователям.
Глобальная архитектура CORBA
Брокер объектных запросов
Система времени использования, отвечающая за базовые функции связи между клиентом и сервером. Обеспечивает маршрутизацию запросов и ответов, обработку объектных ссылок и поиск доступных сервисов.
Глобальная архитектура CORBA
Application objects – прикладные объекты. Являются частью приложений.
Vertical facilities – службы предназначенные для конкретнрых предметыных областей (средства обоработки изображений, финаносвых коммуникаций, информатизации в газовой и нефтяной промышленности)
Horizontal facilities – высокоуровневые службы общего назначения (управление задачами, пользовательский интерфейс, управление системой, …)
Common object services – являются основными системными сервисами, используемые разработчиками для создания приложений.
Dynamic
Invocation Interface
(DII)
Интерфейс динамических вызовов позволяет приложениям клиентов формировать произвольные запросы к объектам-серверам, интерфейсы которых неизвестны на стадии компиляции клиентского приложения.
Информация о структуре интерфейса, к которому обращается клиент для вызова соответствующей операции, может быть получена во время работы программы, если известны имя операции и список параметров и имеется ссылка на соответствующий объект-сервер.
Сервисы CORBA
SERVICE |
DESCRIPTION |
Collection |
Группированеи объектов в списки очереди, множества и т.д. |
Query |
Декларирование запросов к наборам объеков |
Concuerrency |
Обеспечивание параллельного дуспупа…. |
……………………… |
…………………… |
Portable Object Adapter (POA)
Компонент, отвечающий за то, чтобы серверный код представлялся клиенту объектом CORBA
Отображение инденитификаторов CORBA на серванты
События
(Push model)
События (Pull Model)
