Distributed System L-11 (Лекции по распределённым системам)
Описание файла
Файл "Distributed System L-11" внутри архива находится в папке "Лекции по распределённым системам". PDF-файл из архива "Лекции по распределённым системам", который расположен в категории "". Всё это находится в предмете "распределённые системы" из 10 семестр (2 семестр магистратуры), которые можно найти в файловом архиве МГТУ им. Н.Э.Баумана. Не смотря на прямую связь этого архива с МГТУ им. Н.Э.Баумана, его также можно найти и в других разделах. Архив можно найти в разделе "лекции и семинары", в предмете "распределённые системы" в общих файлах.
Просмотр PDF-файла онлайн
Текст из PDF
Распределенныевычислительные системыЛекция №11:Расширенное взаимодействие междуобъектамиАлексей В. Бурдаков, к.т.н.burdakov@usa.netПлан лекции• Виды атак• Шифрование• Высокоуровневые сервисы• Сервисы безопасности в объектноориентированном среднем слое ПО1Мотивация• Запросы, которые мы рассматривали восновном имеют следующие свойства:– Две стороны (клиент и сервер)– Запускает выполнение одну операцию– Выполняется максимум один раз• Другие формы запросов также полезны• Рассмотрим другие формы– Синхронизация– Выполнение операций– НадежностьОглавление• Синхронизация запросов––––СинхронныеОдносторонниеОтложенные синхронныеАсинхронные• Множественность запросов– Групповые запросы– Множественные запросы• Надежность запросов2Синхронизация запросовСинхронизация запросов• OO-Middleware: synchronous requests.:Client:ClientOp():Server:Server• Синхронные запросы могут заблокироватьклиента когда в этом нет необходимости.Примеры:– Компоненты пользовательского интерфейса– Конкурентные запросыот разных серверов3Однонаправленные запрос• Возвращает контроль к клиенту как только запросбудет передан ПО среднего слоя• Клиент и сервер не синхронизированы• Исопльзовать если:– Сервер не вырабатывает результат– Ошибка исполнения операции может бытьпроигнорирована клиентом:Client:Server:Client:Serveroneway()Односторонний запрос с использованиеJava Threadsclass PrintSquad {static void main(String[] args) {Team team;Date date;// initializations of team and date omitted ...OnewayReqPrintSquad a=new OnewayReqPrintSquad(team,date);a.start();// continue to do work while request thread is blocked...}}// thread that invokes remote methodclass OnewayReqPrintSquad extends Thread {Team team;Date date;OnewayReqPrintSquad(Team t, Date d) {team=t; date=d;}public void run() {team.print(date); // call remote method and then die}}4Односторонний запрос в CORBA• Статически декларируется в определенииинтерфейса серверного объекта• Компилятор IDL проверяет, что:– Операция имеет тип void для возвращаемогозначения– Не имеет параметров out или inout– Не вызывает исключений, специфичных длятипа• Пример:interface Team {oneway void mail_timetable(in string tt);};Односторонние запросы в CORBA• В односторонних запросах декларации не могутиспользоваться: используйте динамическийинтерфейс:Client:Serverr=create_request()r:Requestsend()Op()delete()5Отложенные синхронные запросы• Возвращает управление клиенту как толькозапрос будет принят ПО среднего слоя• Клиент инициирует синхронизацию• Используется если:– Запрос занимает много времени– Клиент не должен блокироваться– Клиент может позволить накладные расходы, связанныес синхронизацией:Client:Clientsend():Request:Requestop():Server:Serverget_result()Отложенные синхронные запросы с потокамиclass PrintSquad {public void print(Team t, Date d) {DefSyncReqPrintSquad a=new DefSyncReqPrintSquad(t,d);// do something else here.a.join(this); // wait for request thread to die.System.out.println(a.getResult()); //get result and print}}// thread that invokes remote methodclass DefSyncReqPrintSquad extends Thread {String s;Team team;Date date;DefSyncReqPrintSquad(Team t, Date d) {team=t; date=d;}public String getResult() {return s;}public void run() {String s;s=team.asString(date);// call remote method and die}}6Отложенные синхронные запросы вCORBA• Определяются во время выполнения используя DII• Используя send() объекта Request• Используя get_response() для получения результата:Client:Clientr=create_request(“op”)send():Server:Serverr:Requestr:Requestop()get_response()Асинхронные запросы• Возвращает управление клиенту как толькозапрос передается ПО среднего слоя• Сервер начинает синхронизацияю• Используйте если:– Запрос занимает долгое время– Клиент не должен блокироваться– Сервер может позволить издержки синхронизации:Client:Clientop():Server:Server7Асинхронные запросы с использованиемпотоков• У клиента создан интерфейс для обратноговызова• Выполнить запрос во вновь созданном потоке• Клиент продолжает выполнение в основномпотоке• Новая нить заблокирована• Операция запроса инициирует обратный вызовдля передачи результата• Новый поток заканчивается когда запросвыполненАсинхронные запросы с потокамиinterface Callback {public void result(String s);}class PrintSquad implements Callback {public void Print(Team team, Date date){A=new AsyncReqPrintSquad(team,date,this);A.start(); // and then do something else}public void result(String s){System.out.print(s);}}class AsyncReqPrintSquad extends Thread {Team team; Date date; Callback call;AsyncReqPrintSquad(Team t, Date d, Callback c) {team=t;date=d;call=c;}public void run() {String s=team.AsString(date);call.result(s);}}8Асинхронные запросы с использованием очередейсообщений• Передачу сообщений обеспечивает ОО ПО– Microsoft Message Queue– CORBA Notification Service– Java Messaging Service• Запрос и ответ обеспечиваетсясообщениями• Использование двух очередей сообщений• Асинхронное выполнение запросов можетбыть обеспеченоАсинхронные запросы используя очередямисообщенийenterremoveRequest QueueClientServerremoveenterReply Queue9Разница между нитями и очередямисообщенийНити• Коммуникацияосуществляется сразу• Нет гарантированнойдоставки запроса• Может бытьреализована спомощью средств ОСи языкаОчереди сообщений• Буферизация сообщийна зпрос и ответ• Постоянноехранилище можетгарантироватьдоставку• Дополнительныелицензионныерасходы на серверысообщенийМножественные запросы10Множественные запросы• ОО ПО: единичные запросы– Два компонента: клиент и сервер– Выполнение одной операции– Не анонимно• Другие формы: множественные запросы– Более двух компонентов (групповые запросы)– Более одной операции (множественныезапросы)Групповые запросы• Пример:Trader:Trader:Channel:Channel:Ticker:Ticker :Ticker:Ticker :Ticker:Tickerconnect()connect()push()push()push()push()disconnect()connect()push()push()11Принципы группового взаимодействия• Групповое взаимодействие информируетгруппу компонентов о каком-либо событии• Две роли:– Производитель события– Потребитель события• Производитель и потребитель не знаютдруг о друге• Две формы запросов:– push-type: производитель инициируетвзаимодействие– pull-type: потребитель инициируетвзаимодействиеCORBA Сервис уведомления о событияхApplicationObjectsDomainInterfacesCORBAfacilitiesObject Request BrokerEventNotificationCORBAservices12Групповые запросы с сервисом сообщенийsa:sa:SupplierSupplierAdminAdminppc:ppc: ProxyProxyPushPushConsumerConsumer:Client:Clientsa=for_suppliers()sa=for_suppliers()ppc=obtain_push_consumer()ppc=obtain_push_consumer()push()push()ca:ca:ConsumerConsumerAdminAdmin:Event:EventChannelChannelpps:pps:ProxyPushProxyPushSupplierSupplier:Ticker:Tickerca=for_consumers()ca=for_consumers()pps=obtain_push_pps=obtain_push_supplier()supplier()connect_push_connect_push_consumer()consumer()push()push()Множественные запросы• Инициирует выполнение n операций спомощью одного запроса• Определяется во время выполнения• Преимущества:– Меньшие издержки на клентской стороне– Обработка результатов по мере поступления13Множественные запросы с нитями• Идея: клиент запрашивает сервериспользуя множественные конкурентныенити• Проблема: клиент не должен выбиратьпорядок получения результатов и недолжен блокироваться• Идея: использование дополнительнойпамяти для взаимодействия междуклиентами и нитями запросаНадежность запросов14Надежность запросов• Как мы можем быть уверены в том, чтозапрос был выполнен?• Крайности:– Гарантированное выполнение– Неизвестно• Между крайностями есть градации• Разработчики клиентов должныопределить на сколько надежными должныбыть запросы• Рзная классификация для одиночного имножественного запросаНадежность запросов• Одиночные–––––Точно один разАтомарноеНе болле одногоНе менее одногоВозможно• Множественные– k-надежность– Полностью упорядоченные– Лучшая попытка15Одиночные вызовы - надежность: Неболее одного• Надежность выполнения по умолчанию вОО ПО• Означает, что:– ПО среднего слоя пытается исполнить запросне более одного раза– ПО среднего слоя определяет ошибку иинформирует клиента• Хороший компромис между сложностью инадежностьюМножественные запросы – надежность:точно один запрос• Наиболее высокая степень надежностидля одиночных запросов• ПО среднего слоя гарантирует что запросывыполняются один и только один раз• Пример: Сервис уведомления CORBA• Сбой прозрачен как для разработчиков какклиента так и для сервера• Требует постоянного хранения данных• Накладывает ограничения напроизводительность16Множественные запросы – надежность:атомарная надежность• Атомарные запросы либо выполняютсяполностью либо вообще не выполняются• Клиенты знаю с какой точки выполнитьвосстановление• Осуществляется с помощью транзакций• Все еще достаточно дорогое выполнениеМножественные запросы – надежность: покрайней мере один раз• ПО среднего слоя гарантирует выполнение одинраз• Пример: ПО среднего слоя оринетированное насообщения (MQSeries)• Запрос может быть выполнен чаще• Достигается с помощью повторной посылкисообщения или ответа• Трудно для использвания с запросами, которыемодифицируют состояние серверного объекта17Одиночные запросы: возможно• Схоже с не более одного исполнения заисключением:• Клиенты не уведомляются о сбоях• Пример: однонаправленные запросыCORBA• Нет издежек на обработку ошибокНадежность запросов: K-надежность• Обобщение точно одного длямножественных запросов• Гарантирует что по крайней мере kзапросов группы или множествазапросов будет выполнено• Пример: Сервис уведомления CORBA18Надежность запросов: полностьюупорядоченные• Гарантирует, что группа запросов отодного множественного не перекроетпредыдущие множественные запросы• Пример: Сервис сообщений CORBAдостигает полностью упорядоченныхзапросов стоимостью использованиясинхронных запросов для каждогозапроса из группыНадежность запросов: максимальныеусилия• Нет гарантии выполнения запросовиз множества• Пример: Использование сервисасообщений CORBA для выполненияоднонаправленных операций19Ключевые моменты• Запросы в CORBA, COM И RMI по умолчанию:синхронные, одиночные и выполняются максимумодин раз• Нефункциональные требования могут требоватьдругих форм запросов• Несинхронные запросы, которые выполняются вCORBA, COM и RMI являются– Односторонними– Отложенными синхронными– АсинхроннымиКлючевые моменты• Множественные запросы могут бытьсгруппированы или представлятьмножеством запросов• Оба вида выполняют более одного запросаодномоментно• Групповые запросы являются анонимными• Множественные вопросы не являютсяанонимными• Запросы могут обмениватьпроизводительность на надежность20.