Главная » Просмотр файлов » Э. Таненбаум, М. ван Стеен - Распределённые системы (принципы и парадигмы)

Э. Таненбаум, М. ван Стеен - Распределённые системы (принципы и парадигмы) (1162619), страница 29

Файл №1162619 Э. Таненбаум, М. ван Стеен - Распределённые системы (принципы и парадигмы) (Э. Таненбаум, М. ван Стеен - Распределённые системы (принципы и парадигмы)) 29 страницаЭ. Таненбаум, М. ван Стеен - Распределённые системы (принципы и парадигмы) (1162619) страница 292019-09-20СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 29)

СвязьРеализация ссылок на объектыОчевидно, что ссылки на объекты должны содержать достаточно информации,чтобы обеспечить клиентам привязку к объекту. Простая ссылка на объект должнасодержать сетевой адрес машины, на которой paзмeп^eн реальный объект, вместес конечной точкой, определяющей сервер, который управляет объектом, и указа­нием на то, что это за объект. Последний обычно представляется сервером, на­пример, в форме 16-битного числа.

Конечная точка в данном случае абсолютнотакая же, как и та, что обсуждалась при рассмотрении системы DCE RPC. Напрактике она соответствует локальному порту, который динамически выделяетсялокальной операционной системой сервера. Однако эта схема имеет мрюжествонедостатков.Во-первых, если в сервере произойдет сбой и после восстановления серверполучит другую конечную точку, все ссылки на объекты станут неправильными.Эту проблему можно решить так же, как это сделано в DCE: создать на машинелокального демона, который будет опрашивать известные конечные точки и от­слеживать назначения конечных точек серверам в таблице конечных точек. По­сле привязки клиента к объекту мы первым делом запросим у демона текущуюконечную точку сервера.

Такой подход требует, чтобы мы кодировали идентр!фикатор сервера в ссылке на объект, которая может использоваться в качествеиндекса в таблице конечных точек. Сервер, в свою очередь, всегда должен реги­стрироваться локальным демоном.Однако кодирование сетевого адреса машины сервера в ссылке на объект —вообще говоря, плохая идея. Проблема подобного подхода — в том, что серверневозможно будет перенести на другую машину, не объявив недеР1Ствительнымивсе ссылки на объекты, которыми он управлял.

Традиционное решение этойпроблемы состоит в распространении идеи локальных демонов, поддерживаю­щих таблицы конечных точек, на сервер локализации {location server)^ следящршза постоянной работой серверов, на которых расположены объекты. Ссылка наобъект в результате должна содержать сетевой адрес сервера локализации, а так­же действующий в системе идентификатор сервера. Как мы увидим в главе 4, эторешение также имеет множество недостатков, особенно по части масштабируе­мости.До настоящего момента мы в тактических \1елях предполагали, что клиенти сервер уже были каким-то образом сконфигурированы под единый стек прото­колов. При этом предполагается, что они используют не только общий транс­портный протокол, такой как TCP, но также и общий протокол маршалинга и демаршалинга параметров сообщения.

Они должны также пользоваться общимпротоколом для установки исходного соединения, обработки ошибок, контроляпотока и пр.Мы можем осторожно отбросить это допущение, если предположим, что кссылке на объект добавляется дополнительная информация. Такая информацияможет включать указание на используемый для привязки к объекту протокол,который поддерживается сервером объекта. Так, например, некоторый серверможет одновременно поддерживать прием данных по протоколу TCP и дейта-2.3. Обращение к удаленным объектам117граммы и DP. При этом на клиенте лежит ответственность за реализацию замес­тителя как минимум для одного протокола, указанного в ссылке на объект.Мы можем пойти еще дальше, включив в ссылку на объект дескриптор реали­зации {implementation handle), указывающий на полную реализацию заместителя.Эту реализацию клиент может динамически загрузить при привязке к объекту.Например, дескриптор реализации может принимать вид URL-адреса, указываю­щего на файл архива, типа ftp://ftp.clientware.org/proxies/java/proxy-v1.1a.zip.

Про­токол привязки в этом случае будет нужен только для указания на то, что данныйфайл следует динамически загрузить, разархивировать, установить, а впоследст­вии создать экземпляр. Плюс такого подхода состоит в том, что клиент не дол­жен заботиться о том, доступна ли реализация данного протокола. Кроме того,это дает разработчику объекта полную свободу в разработке специфических дляобъекта заместителей. Однако, как мы увидим в главе 8, чтобы гарантироватьклиенту, что он может доверять загруженному откуда-то коду, нам нужно пред­принимать специальные действия по обеспечению защиты.2.3.3.

