Э. Таненбаум, М. ван Стеен - Распределённые системы (принципы и парадигмы), страница 7
Описание файла
PDF-файл из архива "Э. Таненбаум, М. ван Стеен - Распределённые системы (принципы и парадигмы)", который расположен в категории "". Всё это находится в предмете "распределенные операционные системы" из 8 семестр, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .
Просмотр PDF-файла онлайн
Текст 7 страницы из PDF
Фактически следует избегать любого алгоритма, который требует передачи информации, собираемой со всей сети, на однуиз ее машин для обработки с последующей раздачей результатов. Использоватьследует только децентрализованные алгоритмы. Эти алгоритмы обычно обладают следующими свойствами, отличающими их от централизованных алгоритмов:4- ни одна из машин не обладает полной информацией о состоянии системы;4- машины принимают решения на основе локальной информации;-¥ сбой на одной машине не вызывает нарушения алгоритма;4 не требуется предположения о существовании единого времени.Первые три свойства поясняют то, о чем мы только что говорили.
Последнее,вероятно, менее очевидно, но не менее важно. Любой алгоритм, начинающийсясо слов: «Ровно в 12:00:00 все машины должны определить размер своих входных очередей», работать не будет, поскольку невозможно сршхронизировать всечасы на свете. Алгоритмы должны принимать во внимание отсутствие полнойсинхронизации таймеров. Чем больше система, тем большим будет и рассогласование.
В одной локальной сети путем определенных усилий можно добиться, чтобы рассинхронизация всех часов не превышала нескольких миллисекунд, но сделать это в масштабе страны или множества стран? Вы, должно быть, шутите.У географической масштабируемости имеются свои сложности. Одна из основных причин сложности масштабирования существующих распределенныхсистем, разработанных для локальных сетей, состоит в том, что в их основе лежит принцип синхронной связи (synchronous communication). В этом виде связизапрашивающий службу агент, которого принято называть клиентом (client),блокируется до получения ответа.
Этот подход обычно успешно работает в локальных сетях, когда связь между двумя машинами продолжается максимум сотнимикросекунд. Однако в глобальных системах мы должны принять во внимание34Глава 1. Введениетот факт, что связь между процессами может продолжаться сотни миллисекунд,то есть на три порядка дольше. Построение интерактивных приложений с использованием синхронной связи в глобальных системах требует большой осторожности (и немалого терпения).Другая проблема, препятствующая географическому масштабированию, состоит в том, что связь в глобальных сетях фактически всегда организуется отточки к точке и потому ненадежна. В противоположность глобальным, локальные сети обычно дают высоконадежную связь, основанную на широковещательной рассылке, что делает разработку распределенных систем для них значительнопроще. Для примера рассмотрим проблему локализации службы.
В локальнойсети система просто рассылает сообщение всем машинам, опрашивая их на предмет предоставления нужной службы. Машины, предоставляющие службу, отвечают на это сообщение, указывая в ответном сообщении свои сетевые адреса.Невозможно представить себе подобную схему определения местоположенияв глобальной сети. Вместо этого необходимо обеспечить специальные места длярасположения служб, которые может потребоваться масштабировать на весь мири обеспечить их мощностью для обслуживания миллионов пользователей. Мывернемся к подобным службам в главе 4.Географическая масштабируемость жестко завязана на проблемы централизованных решений, которые мешают масштабированию по размеру.
Если у насимеется система с множеством централизованных компонентов, то понятно, чтогеографическая масштабируемость будет ограничиваться проблемами производительности и надежности, связанными с глобальной связью. Кроме того, централизованные компоненты в настоящее время легко способны вызвать перегрузку сети. Представьте себе, что в каждой стране существует всего однопочтовое отделение.
Это будет означать, что для того, чтобы отправить письмародственникам, вам необходимо отправиться на центральный почтамт, расположенный, возможно, в сотнях миль от вашего дома. Ясно, что это не тот путь, которым следует идти.И, наконец, нелегкий и во многих случаях открытый вопрос, как обеспечитьмасштабирование распределенной системы на множество административно независимых областей. Основная проблема, которую нужно при этом решить, состоит в конфликтах правил, относящихся к использованию ресурсов (и плате заних), управлению и безопасности.Так, множество компонентов распределенных систем, находящихся в однойобласти, обычно может быть доверено пользователям, работающим в этой области. В этом случае системный администратор может тестировать и сертифицировать приложения, используя специальные инструменты для проверки того факта, что эти компоненты не могут ничего натворить.
Проще говоря, пользователидоверяют своему системному администратору. Однако это доверие не распространяется естественным образом за границы области.Если распределенные системы распространяются на другую область, могутпотребоваться два типа проверок безопасности. Во-первых, распределенная система должна противостоять злонамеренным атакам из новой области. Так, например, пользователи новой области могут получить ограниченные права досту-1.2. Задачи35па к файловой службе системы в исходной области, скажем, только на чте1Н1е.Точно так же может быть закрыт доступ чужих пользователей и к аппаратуре,такой как дорогостоящие полноцветные устройства печати или высокопроизводительные компьютеры.
Во-вторых, новая область сама должна быть защищенаот злонамеренных атак из распределенной системы. Типичным примером является загрузка по сети программ, таких как апплеты в web-браузерах. Изнача/гьноновая область не знает, чего ожидать от чужого кода, и потому строго ограничивает ему права доступа. Проблема, как мы увидим в главе 8, состоит в том, какобеспечить соблюдение этих ограничений.Технологии масштабированияОбсуждение некоторых проблем масштабирования приводит нас к вопросу о том,а как же обычно решаются эти проблемы. Поскольку проблемы масштабируемости в распределенных системах, такие как проблемы производительности, вызываются ограниченной мощностью серверов и сетей, существуют три основныетехнологии масштабирования: сокрытие времени ожидания связи, распределение и репликация [314].Сокрытие времени ожидания связи применяется в случае географическогомасштабирования. Основная идея проста: постараться по возможности избежатьожидания ответа на запрос от удаленного сервера.
Например, если была запрошена служба удаленной машины, альтернативой ожиданию ответа от сервера будет осуществление на запрашивающей стороне других возможных действий.В сущности, это означает разработку запрашивающего приложения в расчете наиспользование исключительно асинхронной связи (asinch?vnous communication).Когда будет получен ответ, приложение прервет свою работу и вызовет специальный обработчик для завершения отправленного ранее запроса. Асинхроннаясвязь часто используется в системах пакетной обработки и параллельных приложениях, в которых во время ожидания одной задачей завершения связи предполагается выполнение других более или менее независимых задач. Для осуществления запроса может быть запущен новый управляющий поток выполнения.Хотя он будет блокирован на время ожргдания ответа, другие потоки процессапродолжат свое выполнение.Однако многие приложения не в состоянии эффективно использовать асинхронную связь.
Например, когда в интерактивном приложении пользователь посылает запрос, он обычно не в состоянии делать ничего более умного, чем простождать ответа. В этих случаях наилучшим решением будет сократить необходимый объем взаимодействия, например, переместив часть вычислений, обычновыполняемых на сервере, на клиента, процесс которого запрашивает службу.Стандартный случай применения этого подхода — доступ к базам данных с использованием форм. Обычно заполнение формы сопровождается посылкойотдельного сообщения на каждое поле и ожиданием подтверждения приема отсервера, как показано на рис. 1.2, а. Сервер, например, может перед приемом введенного значения проверить его на синтаксические ошибки. Более успешное решение состоит в том, чтобы перенести код для заполнения формы и, возможно,проверки введенных данных на клиента, чтобы он мог послать серверу целиком36Глава 1.
Введениезаполненную форму (рис. 1.2, б). Такой подход — перенос кода на клиента в настоящее время широко поддерживается в Web посредством Java-апплетов.КлиентИмяФамилияE-mailСервершш-MAARTEN1VAN STEEN~]STEEN@CS.VU.NL |[Щ]шШШ-Проверка формыКлиентИмяФамилияE-mailLMAARTEN1СерверMAARTENVAN STEENSTEEN@CS.VU.NLL VAN STEEN1— •|STEEN@CS.VU.NL |miОбработка формы^Проверка формыОбработка формыРис.
1.2. Разница между проверкой формы по мере заполнения на сервере (а)и на клиенте (б)Следующая важная технология масштабирования — распределение (distribution). РаспределенР1е предполагает разбиение компонентов на мелкие части и последующее разнесение этих частей по системе. Хорошим примером распределения является система доменных имен Интернета (DNS). Пространство DNS-именорганр1зовано иерархически, в виде дерева доменов {domains), которые разбитына неперекрывающиеся зоны {zones), как показано на рис.
1.3. Имена каждой зоны обрабатываются одним сервером имен. Не углубляясь чересчур в детали,можно считать, что каждое доменное имя является именем хоста в Интернете иассоциируется с сетевым адресом этого хоста. В основном интерпретация имениозначает получение сетевого адреса соответствующего хоста. Рассмотрим, к npiiмеру, имя nl.vu.cs.flits. Для интерпретации этого имени оно сначала передается насервер зоны Z1 (рис. 1.3), который возвращает адрес сервера зоны 12, который,вероятно, сможет обработать остаток именрг, vu.cs.flits. Сервер зоны Z2 вернет адрессервера зоны Z3, который способен обработать последгпою часть имени и вернуть адрес соответствующего хоста.Эти примеры демонстрируют, как служба именования, предоставляемая DNS,распределена по нескольким машинам и как это позволяет избежать обработкивсех запросов на интерпретацию ршен одним сервером.В качестве другого примера рассмотрим World Wide Web.