Разделы презентаций


Вызовы удаленных процедур

Содержание

ПланЧто такое RPC?SUN RPCXML RPCРаспределенные объектные системы (CORBA, COM)

Слайды и текст этой презентации

Слайд 1Вызовы удаленных процедур
Судаков А.А.
“Параллельные и распределенные вычисления” Лекция 5

Вызовы удаленных процедурСудаков А.А.“Параллельные и распределенные вычисления” Лекция 5

Слайд 2План
Что такое RPC?
SUN RPC
XML RPC
Распределенные объектные системы (CORBA, COM)

ПланЧто такое RPC?SUN RPCXML RPCРаспределенные объектные системы (CORBA, COM)

Слайд 3RPC
Вызов удаленных процедур – программный интерфейс, который позволяет вызывать подпрограммы

на удаленных машинах в сети
сеть
Машина 1
Вызов функции
proc(int a, char*

b)

Машина 2

Выполнение функции
proc(int a, char* b)

RPCВызов удаленных процедур – программный интерфейс, который позволяет вызывать подпрограммы на удаленных машинах в сетисетьМашина 1Вызов функции

Слайд 4Для чего нужно?
Не всегда есть возможность запускать программу на другой

машине
Работа в режиме ядра
Запуск программы может оказаться очень медленной операцией
Синхронизация

содержимого файла
Необходим стандартный подход для создания распределенных приложений
Независимо созданные программы должны работать друг с другом
Для чего нужно?Не всегда есть возможность запускать программу на другой машинеРабота в режиме ядраЗапуск программы может оказаться

Слайд 5Промежуточное программное обеспечение
RPC использует middleware для того, чтобы скрыть детали

реализации от пользователя
Программа-клиент
Программа-клиент
Программа-клиент
middleware
Машина 1
Машина 2
Машина 3
middleware
middleware
сервер
сервер
сервер

Промежуточное программное обеспечениеRPC использует middleware для того, чтобы скрыть детали реализации от пользователяПрограмма-клиентПрограмма-клиентПрограмма-клиентmiddlewareМашина 1Машина 2Машина 3middlewaremiddlewareсерверсерверсервер

Слайд 6RPC middleware
RPC middleware является надстройкой над клиент- серверной платформой
Программа, которая

вызывает удаленную функцию является клиентом
Сервера, которые выполняют функции работают прозрачно

для клиентов
Существуют вспомогательные сервера
RPC middlewareRPC middleware является надстройкой над клиент- серверной платформойПрограмма, которая вызывает удаленную функцию является клиентомСервера, которые выполняют

Слайд 7Преимущества
Преимущества
Упрощение интерфейса и разработки
Стандартизация
Параллелизм на уровне процедур
Недостатки
Сложность программного обеспечения

ПреимуществаПреимуществаУпрощение интерфейса и разработкиСтандартизацияПараллелизм на уровне процедурНедостаткиСложность программного обеспечения

Слайд 8Где используются?
Основной механизм для создания распределенных операционных систем
Основной механизм для

создания распределенных файловых систем
Часто используется для прикладных распределенных программ

Где используются?Основной механизм для создания распределенных операционных системОсновной механизм для создания распределенных файловых системЧасто используется для прикладных

Слайд 9Какие существуют реализации?
SUN RPC
XML RPC
Microsoft RPC

Какие существуют реализации?SUN RPCXML RPCMicrosoft RPC

Слайд 10SUN RPC
Начало 1980-х годов Open Network Computing (ONC) фирмы SUN

