Э. Таненбаум, М. ван Стеен - Распределённые системы (принципы и парадигмы) (1162619), страница 8
Текст из файла (страница 8)
Для большинствапользователей Web представляется гигантской информационной системой документооборота, в которой каждый документ имеет свое уникальное имя — URL.1.2. Задачи37Концептуально можно предположить даже, что все документы размещаются наодном сервере. Однако среда Web физически разнесена по множеству серверов,каждыр! из которых содержит некоторое количество документов. Имя сервера,содержащего конкретный документ, определяется по URL-адресу документа.Только благодаря подобному распределению документов Всемирная паутинасмогла вырасти до ее современных размеров.Области деятельностиСтраныРис.
1.3. Пример разделения пространства DNS-имен на зоныПри рассмотрении проблем масштабирования, часто проявляющихся в виде падения производительности, нередко хорошей идеей является репликация {replication) компонентов распределенной системы. Репликация не только повышаетдоступность, но и помогает выровнять загрузку компонентов, что ведет к повышению производительности. Кроме того, в сильно географически рассредоточенных системах наличие близко лежащей копии позволяет снизить остроту большей части ранее обсуждавшихся проблем ожидания завершения связи.Кэширование {caching) представляет собой особую форму репликации, причем различия между ними нередко малозаметны или вообще искусственны.
Каки в случае репликации, результатом кэширования является создание копии ресурса, обычно в непосредственной близости от клиента, использующего этот ресурс. Однако в противоположность репликации кэширование — это действие,предпринимаемое потребителем ресурса, а не его владельцем.На масштабируемость может плохо повлиять один существенный недостатоккэширования и репликации. Поскольку мы получаем множество копий ресурса,модификация одной копии делает ее отличной от остальных. Соответственно,кэширование и репликация вызывают проблемы непротиворечивости {consistency).Допустимая степень противоречивости зависит от степени загрузки ресурсов.Так, множество пользователей Web считают допустимым работу с кэшированным документом через несколько минут после его помещения в кэш без дополнительной проверки.
Однако существует множество случаев, когда необходимо38Глава 1. Введениегарантировать строгую непротиворечивость, например, при игре на электроннойбирже. Проблема строгой непротиворечивости состоит в том, что изменениев одной из копий должно немедленно распространяться на все остальные. Крометого, если два изменения происходят одновременно, часто бывает необходимо,чтобы эти изменения вносились в одном и том же порядке во все копии. Для обработки ситуаций такого типа обычно требуется механизм глобальной синхронизации. К сожалению, реализовать масштабирование подобных механизмовкрайне трудно, а может быть и невозможно.
Это означает, что масштабированиепутем репликации может включать в себя отдельные немасштабируемые решения. Мы вернемся к вопросам репликации и непротиворечивости в главе 6.1.3. Концепции аппаратных решенийНесмотря на то что все распределенные системы содержат по нескольку процессоров, существуют различные способы их организации в систему. В особенностиэто относится к вариантам их соединения и организации взаимного обмена.В этом разделе мы кратко рассмотрим аппаратное обеспечение распределенныхсистем, в частности варианты соединения машин между собой.
Предметом нашего обсуждения в следуюш.ем разделе будет программное обеспечение распределенных систем.За прошедшие годы было предложено множество различных схем классификации компьютерных систем с несколькими процессорами, но ни одна из них нестала действительно популярной и широко распространенной. Нас интересуютисключительно системы, построенные из набора независимых компьютеров. Нарис.
1.4 мы подразделяем все компьютеры на две группы. Системы, в которыхкомпьютеры используют память совместно, обычно называются мультипроцессорами {multiprocessors), а работающие каждый со своей памятью — мультикомпьютерами (muldcomputers). Основная разница между ними состоит в том, чтомультипроцессоры имеют единое адресное пространство, совместно используемое всеми процессорами. Если один из процессоров записывает, например, значение 44 по адресу 1000, любой другой процессор, который после этого прочтетзначение, лежащее по адресу 1000, получит 44.
Все машины задействуют однуи ту же память.В отличие от таких машин в мультикомпьютерах каждая машина используетсвою собственную память. После того как один процессор запишет значение 44по адресу 1000, другой процессор, прочитав значение, лежащее по адресу 1000,получит то значение, которое хранилось там раньше. Запись по этому адресузначения 44 другим процессором никак не скажется на содержимом его памяти.Типичный пример мультикомпьютера — несколько персональных компьютеров,объединенных в сеть.Каждая из этих категорий может быть подразделена на дополнительные категории на основе архитектуры соединяющей их сети. На рис.
1.4 эти две архитектуры обозначены как шинная (bus) и коммутируемая (switched). Под шиной понимается одиночная сеть, плата, шина, кабель или другая среда, соединяющая1.3. Концепции аппаратных р е ш е н и й39все машины между собой. Подобную схему использует кабельное телевидение:кабельная компания протягивает вдоль улицы кабель, а всем подпрючикам делаются отводки от основного кабеля к их телевизорам.Разделяемая памятьЛокальная памятьЩм\"м!^•^п"^П"^JL XPJpjXРJLрv1ёгрXм1и^рр\м^рт т т^m ш щ^ЙС\РIPПроцессор[р2т1р^ирр\м \^Sр\^[р^^ПамятьРис. 1.4.
Различные базовые архитектуры процессоров и памятираспределенных компьютерных системКоммутируемые системы, в отличие от шинных, не имеют единой магистрали,такой как у кабельного телевидения. Вместо нее от машины к машине тянутсяотдельные каналы, выполненные с применением различных технологий связи.Сообщения передаются по каналам с принятием явного решения о коммутациис конкретным выходным каналом для каждого из них. Так организована глобальная телефонная сеть.Мы проведем также разделение распределенных компьютерных систем нагомогенные (homogeneous) и гетерогенные (heterogeneous).
Это разделение применяется исключительно к мультикомпьютерным системам. Для гомогенных мультикомпьютерных систем характерна одна соединяющая компьютеры сеть, использующая единую технологию. Одинаковы также и все процессоры, которыев основном имеют доступ к одинаковым объемам собственной памяти. Гомогенные мультикомпьютерные системы нередко используются в качестве параллельных (работающих с одной задачей), в точности как мультипроцессорные.В отличие от них гетерогенные мультикомпьютерные системы могут содержать целую гамму независимых компьютеров, соединенных разнообразными сетями.
Так, например, распределенная компьютерная система может быть построена из нескольких локальных компьютерных сетей, соединенных коммутируемоймагистралью FDDI или ATM.40Глава 1. ВведениеВ следующих трех пунктах мы кратко рассмотрргм мультипроцессорные, а также гомогенные и гетерогенные мультикомпьютерные системы. Несмотря на то,что эти вопросы не связаны напрямую с нашей основной темой, распределенными системами, они помогают лучше ее понять, поскольку организация распределенных систем часто зависит от входящей в их состав аппаратуры.1.3.1. МультипроцессорыМультипроцессорные системы обладают одной характерной особенностью: всепроцессоры имеют прямой доступ к общей памяти.
Мультипроцессорные системы шинной архР1тектуры состоят из некоторого количества процессоров, подсоединенных к общей шине, а через нее — к модулям памяти. Простейшая конфигурация содержит плату с шиной или материнскую плату, в которую вставляютсяпроцессоры и модули памяти.Поскольку используется единая память, когда процессор Л записывает словов память, а процессор В микросекундой позже считывает слово из памяти, процессор В получает информацию, записанную в память процессором А.
Память,обладающая таким поведением, называется согласованной (coherent). Проблематакой схемы состоит в том, что в случае уже 4 или 5 процессоров шина оказывается стабильно перегруженной и производительность резко падает. Решение состоит в размещении между процессором и шиной высокоскоростной кэш-памяти(cache memory), как показано на рис. 1.5.
В кэше сохраняются данные, обращениек которым происходит наиболее часто. Все запросы к памяти происходят черезкэш. Если запрошенные данные находятся в кэш-памяти, то на запрос процессора реагирует она и обращения к шине не выполняются. Если размер кэш-памятидостаточно велик, вероятность успеха, называемая также коэффициентом кэшпопаданий (hit rate), велика и шинный трафик в расчете на один процессор резкоуменьшается, позволяя включить в систему значительно больше процессоров.Общепринятыми являются размеры кэша от 512 Кбайт до 1 Мбайт, коэффициент кэш-попаданий при этом обычно составляет 90 % и более.ПроцессорКш 1ПроцессорПроцессорКош'ПамятьXШинаРис. 1.5. Мультипроцессорная системас шинной архитектуройОднако введение кэша создает серьезные проблемы само по себе.
Предположим, что два процессора, Л и В, читают одно и то же слово в свой внутреннийкэш. Затем Л перезаписывает это слово. Когда процессор В в следующий раз захочет воспользоваться этим словом, он считает старое значение из своего кэша,а не новое значение, записанное процессором А. Память стала несогласованной,и программирование системы осложнилось.