Э. Таненбаум, М. ван Стеен - Распределённые системы (принципы и парадигмы) (1162619), страница 55
Текст из файла (страница 55)
Если связь дорога, мыможем иногда уменьшить взаимодействие, перенеся вычисления с сервера наклиент и заставив клиент все что можно обрабатывать локально. Гибкость жевозрастает, когда клиент имеет возможность динамически загружать программное обеспечение, необходимое для работы с конкретным сервером. Загруженноепрограммное обеспечение может быть уже настроено на взаимодействие с этимсервером, избавляя клиента от необходимости повторно устанавливать его до начала работы.Перенос кода приносит проблемы использования локальных ресурсов, связанные с тем, что эти ресурсы также необходимо переносить на другие машины,организовывать новые привязки кода к локальным ресурсам целевой машиныили задействовать глобальные ссылки.
Другая проблема заключается в том, чтопри переносе кода мы должны принимать во внимание гетерогенность системы.Текущая практика показывает, что, возможно, лучшим средством справитьсяс гетерогенностью являются виртуальные машины, которые эффективно скрывают гетерогенность с помощью интерпретируемого кода.И, наконец, программные агенты — специальный вртд процессов, работающихкак автономные модули, но способных кооперироваться с другими агентами.С точки зрения распределенных систем, отличие агентов от обычных приложений в том, что агенты взаимодействуют друг с другом посредством коммуникационного протокола прикладного уровня, который называется языком взаи-212Глава 3.
Процессымодействия агентов (ACL). В ACL имеется четкое разделение между цельюсообщения и его содержимым. ACL определяет коммуникационный протокол верхнего уровня: посылка сообщения обычно предполагает конкретную реакцию получателя на основании исключительно цели сообщения.Вопросы и задания1.
в этом задании сравнивается чтение файлов с использованием однопоточного и многопоточного файловых серверов. На то чтобы получить запрос, ответить на него и совершить все прочие действия, у вас есть 15 мс. Считается,что необходимые данные находятся в кэше основной памяти.
Если потребуются дисковые операции, как это происходит в трети случаев, нужно дополнительно 75 мс, в течение которых поток выполнения будет приостановлен.Сколько запросов в секунду сможет выполнить однопоточный сервер? А многопоточный сервер?2. Имеет ли смысл ограничивать число потоков выполнения серверного процесса?3. В тексте мы описали многопоточный файловый сервер, показав, чем он лучше однопоточного сервера и сервера на базе конечного автомата. Существуютли ситуации, в которых однопоточный сервер оказывается лучше? Приведитепример.4. Статически ассоциировать с облегченным процессом единственный потоквыполнения — это не самая лучшая идея.
Почему?5. Иметь в процессе только один облегченный процесс — также не лучшая идея.Почему?6. Опишите простую схему, в которой облегченных процессов столько же, сколько работающих потоков выполнения.7. Заместители могут поддерживать прозрачность репликации, обращаясь к каждой из реплик так, как описывалось в тексте. Может ли объект (на сторонесервера) быть предметом реплицированного обращения?8. Создание параллельных серверов путем порождения вложенных процессов имеет свои преимущества и недостатки по сравнению с многопоточными серверами. Опишите их.9.
Набросайте архитектуру многопоточного сервера, поддерживающего посредством сокетов несколько протоколов, и его интерфейса транспортного уровняс базовой операционной системой.10. Как мы можем предотвратить игнорирование приложениями менеджера окони избежать полного беспорядка на экране?И. Объясните, что такое адаптер объектов.12. Опишите некоторые особенности адаптера объектов, используемого для поддержания сохранных объектов.13. Измените процедуру threacl_per_object в примере адаптера объектов (см. листинг 3.3) так, чтобы все объекты, контролируемые этим адаптером, обрабатывались одним потоком выполнения.3.6.
Итоги21314. Сервер, поддерживающий соединение TCP/IP с клиентом, — это сервер с фиксацией состояния или без фиксации состояния?15. Представьте себе web-сервер, поддерживающий таблицу, в которой IP-адресаклиентов отображаются на наиболее часто посещаемые web-страницы. Когдаклиент соединяется с сервером, сервер находит клиента в своей таблице и,если он обнаружен, возвращает записанную на него страницу. Это сервер с фиксацией состояния или без фиксации состояния?16. В какой степени обращение RMI, написанное на языке Java, зависит от переноса кода?17. Сильная мобильность в UNIX-системах может обеспечиваться путем разветвления процесса с образованием дочернего процесса на удаленной машине. Опишите, как это работает.18.
Из рис. 3.9 вытекает, что сильная мобильность не может сочетаться с выполнением переносимого кода в процессе-получателе. Приведите обратныйпример.19. Рассмотрим процесс Р, который нуждается в доступе к файлу F, расположенному на той же машине, на которой в настоящее время запущен процесс Р.При переносе процесса Р на другую машину он по-прежнему требует доступак F. Если привязка файла к машине фиксирована, как можно реализоватьглобальную ссылку на F?20. Каждый агент в системе D'Agents реализуется в виде отдельного процесса.Агенты могут связываться друг с другом, прежде всего, через совместно используемые файлы и путем обмена сообщениями. Файлы не могут выходитьза границы машин. В понятиях шаблона переноса, данных в разделе 3.4, какиечасти состояния агента, представленные в табл. 3.3, относятся к сегменту ресурсов?21. Сравните архитектуру D'Agents с архитектурой платформы агентов моделиFIPA.22. Куда в модели OSI поместить языки взаимодействия агентов (ACL)?23.
Где в модели OSI размещались бы языки взаимодействия агентов (ACL),будь они реализованы поверх системы обработки электронной почты, такойкак в D'Agents? Каковы были бы преимущества такого подхода?24. Почему часто необходимо указывать онтологию сообщения ACL?Глава 4И|\/1енование4.1. Именованные сущности4.2. Размещение мобильных сущностей4.3. Удаление сущностей, на которые нет ссылок4.4. ИтогиИмена играют важную роль во всех компьютерных системах. Они необходимыдля совместного использования ресурсов, определения уникальных сущностей,ссылок на местоположения и т. д.
Важная особенность именования состоит в том,что имя может быть разрешено, предоставляя доступ к сущности, на которую оноуказывает. Разрешение имени, таким образом, представляет собой процесс доступа к именованной сущности. Для разрешения имен необходимо реализовать систему именования. Разница между именованием в распределенных и нераспределенных системах состоит в способе реализации систем именования.В распределенных системах реализация системы именования часто сама посебе распределена по нескольким машинам. Способ этого распределения играетключевую роль для эффективности и масштабируемости системы именования.В этой главе мы сосредоточимся на трех различных, но одинаково важных способах использования имен в распределенных системах.Во-первых, до обсуждения некоторых общих вопросов, связанных с именованием, мы поближе рассмотрим организацию и реализацию «человеческих» имен.Типичные примеры подобных имен включают в себя имена файловой системыи World Wide Web.
Построение глобальной масштабируемой системы именования имеет прямое отношение к этим типам имен.Во-вторых, имена используются для локализации мобильных сущностей. Какоказывается, системы именования на основе «человеческих» имен не особенноподходят для поддержки большого количества мобильных сущностей, которыевдобавок могут быть разбросаны по большой сети. Необходима альтернативнаяорганизация, подобная той, что используется в мобильной телефонии, в которойимена (идентификаторы) не зависят от местоположения.Наша третья и последняя тема будет касаться организации имен.
В частности, имена, на которые больше не ссылается ни один объект и которые невоз-4.1. Именованные сущности215можно более локализовать, чтобы получить к ним доступ, должны автоматическиудаляться. Этот процесс также известен как уборка мусора, корни его следуетискать в языках программирования. Однако при переходе к крупным распределенным системам автоматическая уборка объектов, на которые нет ссылок, становится особенно важной.4 . 1 .
Именованные сущностив этом разделе мы сначала сосредоточимся на различных типах имен и том, какони организуются в пространства имен. Далее обсудим важный вопрос о том, какразрешить имя, то есть каким образом получить доступ к сущности, на которуюоно указывает. Также мы коснемся различных аспектов, связанных с распределением по нескольким машинам больших пространств имен и их реализацией. В качестве примеров больших служб именования мы рассмотрим систему доменныхимен Ир1тернета и стандарт OSI Х.500.4.1.1.
Имена, идентификаторы и адресаИмя в распределенной системе представляет собой строку битов, или символов,используемую для ссылки на сущность. Сущностью в распределенной системеявляется практически все. Типичными примерами являются ресурсы, включаяхосты, принтеры, диски, файлы. Другие хорошо известные примеры сущностей,часто получающие имена, — это процессы, пользователи, почтовые ящики, группыновостей, web-страницы, графические окна, сообщения, сетевые соединения и т.
д.С сущностями можно работать. Например, ресурс вроде принтера предоставляет интерфейс, поддерживающий операции печати документа, запроса состояния печати и т. п. Кроме того, сущность, такая как сетевое соединение, может совершать операции по передаче и приему данных, установки параметров качестваобслуживания, запроса состояния и т. д.Чтобы работать с сущностью, необходимо иметь к ней доступ, для которогомы используем точку доступа {access point). Точка доступа — это еще один специаттьный вид сущности в распределенных системах. Имя точки доступа называется адресом {address). Адрес точки доступа сущности часто называют просто адресом сущности.Сущность может иметь более чем одну точку доступа. Для сравнения, телефон может считаться точкой доступа к человеку, если телефонный номер рассматривать как адрес. Однако в наши дни множество людей имеет несколько телефо1П1ых номеров, каждый из которых соответствует одной из точек доступа,в которой этих людей можно застать.
В распределенных системах типичнымпримером точки доступа является хост, на котором запущен некий сервер. Егоадрес формируется сочетанием, например, IP-адреса и номера порта (то есть адресом сервера транспортного уровня).Точка доступа сущности может с течением времени изменяться. Так, например, если мобильный компьютер перенести в другое место, ему, скорее всего,216Глава 4. Именованиебудет присвоен не тот IP-адрес, который был у него раньше.
Точно так же есличеловек переезжает в другой город или другую страну, ему обычно приходитсяменять телефон. Аналогично, смена работы или Интернет-провайдера влечет засобой изменение адреса электронной почты.Адрес — это специальный тип имени, указывающий на точку доступа к сущности. Поскольку точка доступа тесно связана с сущностью, кажется удобнымиспользовать адрес в качестве постоянного имени соответствующей сущности.Однако делать это можно не всегда.В трактовке адресов в качестве имен особого типа имеется множество достоинств. Так, например, нет ничего необыкновенного в регулярных реорганизациях распределенных систем, в результате которых какой-либо сервер, напримертот, который обрабатывает запросы FTP, оказывается на другом хосте. Та машина, на которой этот сервер работал раньше, может быть перенацелена на совершенно другую задачу, например резервное копирование локальных файловыхсистем.