Э. Таненбаум, М. ван Стеен - Распределённые системы (принципы и парадигмы), страница 6
Описание файла
PDF-файл из архива "Э. Таненбаум, М. ван Стеен - Распределённые системы (принципы и парадигмы)", который расположен в категории "". Всё это находится в предмете "распределенные операционные системы" из 8 семестр, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .
Просмотр PDF-файла онлайн
Текст 6 страницы из PDF
Эти правила формализованы в протоколах. В распределенных системах службы обычно определяютсячерез интерфейсы {interfaces), которые часто описываются при помощи языкаопределения интерфейсов {Interface Definition Language, IDL), Описание интерфейса на IDL почти исключительно касается српгтаксиса служб. Другими словами, оно точно отражает имена доступных функций, типы параметров, возвращаемых значений, исключительные ситуации, которые могут быть возбужденыслужбой и т.
п. Наиболее сложно точно опрюать то, что делает эта служба, то естьсемантику интерфейсов. На практике подобные спецификации задаются неформально, посредством естественного языка.Будучи правильно описанным, определение интерфейса допускает возможность совместной работы произвольного процесса, нуждающегося в таком интерфейсе, с другим произвольным процессом, предоставляющим этот интерфейс. Определение интерфейса также позволяет двум независимым группам создатьабсолютно разные реализации этого интерфейса для двух различных распределенных систем, которые будут работать абсолютно одинаково. Правильное определение самодостаточно и нейтрально.
«Самодостаточно» означает, что в нем имеется все необходимое для реализации интерфейса. Однако многие определенияинтерфейсов сделаны самодостаточными не до конца, поскольку разработчикамнеобходимо включать в них специфические детали реализации. Важно отметить,что спецификация не определяет внешний вид реализации, она должна бытьнейтральной. Самодостаточность и нейтральность необходимы для обеспеченияпереносимости и способности к взаимодействию [65]. Способность к взаимодействию {interoperability) характеризует, насколько две реализации систем иликомпонентов от разных производителей в состоянии совместно работать, полагаясь только на то, что службы каждой из них соответствуют общему стандарту.Переносимость {poitability) характеризует то, насколько приложение, разработанное для распределенной системы Л, может без изменений выполняться в распределенной системе В, реализуя те же, что и в Л интерфейсы.Следующая важная характеристика открытых распределенных систем — этогибкость.
Под гибкостью мы понимаем легкость конфигурирования системы, состоящей из различных компонентов, возможно от разных производителе!!. Недолжны вызывать затруднений добавление к системе новых компонентов илизамена существующих, при этом прочие компоненты, с которыми не производилось никаких действий, должны оставаться неизменными. Другими словами, от-1.2. Задачи31крытая распределенная система должна быть расширяемой. Например, к гибкойсистеме должно быть относительно несложно добавить части, работающие подуправлением другой операционной системы, или даже заменить всю файловуюсистему целиком.
Насколько всем нам знакома сегодняшняя реальность, говорить о гибкости куда проще, чем ее осуществить.Отделение правил от механизмовв построении гибких открытых распределенных систем решающим факторомоказывается организация этих систем в виде наборов относительно небольшихи легко заменяемых или адаптируемых компонентов. Это предполагает необходимость определения не только интерфейсов верхнего уровня, с которыми работают пользователи и приложения, но также PI интерфейсов внутренних модулейсистемы и описания взаимодействия этих модулей. Этот подход относительномолод.
Множество старых и современных систем создавались цельными так, чтокомпоненты одной гигантской программы разделялись только логически. В случае использования этого подхода независимая замена или адаптация компонентов, не затрагивающая систему в целом, была почти невозможна. Монолитныесистемы вообще стремятся скорее к закрытости, чем к открытости.Необходимость измененрш в распределенных системах часто связана с тем,что компонент не оптимальным образом соответствует нуждам конкретного пользователя или приложения. Так, например, рассмотрим кэширование в WorldWide Web.
Браузеры обычно позволяют пользователям адаптировать правилакэширования под их нужды путем определения размера кэша, а также того, должен ли кэшируемый документ проверяться на соответствие постоянно или толькоодин раз за сеанс. Однако пользователь не может воздействовать на другие параметры кэширования, такие как длительность сохранения документа в кэше илиочередность удаления документов из кэша при его переполнении. Также невозможно создавать правила кэширования на основе содержимого документа.
Так, например, пользователь может пожелать кэшировать железнодорожные расписания,которые редко изменяются, но никогда — информацию о пробках на улицах города.Нам необходимо отделить правила от механизма. В случае кэширования в Web,например, браузер в идеале должен предоставлять только возможности длясохранения документов в кэше и одновременно давать пользователям возможность решать, какие документы и насколько долго там хранить. На практике этоможет быть реализовано предоставлением большого списка параметров, значения которых пользователь сможет (динамически) задавать.
Еще лучше, если пользователь получит возможность сам устанавливать правила в виде подключаемыхк браузеру компонентов. Разумеется, браузер должен понимать интерфейс этихкомпонентов, поскольку ему нужно будет, используя этот интерфейс, вызыватьпроцедуры, содержащиеся в компонентах.1.2.4. МасштабируемостьПовсеместная связь через Интернет быстро стала таким же обычным делом, каквозможность послать кому угодно в мире письмо по почте.
Помня это, мы гово-32Глава 1. Введениерим, что масштабируемость — это одна из наиболее важных задач при проектировании распределенных систем.Масштабируемость системы может измеряться по трем различным показателям [314]. Во-первых, система может быть масштабируемой по отношению к ееразмеру, что означает легкость подключения к ней дополнительных пользователей и ресурсов. Во-вторых, система может масштабироваться географически, тоесть пользователи и ресурсы могут быть разнесены в пространстве.
В-третьихсистема может быть масштабируемой в адмиршстративном смысле, то есть бытьпроста в управлении при работе во множестве административно независимыхорганизаций. К сожалению, система, обладающая масштабируемостью по одному или нескольким из этих параметров, при масштабировании часто дает потерюпроизводительности.Проблемы масштабируемостиЕсли система нуждается в масштабировании, необходимо решить множество разнообразных проблем. Сначала рассмотрим масштабирование по размеру.
Есливозникает необходимость увеличить число пользователей или ресурсов, мы нередко сталкиваемся с ограничениями, связанными с централизацией служб, данных и алгоритмов (табл. 1.2). Так, например, многие службы централизуются потому, что при их реализации предполагалось наличие в распределенной системетолько одного сервера, запущенного на конкретной машине. Проблемы такойсхемы очевидны: при увеличении числа пользователей сервер легко может статьузким местом системы.
Даже если мы обладаем фактически неограниченным запасом по мощности обработки и хранения данных, ресурсы связи с этим сервером в конце концов будут исчерпаны и не позволят нам расти дальше.Т а б л и ц а 1 . 2 . Примеры ограничений масштабируемостиКонцепцияПримерЦентрализованные службыОдин сервер на всех пользователейЦентрализованные данныеЕдиный телефонный справочник, доступныйв режиме подключенияЦентрализованные алгоритмыОрганизация маршрутизации на основе полнойинформацииК сожалению, Р1Спользование единственного сервера время от времени неизбежно.
Представьте себе службу управления особо конфиденциальной информацией, такой как истории болезни, банковские счета, кредиты и т. п. В подобныхслучаях необходимо реализовывать службы на одном сервере в отдельной хорошо заш;ищенной комнате и отделять их от других частей распределенной системы посредством специальных сетевых устройств. Копирование информации, содержащейся на сервере, в другие места для повышения производительностидаже не обсуждается, поскольку это сделает службу менее стойкой к атакам злоумышленников.Централизация данных так же вредна, как и централизация служб. Как выбудете отслеживать телефонные номера и адреса 50 миллионов человек? Пред-1.2. Задачи33положим, что каждая запись укладывается в 50 символов.
Необходимой емкостью обладает один 2,5-гигабайтный диск. Но и в этом случае наличие единойбазы данных несомненно вызовет перегрузку входящих и исходящих линий связи. Так, представим себе, как работал бы Интернет, если бы служба доменныхимен (DNS) была бы реализована в виде одной таблицы. DNS обрабатывает информацию с миллионов компьютеров во всем мире и предоставляет службу, необходимую для определения местоположения web-серверов. Если бы каждый запрос на интерпретацию URL передавался бы на этот единственный DNS-сервер,воспользоваться Web не смог бы никто (кстати, предполагается, что эти проблемы придется решать снова).И наконец, централизация алгоритмов — это тоже плохо.
В больших распределенных системах гигантское число сообщений необходимо направлять по множеству каналов. Теоретически для вычисления оптимального пути необходимополучить полную информацию о загруженности всех машин и линий и по алгоритмам из теории графов вычислить все оптимальные маршруты. Эта информация затем должна быть раздана по системе для улучшения маршрутизации.Проблема состоит в том, что сбор и транспортргровка всей информации тудасюда — не слишком хорошая идея, поскольку сообщения, несущие эту информацию, могут перегрузить часть сети.