Э. Таненбаум, М. ван Стеен - Распределённые системы (принципы и парадигмы) (1162619), страница 63
Текст из файла (страница 63)
Первое, на что следует обратить внимание, — имя ftp.cs.vu.nl предпочтительно было бы не менять, поскольку многие приложения и пользователи моглибы иметь на него символическую ссылку. Другими словами, это имя предположительно используется в качестве идентификатора. Его изменение сделает всессылки на него неверными.Существует два основных решения. Первое решение — записать адрес новоймашины в базе данных DNS для cs.vu.nl. Второе решение — записать имя новоймашины, а не ее адрес, включив fip.cs.vu.nl в символическую ссылку. Оба решения имеют серьезные недостатки.Сначала рассмотрим запись адреса новой машины.
Ясно, что на операцию поиска подобный подход не повлияет. Однако если сервер ftp.cs.vu.nl придется ещераз переносить на новую машину, придется обновлять и его элемент базы данных DNS в cs.vu.nl. Важно отметить, что само по себе обновление выполняетсяне дольше локальной операции, однако в реальности может потребовать сотенмиллисекунд.
Другими словами, подобный подход нарушает предположение о том,что операции в узлах управленческого уровня эффективны.Основной недостаток использования символических ссылок состоит в том,что теряется эффективность операций поиска. Каждая операция поиска выполняется за два шага.1. Поиск имени новой машины.2. Поиск адреса, соответствующего этому имени.Однако, если сервер ftp.cs.vu.nl снова переместится, скажем, на адрес ftp.cs.berkeley.edu, мы сможем осуществить операцию локального обновления, поместив имяftp.cs.unisa.edu.au в символическую ссылку на ftp.cs.berkeley.edu и сохранив дляcs.vu.nl элемент в базе данных DNS таким, как он есть.
Недостаток — добавлениееще одного шага к операции поиска.Для сущностей с высокой мобильностью ситуация может быть только хуже.Каждый раз при переносе сущности либо приходится выполнять нелокальнуюоперацию внесения изменений, либо добавляется еще один шаг к операциипоиска.Другая серьезная проблема обсуждаемых подходов состоит в том, что имяftp.cs.vu.nl не должно изменяться.
Таким образом, становится чрезвычайно важ-4.2. Размещение мобильных сущностей243ным выбирать имена, которые (предположительно) не придется менять в течение всего времени существования той сущности, которую они идентифицируют.Более того, такое имя нельзя использовать для каких-либо других сущностей.На практике подбор подобных имен, особенно для долгоживущих сущностей, затруднен, что демонстрирует нам система именования в World Wide Web. Так,многие сайты известны под разными именами и все эти имена остаются правильными, то есть всегда ссылаются на одну и ту же сущность, даже в случае мобильности.По этим причинам традиционные службы имен, такие как DNS, не справляются с мобильными сущностями.
Тут необходимо другое решение. По сути,проблемы связаны с тем, что традиционные службы именования поддерживаютпрямое отображение имен, удобных для восприятия человеком, в адреса сущностей. Каждый раз, когда имя или адрес изменяются, приходится изменять и отображение, как показано на рис. 4.11, а.ИмяИмяИмяИмя ЖСлужбаименованияИдентификаторсущностиСлужбалокализацииАдресАдресАдресN1Рис.
4 . 1 1 . Прямое одноуровневое отображение имен в адреса (а). Двухуровневоеотображение с использованием идентификаторов (б)Наилучшее решение состоит в том, чтобы отделить именование сущностей отих размещения, введя идентификаторы, как показано на рис. 4.11, б. Напомним,что идентификаторы никогда не изменяются, каждая сущность имеет толькоодин идентификатор, и идентификатор не может быть назначен другой сущности [212]. В общем случае идентификатор не предназначен для восприятия человеком. Иначе говоря, он оптимизирован исключительно для машинной обработки.При поиске сущности средствами службы именования она возвращает идентификатор.
Идентификатор может быть сохранен на локальной машине налюбой необходимый срок, поскольку он не может ни начать указывать на другую сущность, ни измениться. Под каким именем он сохранен, не важно. Соответственно, когда этот идентификатор потребуется снова, его можно будетпросто взять с локальной машины, не обращаясь к поиску средствами службыименования.Размещение сущности определяется посредством отдельной службы локализации {location service). Служба локализации, собственно, использует в качествеисходных данных идентификатор и возвращает текущий адрес соответствующей244Глава 4.
Именованиеему сущности. Если имеется несколько копий сущности, будет возвращено несколько адресов. В этом пункте мы сосредоточимся исключительно на проблемереализации эффективной службы локализации.4.2.2. Простые решенияОбсудим сначала два простых решения по локализации сущностей. Оба эти решения применимы только в локальных сетях. Тем не мене в этой среде они обычно успешно работают, что делает их простоту особенно привлекательной.Широковещательная и групповая рассылкиРассмотрим распределенную систему, построенную на основе компьютерной сети, предоставляющей эффективные механизмы широковещательной рассылки.Обычно подобные механизмы предоставляются в локальной сети, в которой всемашины присоединены к одному кабелю.
Беспроводные локальные сети такжепопадают в эту категорию.Локализация сущности в такой среде проста: сообщение, содержащее идентификатор сущности, широковещательной рассылкой доносится до каждой машиныи каждая из машин откликается на этот запрос проверкой, не на ней ли размещена эта сущность. Те машины, которые могут предоставить точку входа к искомойсущности, посылают ответное сообщение, содержащее адрес точки входа.Этот принцип использован в протоколе разрешения адресов {Address Resolution Protocol, ARP) Интернета для поиска канального адреса машины, для которой известен только IP-адрес [358].
В сущности, машина, посылающая широковещательный пакет в локальную сеть, спрашивает, кто владеет указанным IPадресом. Когда машина принимает подобное сообщение, получатель проверяет,не отслеживает ли он указанный IP-адрес. Если это так, он посылает ответныйпакет, содержащий, например, его адрес в сети Ethernet.Широковещательная рассылка с ростом сети теряет эффективность. Потерипропускной способности сети на пересылку сообщений — не единственная проблема, более важно то, что множество хостов вынуждены прерывать свою работуиз-за запроса, на который они не будут отвечать.
Одно из возможных решенийэтой проблемы — переход к групповой рассылке, при которой запрос получаетлишь ограниченная группа хостов. Так, например, сеть Ethernet аппаратно поддерживает групповую рассылку канального уровня.Групповая рассылка может также использоваться для локализации сущностейв некоммутируемых сетях. Так, например, в Интернете поддерживается групповая рассылка сетевого уровня, при которой хостам разрешено присоединятьсяк конкретной группе рассылки. Эта группа определяется адресом групповой рассылки. Когда хост посылает сообщение на адрес групповой рассылки, сетевойуровень предоставляет удобную службу по доставке этого сообщения каждомуиз членов группы. Эффективная реализация групповой рассылки в Интернетеобсуждается в [121, 122].Адрес групповой рассылки может использоваться в качестве обобщеннойслужбы локализации для множества сущностей.
Рассмотрим, например, органи-4.2. Размещение мобильных сущностей245зацию, в которой каждый сотрудник имеет собственный мобильный компьютер.Когда этот компьютер присоединяется к локальной сети, ему динамически присваивается IP-адрес. Кроме того, он включается в группу рассылки. Когда процесс желает локализовать компьютер Л, он посылает запрос «Где А?» в группурассылки. Если компьютер А в этот момент подключен к сети, он отвечает, сообщая свой текущий IP-адрес.Другой способ использования адреса групповой рассылки — ассоциироватьего с реплицируемой сущностью и путем групповой рассылки выполнить поискближайшей реплики.
При посылке запроса на адрес групповой рассылки каждаяреплика сообщает свой текущий (обычный) IP-адрес. Примитивный способ отобрать ближайшую реплику — взять ту, ответ от которой пришел первым. Болееразумные способы описаны в [189]. Как оказывается, выбрать ближайшую реплику в общем не так-то просто.Передача указателейДругой популярный подход к локализации мобильных сущностей основан на передаче указателей [149].
Принцип прост. Когда сущность перемещается из А в В,она сохраняет ссылку на свое новое местоположение в А. Преимущество этогоподхода — в его простоте: как только сущность локализуется при помощи, например, традиционной службы именования, клиент может найти ее текущий адрес,пройдя по цепочке переданных указателей.Имеется в наличии и комплект недостатков. Во-первых, если не предпринимать специальных мер, цепочка может стать настолько длинной, что локализация сущности станет слишком дорогим удовольствием.
Во-вторых, все промежуточные местоположения в цепочке должны поддерживать свою часть цепочкитак долго, как это будет необходимо. Третий и самый серьезный недостаток —уязвимость к потере ссылок. Как только пересылаемый указатель по каким-топричинам будет утрачен, сущность окажется невозможным локализовать.
Такимобразом, важно сохранить цепочку короткой и гарантировать сохранность пересылаемых указателей.Чтобы лучше понять, как работает передача указателей, рассмотрим ее в контексте распределенных объектов. В соответствии с подходом цепочек SSP (SSPchains), каждый из пересылаемых указателей реализуется в виде пары (заместитель, скелетон), как показано на рис.
4.12 [408].ПРИМЕЧАНИЕ'•В SSP заместитель (proxy) называется заглушкой (stub), а скелетон (skeleton) — побегом(scion), что приводит нас к паре (stub, scion), от которой и происходит аббревиатура SSP.Скелетон (то есть серверная заглушка) содержит либо локальную ссылку нареальный объект, либо локальную ссылку на заместитель (то есть клиентскуюзаглушку) этого объекта. Чтобы подчеркнуть, что скелетоны выступают для удаленных ссылок в роли входных элементов, а заместители — в роли выходных элементов, они обозначены на рисунке особыми образом.Всякий раз при передаче объекта из адресного пространства А в адресноепространство В он оставляет вместо себя в адресном пространстве А заместите-246Глава 4. Именованиеля, а для связи с этим заместителем в адресное пространство В устанавливаетскелетон.