Статическое и динамическое удаленноеобращение к методамПосле того как клиент свяжется с объектом, он может через заместителя обра­титься к методам объекта. Подобное удаленное обраще7ше к методам (RemoteMethod Invocation, RMI) в части маршалинга и передачи параметров очень напо­минает RPC. Основное различие между RMI и RPC состоит в том, что RMI, какговорилось ранее, в основном поддерживает внутрисистемные ссылки на объекты.Кроме того, отпадает необходимость в клиентских и серверных заглушках общегоназначения. Вместо них мы можем использовать значительно более удобные в ра­боте и специфические для объектов заглушки, которые мы также обсуждали.Стандартный способ поддержки RMI — описать интерфейсы объектов на языкеопределения интерфейсов, так же как в RPC. Однако с тем же успехом мы мо­жем использовать объектный язык, например Java, который обеспечивает авто­матическую генерацию заглушек.

Такой подход к примененргю предопределен­ных определений интерфейсов часто называют статическим обращением {staticinvocation). Статическое обращение требует, чтобы интерфейсы объекта при раз­работке клиентского приложения были известны. Также оно предполагает, чтопри изменении интерфейса клиентское приложение перед использованием но­вых интерфейсов будет перекомпилировано.В качестве альтернативы обращение к методам может осуществляться болеединамичным образом. В частности, иногда удобнее собрать параметры обраще­ния к методу во время исполнения.

Этот процесс известен под названием дина­мического обращения {dynamic invocation). Основное его отличие от статическогообращения состоит в том, что во время выполнения приложение выбирает, ка­кой метод удаленного объекта будет вызван. Динамическое обращение обычновыглядит следующим образом:1nvoke(object.

method. 1nput_parameters. output_parameters):118Глава 2. СвязьЗдесь object идентифицирует распределенный объект; method — параметр, точ­но задающий вызываемый метод; 1nput_parameters — структура данных, в кото­рой содержатся значения входных параметров метода; output_parameters — струк­тура данных, в которой хранятся возвращаемые значения.В качестве примера рассмотрим добавление целого числа 1nt к объектуfobject файла. Для этого действия объект предоставляет метод append. В этом слу­чае статическое обращение будет иметь вид:fobject.append (int)Динамическое обращение будет выглядеть так:1nvoke(fobject.

1d(append). 1nt)Здесь операция 1d(append) возвращает идентификатор метода append. Для ил­люстрации динамического обращения рассмотрим браузер объектов, используемыйдля просмотра наборов объектов. Предположим, что этот браузер поддерживаетудаленное обращение к объектам. Это будет означать, что браузер в состояниивыполнить привязку к распределенному объекту и предоставить пользователюинтерфейс с объектом. Пользователю после этого может быть предложено вы­брать метод и ввести значения его параметров, после чего браузер сможет произ­вести действительное обращение.

Обычно подобные браузеры объектов разраба­тываются так, чтобы они поддерживали любые возможные интерфейсы. Такойподход требует исследования интерфейсов во время выполнения и динамическо­го создания обращений к методам.Другая область применения динамических обращений — службы пакетной об­работки, для которых запросы на обращение могут обрабатываться в течение всеготого времени, пока обращение ожидает выполнения. Служба может быть реали­зована в виде очереди запросов на обращение, упорядоченных по времени посту­пления.

Основной цикл службы просто ожидает назначения очередного запроса,удаляет его из очереди и, как это было показано ранее, вызывает процедуру Invoke.2.3.4. Передача параметровПоскольку большинство систем RMI поддерживает ссылки на объекты в преде­лах системы, возможности по передаче параметров при обращениях к методамобычно не столь ограничены, как в случае RPC. Однако существуют определен­ные тонкости, которые могут усложнить обращения RMI по сравнению с перво­начальным представлением.

Ниже мы кратко обсудим этот вопрос.Сперва рассмотрим ситуацию, когда все объекты — распределенные. Другимисловами, все объекты в системе доступны с удаленных машин. В этом случае приобращениях к методам мы постоянно используем ссылки на объекты как пара­метры. Ссылки передаются по значению и копируются с одной машины на дру­гую. Если процесс получает ссылку на объект в качестве результата обращенияк методу, он легко может выполнить привязку к объекту, на который указываетссылка, позже, если ему это понадобится.К сожалению, использование исключительно распределенР1ых объектов обыч­но слишком неэффективно, особенно если эти объекты малы и просты, как, на-2.3.

Обращение к удаленным объектам119пример, целые числа и логические значения. Каждое обращение клиента, если онне находится на том же сервере, что и объект, порождает запрос между различ­ными адресными пространствами или, что еще хуже, между различными маши­нами. Поэтому работа со ссылками на удаленные и локальные объекты обычнопроисходит по-разному.При обращении к методу с использованием ссылки на объект в качестве па­раметра эта ссылка копируется и передается как параметр-значение только то­гда, когда она относится к удаленному объекту. Именно в этом случае происхо­дит передача объекта по ссылке.

Характеристики

Список файлов книги

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6553
Авторов
на СтудИзбе
299
Средний доход
с одного платного файла
Обучение Подробнее