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

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

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

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

Соответственно, появляется возможность ссылаться на объекты сис­темы при помощи ссылок на заглушки.Дополнительную информацию по объектному программированию в DCE мож­но найти в [335, 476].2.3.6. Пример 2 — Java RMIв DCE распределенные объекты были добавлены в качестве расширения вызо­вов удаленных процедур. Вместо того чтобы указывать удаленную процедуру насервере, клиент указывал удаленную процедуру для объекта на сервере.

Отсутст­вие подобающего механизма ссылок на объекты системы подчеркивало, что мыдействительно имеем дело с простым расширением RFC.Взглянем теперь на распределенные объекты с абсолютно другой точки зре­ния. В Java распределенные объекты интегрированы с языком. Основная цельэтого — сохранить, насколько это возможно, семантику нераспределенных объ­ектов. Другими словами, создатели языка Java стремились к высокому уровнюпрозрачности распределения. Однако, как мы увидим, создатели Java такжерешили, что в тех случаях, когда высокая степень прозрачности может быть не­эффективна, затруднительна или нереализуема, распределенность может бытьявной.Модель распределенных объектов JavaЯзык Java также поддерживает распределенные объекты исключительно в формеудаленных объектов.

Напомним, что удаленный объект — это распределенный2.3. Обращение к удаленным объектам123объект, тело которого постоянно находится на одной и той же машине, а интер­фейсы доступны удаленным процессам. Интерфейсы реализованы обычным об­разом через заместителя, который предоставляет те же интерфейсы, что и уда­ленный объект. Сам заместитель имеет вид локального объекта, находящегосяв адресном пространстве клиента.Между удаленными и локальными объектами существует лишь несколькоразличий, но различия эти тонки и важны.

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

Java позволяет построитьлюбой объект в виде монитора. Для этого достаточно объявить один из методовсинхронизируемым {synchronized). Если два процесса одновременно вызовут син­хронизируемый метод, работать будет только один из них, в то время как второйокажется заблокированным.

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

Точнотак же и другой клиент на другой машине должен быть блокирован до пересылкизапроса на сервер. Это означает, что нам необходимо блокировать разных клиен­тов на различных машинах. Как мы увидим в главе 5, распределенная синхрони­зация может оказаться довольно сложным делом.Альтернативный подход состоит в том, чтобы производить блокировку толь­ко на сервере. В принципе это неплохо работает, но возникают проблемы с нару­шениями работы клиентов в момент обработки сервером их обращений. Как мыувидим в главе 7, обработка подобных ситуаций требует достаточно хитроумно­го протокола и способна значительно снизить общую производительность обра­щений к удаленным методам.Поэтому разработчики Java RMI ограничили блокировку удаленных объек­тов блокировкой заместителей [494]. На практике это означает, что просто путем124Глава 2.

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

Так, в ходе обращения RMI в качестве па­раметра может быть передан любой простой или объектный тип, что предполага­ет возможность маршалинга типов. В терминологии Java это означает, что типысериализуемы (serializable). Хотя в принципе сериализации можно подвергнутьбольшинство объектов, она не всегда является допустимой или возможной.Обычно зависящие от платформы объекты, такие как дескрипторы файлов илисокеты, не сериализуются.Единственное различие между локальными и удаленными объектами, наблю­даемое в процессе RMI, состоит в том, что локальные объекты передаются позначению (включая большие объекты, такие как массивы), в то время как удален­ные объекты передаются по ссылке. Другими словами, локальные объекты копи­руются, после чего копия используется в качестве параметра-значения. В случаеудаленных объектов в качестве параметра используется ссылка на объект, безвсякого копирования, как показано на рис.

2.17.При обращении RMI в Java ссылка на удаленный объект реализуется именнотак, как мы говорили в пункте 2.3.2. Эта ссылка содержит сетевой адрес и конеч­ную точку сервера, а также локальный идентификатор необходимого объектав адресном пространстве сервера.

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

Другими словами, она содержит описание состояния (данных)объекта, а также реализацию методов обработки этого состояния. Из специфика­ции интерфейса объекта генерируется серверная заглушка, то есть скелетон.Другой класс содержит реализацию кода клиента и называется классом клиен­та. Класс клиента содержит реализацию заместителя. Как и скелетон, этот класстакже автоматически создается из спецификации интерфейса объекта. В своейпростейшей форме заместитель делает только одну вещь — превращает каждыйвызов метода в сообщение, пересылаемое реализации удаленного объекта, нахо­дящейся на сервере, а каждое ответное сообщение — в результат вызова метода.При каждом вызове он устанавливает связь с сервером, разрывая ее после завер-2.3. Обращение к удаленным объектам125шения вызова. Для этого, как уже говорилось, заместитель нуждается в сетевомадресе и конечной точке сервера.Таким образом, заместитель обладает всей информацией, необходимой дляобращения клиента к методу удаленного объекта.

В Java заместители сериализуются. Другими словами, заместитель можно подвергнуть маршалингу и пере­слать в виде набора байтов другому процессу, в котором он может быть подвергнутобратной операции (демаршалингу) и использован для обращения к методамудаленного объекта. Косвенным результатом этого является тот факт, что замес­титель может быть использован в качестве ссылки на удаленный объект.Этот подход согласуется с методами интеграции локальных и распределен­ных приложений в Java. Напомним, что при обращении RMI локальный объектпередается путем создания копии, а удаленный — через общесистемную ссылкуна объект. Заместитель представляет собой просто-напросто локальный объект.Это означает, что сериализуемый заместитель можно передавать по сети как па­раметр RMI.

В результате появляется возможность использовать заместитель какссылку на удаленный объект.В принципе nppi маршалинге заместР1теля вся его реализация, то есть его со­стояние и код, превращаются в последовательность байтов. Маршалинг подоб­ного кода не слишком эффектршен и может привести к слишком объемнымссылкам. Поэтому при маршалинге заместителя в Java на самом деле происходитгенерация дескриптора реализации, точно определяющего, какие классы необхо­димы для создания заместителя.

Возможно, некоторые из этих классов придетсясперва загрузить из удаленного узла. Дескриптор реализации в качестве частиссылки на удаленный объект заменяет передаваемый при маршалинге код. В ре­зультате ссылки на удаленные объекты в Java имеют размер порядка несколькихсотен байт.Такой подход к ссылкам на удаленные объекты отличается высокой гиб­костью и представляет собой одну из отличительных особенностей RMI в Java[482]. В частности, это позволяет оптимизировать решение под конкретный объ­ект.

Так, рассмотрим удаленный объект, состояние которого изменяется толькоодин раз. Мы можем превратить этот объект в настоящий распределенный объ­ект путем копирования в процессе привязки всего его состояния на клиентскуюмашину. Каждый раз nppi обращении клиента к методу он работает с локальнойкопией. Чтобы гарантировать согласованность данных, каждое обращение про­веряет, не изменилось ли состояние объекта на сервере, и при необходимости об­новляет локальную копию.

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

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

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