Э. Таненбаум, М. ван Стеен - Распределённые системы (принципы и парадигмы) (1162619), страница 62
Текст из файла (страница 62)
& Comp.Sc.Это имя аналогично имени nl.vu.cs в системе DNS.Как и в DNS, использование глобально уникальных имен, образуемых последовательным перечислением имен RDN, приведет нас к иерархии наборов элементов каталога, которую мы будем называть информационным деревом каталогов {Directory Information Tree, DIT). DIT, в сущности, образует граф именованияслужбы каталогов Х.500, в котором каждый узел представляет собой элемент каталога.
Кроме того, узел может также работать каталогом в традиционном смысле, у него может быть несколько дочерних узлов, для которых он будет родителем. Для пояснения рассмотрим граф именования, частично показанный нарис. 4.10.4.1. Именованные сущности239NL/\£:1—( О = Vrije Unlversiteitу Г - ^ о и = Math.&Comp.Sc.\ CN = Main serverNHost Name = starHost_Name = zephyrРис. 4.10. Часть информационного дерева каталоговУзел Л^ соответствует элементу каталога, приведенному в табл.
4.6. В то жевремя этот узел выступает в качестве родителя нескольких других элементов каталога, которые имеют дополнительный атрибут именования Host_Name, используемый в качестве RDN. Эти сущности могут, например, задействоваться дляпредставления хостов, как показано в табл. 4.7.Таблица 4 , 7 . Два элемента каталога, использующие в качествеRDN имя Host NameПервый хостВторой хостАтрибутЗначениеАтрибутЗначениеCountryNLCountryNLLocalityAmsterdamLocalityAmsterdamOrganizationVrije Un1vers1te1tOrganizationVrije UniversUeitOrganizationalUnitMath. & Сотр. Sc.OrganizationalUnitMath. & Сотр.
Sc.CommonNameMain serverCommonNanneMain serverHost_NamestarHost_NamezephyrHost_Ad dress192.31.231.42Host_Address192.31.231.66Узел в графе именования Х.500 может, таким образом, быть представлен и в виде каталога в традиционном смысле, как мы обсуждали выше, и в виде записиХ.500. Это разница поддерживается двумя различными операциями поиска.Операция read, предназначенная для чтения одиночной записи, дает ее путь в дереве DIT. С другой стороны, операция list используется для построения спискаимен всех ребер, исходящих из данного узла дерева DIT. Каждое имя соответствует узлу, дочернему для данного. Отметим, что операция 11st не возвращает записей, она возвращает только имена. Рассмотрим, например, вызов операции readсо следующим именем в качестве исходных данных:/C=NL/0=Vr1je Un1versite1t/0U=Math.
& Сотр. Sc./CN=Ma1n server240Глава 4. ИменованиеЭтот вызов вернет запись, приведенную в табл. 4.6, в то время как вызов операции read с теми же исходными данными вернет имена star и zephyr из сущностей, представленных в табл. 4.7, а также имена других хостов, зарегистрированных подобным образом.Реализация Х.500Реализация службы каталогов Х.500 выполняется в основном таким же образом, как и реализация службы имен, такой как DNS, за исключением того, чтоХ.500 поддерживает больше операций поиска. Мы это кратко обсудили. Приоперациях с большим каталогом дерево DIT обычно разбивается и разноситсяпо нескольким серверам, которые в терминологии Х.500 называются агентамислужбы каталогов {Directory Service Agents, DSA).
Каждая часть разбитого дерева DIT соответствует зоне в DNS. Точно так же каждый агент DSA ведет себяочень похоже на обычный сервер имен, за исключением того, что он реализуетнесколько стандартных для службы каталогов служб, таких как расширенныеоперации поиска.Клиенты представлены тем, что называется агенты пользователей каталога{Directory User Agents, DUA).
Агент DUA подобен процедуре разрешения имен изтрадиционной службы именования. DUA обмениваются информацией с DSAв соответствии со стандартным протоколом доступа.Что делает реализацию Х.500 отличной от реализации DNS — так это механизмы поиска в базе DIE. В частности, имеются механизмы для поиска элементакаталога по заданному набору критериев, в который могут входить атрибуты искомых элементов. Например, предположим, что мы хотим получить список всехглавных серверов университета Vrije. Если использовать запись, определеннуюв [206], этот список можно вернуть, используя следующую операцию поиска:answer = search("&(C=NL)(0=Vr1je Univers1te1t)(0U=*)(CN=Main server)")В этом примере мы определили, что местом, где мы будем искать главныесерверы, является организация под названием Vrije Universiteit в стране NL, приэтом нас не интересует конкретный отдел этой организации, однако каждый возвраидаемый результат должен иметь значение атрибута CN, равное Main server.Важно заметить, что подобный поиск в службе каталогов — обычно достаточно дорогостоящая операция.
Так, например, чтобы найти все главные серверы университета Vrije, необходимо найти все сущности в каждом отделе и собрать результаты поиска в единый ответ. Другими словами, для полученияответа мы обычно должны перебрать множество листовых узлов дерева DIT.На практике это еще означает, что следует перебрать также и множество агентов DSA. В противоположность этому, службы имен часто могут быть реализованы при помощи операции поиска, нуждающейся в доступе только к одномулистовому узлу.Система Х.500 находится в одном ряду с множеством других протоколов OSI.Доступ к каталогу Х.500 в соответствии с официальными правилами — дело непростое.
Чтобы приспособить службу каталогов Х.500 к Интернету, был создан4.2. Размещение мобильных сущностей241более простой протокол, известный кг^к упрощенный протокол доступа к каталогам (Lightweight Directory Access Protocol, LDAP).LDAP — это протокол прикладного уровня, реализованный непосредственноповерх TCP [481, 501], что уже способствует его простоте по сравнению с официальным протоколом доступа OSI.
Кроме того, параметры операций поиска иобновления могут быть переданы просто в виде строк. Раздельного кодирования,необходимого по протоколу OSI, не нужно. Протокол LDAP постепенно становится стандартом де-факто для служб каталогов в Интернете. Он включается вомногие распределенные системы, включая, например, Windows 2000, о котороймы поговорим в главе 9. Практическую информацию по LDAP можно найтив [217].4 . 2 . Р а з м е щ е н и е мобильных сущностейСлужбы имен, которые мы обсуждали, используются в первую очередь для именованных сущностей, имеющих постоянное местоположение. По своей природетрадиционные системы именования плохо подходят для поддержания отображения имени в адрес, если тот регулярно изменяется, как это происходит в случаемобильных сущностей. Эту проблему, в том числе и решения для размещениямобильных сущностей, мы и рассмотрим в этом разделе.4.2.1. Именование и локализация сущностейКак мы узнали в предыдущем разделе, сущности именуются для того, чтобыиметь возможность их найти и получить к ним доступ.
Мы выделили три типаимен: имена, удобные для восприятия, идентификаторы и адреса. Поскольку распределенные системы строятся для людей и для доступа к сущности, необходимознать ее адрес, фактически все системы именования поддерживают отображениеимен, удобных для восприятия, в адреса.Как мы говорили, для эффективной реализации полномасштабного пространства имен, такого как в DNS, удобно разбить пространство имен на три уровня.Глобальный и административный уровни характеризуются тем, что имена изменяются нечасто.
Точнее, содержимое узлов этих частей пространства имен относительно постоянно. Вследствие этого репликация и кэширование способны повысить эффективность реализации.Содержимое узлов управленческого уровня часто изменяется. Поэтому производительность операций поиска и обновления на этом уровне становится особенно важной. На практике требования по производительности можно удовлетворитьпутем реализации узлов на локальных высокопроизводительных серверах имен.Рассмотрим теперь поближе, какое допущение следует сделать на самом делеи как подобный подход можно использовать для реализации крупномасштабнойсистемы именования. Прежде всего рассмотрим поиск адреса удаленного хостаftp.cs.vu.nl. Если считать содержимое узлов глобального и административного уровней стабильным, клиент, вероятно, сможет найти адрес сервера имен домена cs.vu.nl242Глава 4.
Именованиев локальном кэше. Соответственно, ему понадобится всего один запрос к серверуимен, чтобы найти адрес ftp.cs.vu.nl.Рассмотрим далее изменение адреса ftp.cs.vu.nl, например, из-за переносаFTP-сервера на другую машину. До тех пор пока сервер будет оставаться на машине, входящей в домен cs.vu.nl, обновление можно выполнить быстро.
В этомслучае изменению подвергнется только база данных DNS сервера имен cs.vu.nl.Поиск будет столь же эффективен, как и ранее.Соответственно, в том случае, если узлы глобального и административногоуровней изменяются редко, а изменения обычно ограничиваются одним сервером имен, системы именования, такие как DNS, весьма эффективны.Посмотрим теперь, что произойдет, если сервер ftp.cs.vu.nl придется переносить на машину с именем ftp.cs.umsa.edu.au, находящуюся в абсолютно другомдомене.