Э. Таненбаум, М. ван Стеен - Распределённые системы (принципы и парадигмы) (1162619), страница 64
Текст из файла (страница 64)
Интересно, что эти перемещения абсолютно незаметны клиенту. Все,что он видит, — это заместитель. Как и куда заместитель передает вызовы, отклиента скрыто. Заметим также, что передача указателей не имеет ничего общего с поиском адреса. Вместо того чтобы отыскивать адрес, мы просто передаемзапрос клиента по цепочке реальному объекту.Процесс Р2^Заместитель р' ссылаетсяна тот же скелетон,что и заместитель рПроцесс РЗИдентичный заместительПроцесс Р4 ОбъектЗаместитель рИдентичныйскелетонРис. 4 . 1 2 .
Принцип передачи указателей с использованием пар (заместитель, скелетон)Для сокращения длины цепочки пар (заместитель, скелетон) вместе с вызовом передается идентификатор того заместителя, который инициировал этот вызов. В идентификатор заместителя входит адрес клиента транспортного уровня,совмещенный с числом, идентифицирующим конкретный заместитель. Когда вызов добирается до объекта в том месте, где он в настоящее время расположен,ответ возвращается непосредственно тому заместителю, который инициировалвызов.
Текущее местоположение объекта вкладывается в ответное сообщение,и заместитель меняет тот скелетон, с которым он работал, на скелетон из текущего местоположения объекта. Этот принцип иллюстрирует рис. 4.13.Скелетон большене ссылаетсяна заместитель'Запроспередаетсяобъекту/Скелетон текущегопроцесса объектавозвращает текущееместоположениеыКлиентскийзаместитель устанавливаетпрямую связьРис. 4 . 1 3 . Перенаправление передаваемого указателя путем настройкизаместителя на прямую связь4.2. Размещение мобильных сущностей247Существует большая разница между посылкой ответа непосредственно начавшему обмен заместителю и посылкой ответа обратно по цепочке передающихуказателей. В первом случае связь быстрее, поскольку во взаимодействие вовлечены немногие процессы. С другой стороны, подстроить можно только заместитель, начавший обмен, в то время как посылка ответа обратно по тому же путидает возможность подстроить все промежуточные заместители.После того как скелетон перестанет ссылаться на какой бы то ни было заместитель, его можно удалить.
Как сделать это автоматически, рассматривается вразделе 4.3.Как мы говорили в главе 2, ссылки на объекты в распределенных системахможно реализовать как заместители, передаваемые в виде параметров при обращении к методу. Эта схема подходит также и для пересылки указателей.
Предположим, что процесс Р1 (см. рис. 4.12) передает свою ссылку на объект О процессу Р2. Передача ссылки производится путем установки копии заместителя рв адресное пространство процесса Р2 (при этом копия превращается в заместитель р'). Заместитель р' ссылается на тот же самый скелетон, что и р, так что механизм пересылки обращения работает так же, как раньше.Проблемы возникают, когда процесс в цепочке пар (заместитель, скелетон)зависает. Это делает остальные процессы недоступными.
Возможно несколькорешений. Одна из возможностей, использованная в Emerald [220] и системе ЬП[64], — позволить машине, на которой был создан объект, — ее называют базовойточкой {home location) объекта — всегда хранить ссылку на его текущее местонахождение. Эта ссылка хранится и обрабатывается так, чтобы исключить сбои.При обрыве цепочки текущее местонахождение объекта запрашивается у его базовой точки. Для изменения базовой точки объекта можно использовать традиционную службу имен, в которой записывается текущая базовая точка.
Подобныеподходы мы обсудим далее.4.2.3. Подходы на основе базовой точкиИспользование широковещательной рассылки и передачи указателей создаетпроблемы масштабируемости. Широковещательные и групповые рассылки трудно эффективно реализовать в крупномасштабных сетях, а длинные цепочки пересылаемых указателей создают проблемы с производительностью и чувствительны к обрывам связей.Популярный подход к поддержке мобильных сущностей в полномасштабныхсетях состоит во введении понятия базовой точки {home location), из которой отслеживается текущее местоположение объекта. Для защиты базовой точки от сбоев в сети или процессах можно применять специальные методики. На практикебазовой точкой обычно выбирается то место, где была создана сущность.Как говорилось ранее, подход на основе базовой точки используется в качествеаварийного метода служб локализации, основанных на передаче указателей.
Другим примером подобного подхода является схема мобильного IP-адреса [348]. Каждый мобильный хост имеет фиксированный IP-адрес. Всякая связь с этим IP-адресом изначально перенаправляется агенту базы {home agent) мобильного хоста.Этот агент находится в локальной сети, соответствующей сетевому адресу, со-248Глава 4.
Именованиедержащему IP-адрес мобильного хоста. Каждый раз, когда мобильный хост перемещается в другую сеть, он запрашивает временный адрес для связи. Этот адрес,который называется контрольным адресом (care-of address), регистрируетсяагентом базы.Когда агент базы получает от мобильного хоста пакет, он проверяет местонахождение хоста. Если хост находится в текущей локальной сети, пакет простопересылается ему. В противном случае он передается туда, где в настоящее время находится хост, то есть помещается в виде данных в IP-пакет и пересылаетсяна контрольный адрес. Одновременно отправитель пакета уведомляется о текущем местоположении хоста. Этот принцип иллюстрирует рис.
4.14. Отметим, чтоIP-адрес успешно используется в качестве идентификатора мобильного хоста.Текущее местоположение хостаРис. 4 . 1 4 . Принцип работы схемы мобильного IP-адресаВ соответствии с рисунком схема мобильного IP-адреса работает следующимобразом.1. Отправка пакета хосту на его базу.2. Возвращение текущего адреса.3. Передача сигнального пакета по текущему адресу.4. Передача последующих пакетов по текущему адресу.Рисунок также иллюстрирует недостатки подходов, основанных на базовойточке, для крупномасштабных сетей. Для связи с мобильной сущностью клиентдолжен сперва связаться с базой, которая может находиться совершенно не там,где сама сущность. В результате задержки связи возрастают.Решение, которое применяется в мобильной телефонии, — это двухуровневаясхема [302].
При установке связи с мобильной сущностью клиент сначала прове-4.2. Размещение мобильных сущностей249ряет локальный реестр, чтобы определить, нельзя ли связаться с клиентом локально. Если нельзя, осуществляется контакт с базой сущности для определенияее текущего местоположения. Позднее мы обсудим расширенный вариант этойсхемы с множеством иерархических уровней.Другой важный недостаток подходов, основанных на базовой точке, состоитв ее обязательной фиксированности. То есть мы всегда должны гарантироватьсуществование базовой точки.
В противном случае связаться с сущностью неудастся. Проблемы усугубляются, если сущность имеет длительный срок существования и постоянно перемещается в удаленные от базовой точки части сети. В этом случае было бы лучше позволить базе перемещаться вместе с хостом.Решение этой проблемы состоит в том, чтобы регистрировать базовую точкув традиционной службе именования и требовать от клиента искать сперва базовую точку.
Поскольку местонахождение базовой точки можно считать относительно стабильным, после нахождения его можно успешно кэшировать.4.2.4. Иерархические подходыДвухэтапный подход к локализации сущностей, основанный на базовой точке,можно обобщить на случай множества уровней. В этом пункте мы рассмотримсначала общий подход к иерархической схеме локализации, а затем представимспособы его оптимизации. Подход, о котором мы будем говорить, основан наслужбе локализации Globe, описанной в [470]. Это служба локализации общегоназначения, представленная множеством иерархических служб локализации[355, 487], реализованных в персональных системах связи (personal communicationsystems).Основной механизмВ иерархической схеме сеть делится на домены.
Это сильно напоминает иерархическую организацию DNS. Домен верхнего уровня охватывает сеть целиком. Каждый домен делится на множество поддоменов. Домен самого нижнего уровня, называемый лг/с/повьдл/ доменом (leaf domain), обычно соответствует локальной сетив компьютерных сетях или соту в мобильной телефонии.Также аналогично DNS и другим иерархическим системам именования. Каждый домен D имеет ассоциированный с ним направляющий узел dir(D), которыйотслеживает сущности домена.
Таким образом, мы получаем дерево направляющих узлов. Направляющий узел домена верхнего уровня, именуемый корневымнаправляющим узлом (root directory node), содержит сведения обо всех сущностях.Подобная обобщенная организация сети из доменов и направляющих узлов показана на рис. 4.15.Чтобы отслеживать местонахождение сущностей, каждая сущность, находящаяся в домене D, представлена локализующей записью (location record) в направляющем узле dir(D). Локализующая запись для сущности Е в направляющем узлеN листового домена D содержит текущий адрес сущности в этом домене. С другой стороны, направляющий узел N' в домене следующего уровня £)', в который250Глава 4.
Именованиевходит D, содержит в локализующей записи для Е только указатель на Л^. Точнотак же и родительский для N' узел содержит в локализующей записи для Е только указатель на N'. Соответственно, на корневом узле находятся локализующиезаписи для всех сущностей, и каждая локализующая запись содержит указательна направляющий узел в домене нижнего уровня, в котором находится сущность, идентифицируемая этой записью.Корневой направляющийузел dir(T)Домен верхнегоуровня ТНаправляющий узелclir(S) домена SПоддомен S доменаверхнего уровня Т(S содержится в Т)-7 ^ ^Листовой домен, содержащийся в SРис. 4 .
1 5 . Иерархическая организация службы локализации в виде доменов,каждый из которых имеет ассоциированный с ним направляющий узелСущность может иметь несколько адресов, например, когда она реплицирована. Если сущность имеет адреса в листовых доменах D1 и D2 соответственно, тонаправляющий узел наименьшего из доменов, в который входят D1 и D2, будетсодержать два указателя — по адресу на каждый поддомен. Это приводит наск обобщенной организации сети (рис.