(http://www.ietf.org/html.charters/oncrpc-charter.html )
Создание распределенного программного обеспечения
Протоколы
Библиотеки, вспомогательные утилиты и инструменты

SUN RPCНачало 1980-х годов Open Network Computing (ONC) фирмы SUN (http://www.ietf.org/html.charters/oncrpc-charter.html )Создание распределенного программного обеспеченияПротоколыБиблиотеки, вспомогательные утилиты

Слайд 11Основные определения
Процедура характеризуется
номером программы
номером версии
номером функции
Клиент – программа, которая

вызывает удаленную функцию
Сервер – программа, которая выполняет запрос клиента
Определитель транспорта

– сервер, который ставит в соответствие номеру программы и номеру версии порт транспортного протокола
Основные определенияПроцедура характеризуется номером программыномером версииномером функцииКлиент – программа, которая вызывает удаленную функциюСервер – программа, которая выполняет

Слайд 12Схема запроса
Машина 1 (клиент)
Машина 2 (сервер)
Вызов функции 1 программы 1,

версии 1 на машине 2
Обращение к машине 2 порт 1234.

Вызов функции 1 и получение результата

Portmap порт 111

Запрос на сервер какой номер порта у программы 1 версии 1?

Ответ порт 1234

Сервер 1,1 слушает порт 1234

Обращение к библиотеке

Выполнение функции 1 и возврат результата

Схема запросаМашина 1 (клиент)Машина 2 (сервер)Вызов функции 1 программы 1, версии 1 на машине 2Обращение к машине

Слайд 13Вызов удаленной процедуры клиентом
Сериализация агрументов
XDR – extended data representation
XDR_int(a), XDR_string(b)


Int r =proc(int a, char* b)
Определение порта и транспортного протокола

сервера (udp/1234)

Передача аргументов не сервер

Ожидание результата

Прием результата от сервера

Десериализация результата
XDR – extended data representation
XDR_int(r)

Использование результата

Передача номера процедуры

Авторизация

Вызов удаленной процедуры клиентомСериализация агрументовXDR – extended data representationXDR_int(a), XDR_string(b) Int r =proc(int a, char* b)Определение порта

Слайд 14Выполнение процедуры сервером
Ожидание запросов (udp/1234)
Регистрация в определителе транспорта и получение

номера порта (udp/1234)
авторизация
Прием номера процедуры
Прием аргументов
Десериализация аргументов
XDR_int, XDR_string
Выполнение процедуры
Int

proc(int a, char* c)

Сериализация результата
XDR_int

Передача результата

Выполнение процедуры серверомОжидание запросов (udp/1234)Регистрация в определителе транспорта и получение номера порта (udp/1234)авторизацияПрием номера процедурыПрием аргументовДесериализация аргументов

Слайд 15Синхронное и асинхронное выполнение
Вызов процедуры
Синхронный
Ожидание результатов
Получение результатов
Продолжение работы
Асинхронный
Вызов процедуры
Продолжение работы
Прерывание

работы
Получение результатов
Продолжение работы

Синхронное и асинхронное выполнениеВызов процедурыСинхронныйОжидание результатовПолучение результатовПродолжение работыАсинхронныйВызов процедурыПродолжение работыПрерывание работыПолучение результатовПродолжение работы

Слайд 16Синхронное выполнение
Преимущества
Простота реализации программы
Недостатки
Затрачивается время на ожидание

Синхронное выполнениеПреимуществаПростота реализации программыНедостаткиЗатрачивается время на ожидание

Слайд 17Асинхронное выполнение
Преимущества
Эффективное использование процессорного времени
Недостатки
Сложность реализации программ

Асинхронное выполнениеПреимуществаЭффективное использование процессорного времениНедостаткиСложность реализации программ

Слайд 18Обратный вызов
Клиент вызывает функцию на сервере и продолжает работу
Сервер после

выполнения функции вызывает функцию на клиенте

И сервер и клиент являются

агентами
Обратный вызовКлиент вызывает функцию на сервере и продолжает работуСервер после выполнения функции вызывает функцию на клиентеИ сервер

Слайд 19Авторизация
AUTH_NONE отсутствует
AUTH_SYS по идентификатору пользователя
AUTH_DES по зашифрованному имени машины

АвторизацияAUTH_NONE отсутствуетAUTH_SYS по идентификатору пользователяAUTH_DES по зашифрованному имени машины

Слайд 20RPC на реальных машинах

RPC на реальных машинах

Слайд 21Разработка RPC программ
Для разработки распределенных программ достаточно знать только интерфейсы

(типы аргументов и возвращаемые значения)
Можно ввести специальный язык описания интерфейсов

(rpcgen -> C/C++)
Возможности программ можно наращивать постепенно добавляя новые удаленные процедуры на разных серверах
Разработка RPC программДля разработки распределенных программ достаточно знать только интерфейсы (типы аргументов и возвращаемые значения)Можно ввести специальный

Слайд 22Язык описания интерфейсов (rpcgen)
program MYPROG {
version MYVER {
int MYPROC (string)

= 1;
} = 1;
} = 0x2000000;

Все интерфейсы взаимодействия создаются автоматически

На

сервере пользователь должен определить функцию
int* myproc_1 (char**) {…}

На клиенте вызов выполняется
char* str = “Привет!”;
CLIENT* cl=clnt_create(…);
res = myproc_1(&str, cl)
Язык описания интерфейсов (rpcgen)program MYPROG {	version MYVER {		int MYPROC (string) = 1;	} = 1;} = 0x2000000;Все интерфейсы

Слайд 23Другие недостатки SUN RPC
Нет прозрачности расположения
Нужно явно указывать, где находится

сервер
Нет простой системы имен для нахождения серверов по их функциям
Только

процедурная ориентированность
Не рассчитано на объектно-ориентрованные программы (нет наследования, полиморфизма)
Единственный стандартный сервер – portmap
Для распределенных приложений часто нужно выполнять синхронизацию, блокировки, транзакции
Слабая система безопасности
Другие недостатки SUN RPCНет прозрачности расположенияНужно явно указывать, где находится серверНет простой системы имен для нахождения серверов

Слайд 24CORBA – common object relations broker architecture

CORBA – common object relations broker architecture

Слайд 25Объектно-ориентированный подход
Объект
структура данных (свойств)
имеет уникальное имя
определены операции (методы),

которые с этим (для этого) объекта можно выполнять
Инкапсуляция – вся

сложность объекта скрыта от внешнего мира, внешнему миру доступны только имя и интерфейсы (методы)
Классификация – объекты с одинаковой структурой и методами принадлежат к одному классу
Наследование – усложнение классов путем добавления новых свойств и методов
Полиморфизм – в зависимости от контекста методы с одинаковыми именами могут выполнять разные действия
Объектно-ориентированный подходОбъект структура данных (свойств) имеет уникальное имяопределены операции (методы), которые с этим (для этого) объекта можно

Слайд 26Распределенные объектные системы
Объекты существуют в разных программах или даже на

разных машинах
Объект из одной программы может вызывать методы объекта, который

существует в другой программе

сеть

Машина 1

Вызов функции
Remote.proc(int a, char* b)

Машина 2
Обект remote

Выполнение функции
Remote.proc(int a, char* b)

Распределенные объектные системыОбъекты существуют в разных программах или даже на разных машинахОбъект из одной программы может вызывать

Слайд 27CORBA
Стандарт для разработки распределенных объектно-ориентированных программ
Независим от аппаратной и программной

платформы
Разработано Object Management Group (OMG) http://www.omg.org
CORBA 1.0, 2.0, 3.0

CORBAСтандарт для разработки распределенных объектно-ориентированных программНезависим от аппаратной и программной платформыРазработано Object Management Group (OMG) http://www.omg.orgCORBA 1.0,

Слайд 28Преимущества
Стандарт
Рассчитан на гетерогенность
Совместим со многими языками программирования
Обеспечивается безопасность и надежность
Прозрачность

расположения, конкуренции, параллелизма, миграции
Объектно-ориентирован
Параллелизм на уровне объектов

ПреимуществаСтандартРассчитан на гетерогенностьСовместим со многими языками программированияОбеспечивается безопасность и надежностьПрозрачность расположения, конкуренции, параллелизма, миграцииОбъектно-ориентированПараллелизм на уровне объектов

Слайд 29Реализации
MICO http://www.mico.org/
DCOM http://www.microsoft.com
Orbacus
OmniORB
TAO (The ACE ORB)
ORBit

РеализацииMICO http://www.mico.org/DCOM	http://www.microsoft.comOrbacusOmniORBTAO (The ACE ORB)ORBit

Слайд 30Структура
ORB – object relations broker middleware
Клиентский
объект
Клиентский
объект
Серверный
объект
Серверный
объект
Служба
имен
Маклерская
служба
Служба
блокировок
Стандартные


интерфейсы
Стандартные
реализации

СтруктураORB – object relations broker middlewareКлиентский объектКлиентский объектСерверныйобъектСерверныйобъектСлужба именМаклерскаяслужбаСлужба блокировокСтандартные интерфейсыСтандартные реализации

Слайд 31ORB – object relations broker
Выполняет все функции взаимодействия между объектами
Скрывает

детали передачи данных (сетевое программирование, сериализация, вызовы удаленных процедур )
Выполняет

поиск объектов

ORB – object relations brokerВыполняет все функции взаимодействия между объектамиСкрывает детали передачи данных (сетевое программирование, сериализация, вызовы

Слайд 32


Взаимодействие между объектами
Клиент (x86, Windows, Java)
Сервер (ia64, UNIX, C++)
Клиентский объект
вызывает

метод
серверного объекта
Прокси (дескриптор)
серверного объекта
Серверный объект
Выполняет метод,
вызванный

клиентом

Адаптор серверного объекта

ORB

ORB

Inernet Inter-ORB protocol
(IIOP)

СТАНДАРТИЗИРОВАНО И НЕ ЗАСИСИТ
ОТ АППАРАТНЫХ И ПРГРАММНЫХ ПЛАТФОРМ

Взаимодействие между объектамиКлиент (x86, Windows, Java)Сервер (ia64, UNIX, C++)Клиентский объектвызывает метод серверного объектаПрокси (дескриптор) серверного объектаСерверный объект

Слайд 33Прокси и адаптор
Прокси – интерфейс к удаленному объекту, который создается

на локальной машине
Адаптор – адаптирует особенности реализации серверного объекта к

стандарту
Клиент и сервер взаимодействуют через прокси и адапторы
Прокси и адаптеры выполняют сериализацию и десериализацию, вызовы удаленных процедур, обработку ошибок – скрывают сложности протокола
Прокси и адапторПрокси – интерфейс к удаленному объекту, который создается на локальной машинеАдаптор – адаптирует особенности реализации

Слайд 34Взаимодействие между объектами (клиент)
Клиент – обращение к удаленному объекту
Получение IOR


– Interoparable object reference
(дескриптор, объектная ссылка, прокси) удаленного объекта
Приведение

IOR к типу удаленного объекта
(создание локального представителя)

Вызов метода удаленного объекта через локальный прокси

Получение результата

Обращение к ORB для поиска объекта
по какой-либо информации

Обращение к ORB для передачи аргументов удаленному объект

ORB возвращает результат

Обращение к ORB для активизации удаленного объекта

Инициализация брокера (ORB)

Взаимодействие между объектами (клиент)Клиент – обращение к удаленному объектуПолучение IOR – Interoparable object reference (дескриптор, объектная ссылка,

Слайд 35Объектная ссылка (IOR)
Содержит следующую информацию
местоположение объекта
сетевое имя машины
номер

порта транспортного протокола
Ключ объекта (значение, которое однозначно дает возможность «воссоздать»

интерфейс удаленного объекта)
Дополнительная информация
Авторизация
Объектная ссылка (IOR)Содержит следующую информациюместоположение объекта сетевое имя машины номер порта транспортного протоколаКлюч объекта (значение, которое однозначно

Слайд 36Взаимодействие между объектами (сервер)
Сервер – ожидание и выполнение вызовов
Инициализация брокера

(ORB)
Создание POA - Portable object adaptor (Транслятор особенностей реализации объекта

в стандартный протокол обмена данными)

Регистрация объекта в
распределенной системе

Выполнение вызовов клиентов

Обращение к ORB

Обращение к ORB

Обращение к ORB

Взаимодействие между объектами (сервер)Сервер – ожидание и выполнение вызововИнициализация брокера (ORB)Создание POA - Portable object adaptor (Транслятор

Слайд 37Службы
Служба имен – нахождение серверных объектов по именам (преобразование имени

объекта в объектную ссылку)
Маклерская служба – нахождение серверных объектов по

описаниям и интерфейсам (объектная ссылка возвращается в соответствии с возможностями объектов)
СлужбыСлужба имен – нахождение серверных объектов по именам (преобразование имени объекта в объектную ссылку)Маклерская служба – нахождение

Слайд 38Поиск объектов
Прямая передача объектной ссылки
Серверный объект публикует свою объектную ссылку

(www, ftp, NFS)
Клиент должен «знать» как ее получить
Поиск в службе

имен
Серверный объект регистрируется в службе имен (объектной ссылке взаимнооднозначно соответствует имя)
Клиент запрашивает службу имен для получения объектной ссылки по имени
Поиск по экспортируемым интерфейсам
Серверный объект «рекламирует» свои возможности в маклерской службе (объектной ссылке соответствуют несколько интерфейсов)
Клиент получает объектную ссылку в соответствии с необходимым интерфейсом
Поиск объектовПрямая передача объектной ссылкиСерверный объект публикует свою объектную ссылку (www, ftp, NFS)Клиент должен «знать» как ее

Слайд 39Служба имен
Хранятся пары имя-значение
Иерархическая структура

Служба именХранятся пары имя-значениеИерархическая структура

Слайд 40Поиск в службе имен
Получаем ссылку на имя группы
Последовательно получаем ссылки

на элементы более низкого уровня

Поиск в службе именПолучаем ссылку на имя группыПоследовательно получаем ссылки на элементы более низкого уровня

Слайд 41Хранилища реализаций и интерфейсов
Базы данных, которые содержат информацию, достаточную для

запуска серверных приложений (когда не доступен IOR)
Хранилище реализаций – полный

путь к программе, которую нужно запустить для создания нужного объекта (сервер)
Хранилище интерфейсов – информация о том для какого интерфейса к какому серверу обращаться (клиент)
Необходимо лишь указать, на какой машине и каком порту работает хранилище реализаций и служба имен
Хранилища реализаций и интерфейсовБазы данных, которые содержат информацию, достаточную для запуска серверных приложений (когда не доступен IOR)Хранилище

Слайд 44Компонентная модель
Машина 1

Компонент 1
Машина 1

Компонент 2
Машина 2

Компонент 3
Машина 3
Распределенное приложение

(программа), которое при необходимости выполнения некоторых действий обращается к разным

своим компонентам, работающим на разных машинах

Пользователь

Компонентная модельМашина 1Компонент 1Машина 1Компонент 2Машина 2Компонент 3Машина 3Распределенное приложение (программа), которое при необходимости выполнения некоторых действий

Слайд 45Пример запуска CORBA объекта


CORBA


Click



Пример запуска CORBA объекта CORBA	Click

Слайд 46Язык описания интерфейса
Для разработки распределенных программ достаточно знать только интерфейсы

(имена объектов и прототипы функций, которые необходимо для них вызывать)
Существует

специальный язык для описания интерфейсов – IDL (interface description language)
При компиляции файла описания интерфейса создаются файлы с каркасными реализациями на нужном языке программирования (Java, C, C++, Ada…)
Пользователь использует каркасные классы для встраивания в них логической части
Язык описания интерфейсаДля разработки распределенных программ достаточно знать только интерфейсы (имена объектов и прототипы функций, которые необходимо

Слайд 47IDL -> C++
IDL
interface adding_machine{
void add(in unsigned long X);
void subtract(in unsigned

long X);
long result();
};

Компиляция
idl adding_machine.idl

Создаются каркасные классы
class adding_machine : virtual public

CORBA::Object{…}
class adding_machine_stub : virtual public adding_machine{…}
class adding_machine_skel : virtual public adding_machine{…}

Пользователь определяет реализацию, как производные классы от какркасных
class adding_machine_impl : virtual public adding_machine_skel{
void add(in unsigned long X){…}
}
IDL -> C++IDLinterface adding_machine{	void add(in unsigned long X);	void subtract(in unsigned long X);	long result();};Компиляцияidl adding_machine.idlСоздаются каркасные классыclass adding_machine

Слайд 48Особенности
Стандарт определяет большинство особенностей, но все же некоторые вещи остаются

на усмотрения разработчиков
Хотя созданные приложения и будут взаимодействовать корректно, особенности

запуска, инсталляции и др. может существенным образом отличаться
ОсобенностиСтандарт определяет большинство особенностей, но все же некоторые вещи остаются на усмотрения разработчиковХотя созданные приложения и будут

Слайд 49Примеры
Десктоп-системы (GNOME, KDE, MS Windows DCOM)
Java приложения (сервлеты, Java Beans,

Java RMI)
Системы банк-клиент

ПримерыДесктоп-системы (GNOME, KDE, MS Windows DCOM)Java приложения (сервлеты, Java Beans, Java RMI)Системы банк-клиент

Слайд 50Вопросы ?

Вопросы ?

Обратная связь

Если не удалось найти и скачать доклад-презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

Email: Нажмите что бы посмотреть 

Что такое TheSlide.ru?

Это сайт презентации, докладов, проектов в PowerPoint. Здесь удобно  хранить и делиться своими презентациями с другими пользователями.


Для правообладателей

Яндекс.Метрика