Файл: Определение и задачи распределенной системы.pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 29.06.2023

Просмотров: 127

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Во второй главе будут рассматриваться эти важные задачи распределенной системы.

2.1 Прозрачность

Две первые описанные задачи решаются, посредством прозрачности доступа к данным системы. Распределенная система должна связывать пользователей с ресурсами, как с компонентами аппаратного обеспечения вычислительной системы, так и с программными абстракциями [2, стр.12].

Рас­пределенные системы, которые представляются пользователям и приложениям в виде единой компьютерной системы, называются прозрачными (transparent) [1, стр. 26]. Посредством прозрачности скрывается сама распределенная природа системы.

Существуют различные формы прозрачности:

  1. Прозрачность доступа – доступ к локальным и удаленным ресурсам осуществляется посредствам одинаковых вызовов вне зависимости от способа доступа и внутреннего представления данных. Разница в архитектуре вычислительных платформ должна быть скрыта от пользователя, но, что более важно, достигается соглашение о том, как ресурсы разнородных машин, будут представляться пользователям распределенной системы [2, стр. 14].
  2. Прозрачность местоположения ресурсов – скрывает от пользователя, где именно физически расположен в системе нужный ему ресурс. Важную роль здесь играет наименование ресурсов. Так, прозрачность местоположения может быть достигнута путем присвоения ресур­сам только логических имен, то есть таких имен, в которых не содержится зако­дированных сведений о местоположении ресурса [1, стр. 27]. Примером такого логического имени может служить универсальный указатель ресурса URL, в котором не содержится информации о том, где именно расположен файл, который находиться в Интернете.
  3. Прозрачность переноса – смена местоположения ресурса или процесса остается незаметной для пользователя распределенной системы и не влияет на доступ к ним.
  4. Прозрачность смены местоположения – по своему принципу похоже на прозрачность переноса, но в этом случае происходит незаметное перемещение ресурса или процесса в другое место непосредственно в процессе использования [2, стр.14, 15].
  5. Прозрачность репликации - позволяет скрыть тот факт, что ресурс размножен по нескольким физическим адресам. Для скрытия факта репликации от пользователей необходимо, чтобы все реплики имели одно и то же имя. Соответственно, система должна поддерживать и прозрачность место­положения, поскольку иначе невозможно будет обращаться к репликам без ука­зания их истинного местоположения [3, стр. 7].
  6. Прозрачность параллельного доступа - возможность нескольким процессам параллельно работать с ресурсами и выполнять операции над ними, не оказывая влияния друг на друга. Парал­лельный доступ к совместно используемому ресурсу сохраняет этот ресурс в не­ противоречивом состоянии. Непротиворечивость может быть обеспечена механизмом блокировок, когда пользователи, каждый по очереди, получают исключительные права на запрашиваемый ресурс. Более изощренный вариант — использование транзакций [1, стр. 28].
  7. Прозрачность отказов – сокрытие системой того, что происходили сбои в других аппаратных или программных компонентах системы, а также факт восстановления после сбоев. Основная трудность заключается в том, чтобы отличить неработоспособные ресурсы от медленно работающих.
  8. Прозрачность сохранности – скрывает, где храниться программный ресурс: на диске или в оперативной памяти.

Прозрачность распределенной системы имеет большое значение для должного использования распределенных ресурсов. Однако, степень, до которой каждый из перечисленных видов прозрачности может быть выполнен, зависит от задач построения и производительности системы. Ведь не каждая система в состоянии полностью скрыть распределение процессов, да и встречаются такие ситуации, когда скрыть от пользо­вателя всякую распределённость не слишком разумно. В связи с этим, в книге Таненбаума и ван Стеена, делается следующий вывод: «Достижение прозрачности распреде­ления — это разумная цель при проектировании и разработке распределенных систем, но она не должна рассматриваться в отрыве от других характеристик системы, например производительности» [1, стр.29, 30].

2.2 Открытость

Открытой может быть названа любая система (компьютер, вычислительная сеть, ОС, программный пакет, другие аппаратные и программные продукты), которая построена в соответствии с открытыми спецификациями, то есть формализованным описанием аппаратных или программных компонентов, способов их функционирования, взаимодействия с другими компонентами, условий эксплуатации, особых характеристик [10, стр. 124].

Для распределенных систем открытость очень важна. Задача открытости не может быть выполнена, если ключевые интерфейсы, через которые определяются службы, входящие в систему, не известны и не описаны. Если же интерфейсы внутренних компонентов системы описаны правильно, появляется возмож­ность совместной работы произвольного процесса, нуждающегося в таком интер­фейсе, с другим произвольным процессом, предоставляющим этот интерфейс. Один и тот же интерфейс может быть также реализован в разных распределенных системах, но работать обе системы будут одинаково [3, стр. 8].

Открытые распределенные системы должны обладать такими свойствами, как:

- Интероперабельность, или способность к взаимодействию характеризует, насколько две реализации систем или компонентов от разных производителей в состоянии совместно работать, полага­ясь только на то, что службы каждой из них соответствуют общему стандарту [1, стр.30].

- Переносимость характеризует то, насколько приложение, разрабо­танное для одной распределенной системы, может без изменений работать в другой рас­пределенной системе, реализуя те же интерфейсы.

- Гибкость характеризует легкость конфигурирования системы, состоящей из разных компонентов: аппаратного и программного обеспечения. При этом добавление новых компонентов или замена существующих может осуществляться относительно легко, не затрагивая другие. На аппаратном уровне это выражается в способности простого подключения к системе дополнительных компьютеров или замены существующих на более мощные. На программном уровне – в возможности простого внедрения новых служб или новых реализаций уже существующих [2, стр. 17].


Таким образом, открытость гарантирует расширяемость распределенной системы.

2.3 Масштабируемость

Масштабируемость означает, что сеть позволяет наращивать количество узлов протяженность связей в очень широких пределах, при этом производительность сети не снижается и не увеличивается административная нагрузка на ее управление [10, стр. 180]. То есть, чем больше нагрузки на сеть, тем больше она должна расти.

Масштабируемость может производиться по различным направлениям.

Легкость подключения к системе дополнительных ресурсов и пользователей говорит о ее масштабируемости по размеру. Когда пользователи и ресурсы распределены территориально в пространстве, система масштабируема географически. Если система легко работает во множестве различных административно независимых организациях, но она масштабируема в административном смысле [1, стр. 32].

В каждом направлении есть свои сложности осуществления масштабируемости. При масштабируемости по размеру системы возникают некоторые проблемы и ограничения:

- Централизация служб. Использование единственного сервера, что может быть необходимо для хранения конфиденциальных данных, может привести к тому, что при увеличении числа пользователей сервер легко может стать узким местом системы и будет ограничивать ее производительность.

- Централизация данных. Требует централизованной обработки, что может вызвать перегрузку системы.

- Централизация алгоритмов.  В больших системах большое число сообщений необходимо направлять по множеству каналов. Требует передачи информации, собираемой со всей сети, на одну из ее машин для обработки с последующей раздачей результатов, что перегружает систему [2, стр. 19].

Для разрешения данных ограничений используются децентрализованные, или распределенные алгоритмы. Эти алгоритмы обладают свойствами: ни одна из машин не обладает полной информацией о состоянии системы; машины принимают решения на основе локальной информации; сбой на одной машине не вызывает нарушения алгоритма; не требуется предположения о существовании единого времени [1, стр. 33].

При обеспечении географической масштабируемости, возникает проблема неэффективной синхронной связи в локальных сетях и блокировки доступа к общим ресурсам.

Для решения этих проблем используются технологии масштабирования:

  1. Распределение. Предполагает разбиение компонентов и ресурсов на мелкие части и по­следующее разнесение этих частей по системе.
  2. Репликация. Создание копии ре­сурса, обычно в непосредственной близости от клиента, использующего этот ре­сурс. Помогает балансировать нагрузку между компонентами системы, тем самым увеличивая производительность.
  3. Кэширование. В отличие от репликации, кэширование – это действие, предпринимаемое со стороны клиента, а не сервера. Кэширование призвано не только снижать нагрузку на компоненты распределенной системы, но и позволяет скрывать от пользователя задержки коммуникации при обращении к удаленным ресурсам. [2, стр. 22] 

Однако, при использовании репликации и кэширования следует помнить, что необходимо избегать противоречивости копий, что может отрицательно влиять на масштабируемость распределенной системы. Поэтому вопросы практической реализации масштабируемости должны рассматриваться вместе с другими требованиями, такими как безопасность и производительность [1, стр. 37].

2.4 Управляемость

Управляемость сети подразумевает возможность централизованно контролировать состояние основных элементов сети, выявлять и разрешать проблемы, возникающие при работе сети, анализировать производительность и планировать развитие сети [10, стр. 182].

Управляемость предполагает наличие в сети некоторых автоматизированных средств администрирования. Эти средства выполняют ряд задач. Во-первых, они обеспечивают наблюдение и, в случае необходимости, решение разного рода проблем, возникающих в процессе действия системы, а также уведомляют администраторов о том, какие действия по решению проблемы были осуществлены. Во-вторых, система администрирования производит накопление данных, с помощью которых будет планироваться дальнейшее развитие сети. В-третьих, такая система должна обладать независимостью и отдаленностью от производителя, а также обеспечивать удобный интерфейс.

Необходимость хорошей управляемости особенно выражена в распределенных системах, поскольку без общей системы администрирования требовалось бы присутствие множества специалистов по эксплуатации при каждой удаленной машине во многих территориально разрозненных пространствах. В итоге, это привело бы к необходимости содержания огромного штата обслуживающего персонала [10, стр. 182].

. Для обеспечения управляемости системы необходимо рассмотреть вопросы простоты диагностики и понимания возникающих проблем, легкости проведения обновлений или модификации, прихотливости системы в эксплуатации. 

2.5 Отказоустойчивость

Под отказоустойчивостью системы понимают обеспечение задачи, которая позволит системе работать даже при выходе из строя некоторых ее элементов, то есть при частичном отказе.

При создании распределенной системы очень важно добиться, чтобы она мог­ла автоматически восстанавливаться после частичных отказов, незначительно снижая при этом общую производительность. В частности, когда бы ни случился отказ, распределенная система в процессе восстановления должна продолжать работать приемлемым образом, то есть быть устойчивой к отказам, сохраняя в случае отказов определенную степень функциональности [1, стр. 403].


Существуют разные виды отказов системы, которые являются причинами ошибок. Если отказ происходит однократно и при повторении данной операции больше не возникает, его считают проходным. Если же отказы то появляются, то исчезают, то она называются перемежающимися. Постоянные отказы продолжаются до тех пор, пока поврежденная часть системы не будет исправлена.

Отказоустойчивость системы достигается за счет избыточности. В этом случае распределенная система пытается скрывать факты отказов или ошибок в одних процессах от других процессов [2, стр. 13].

Возможно применение трех видов избыточности. В случае информационной избыточности к со­общению добавляются дополнительные биты, по которым можно произвести исправление сбойных битов. При временной избыточности уже выполненное действие при необходимости осуществляется еще раз. Временная избыточность особенно полезна, когда происходят проходные или перемежающиеся отказы. В случае физической избыточности, в систему добавляется дополнительное оборудование (аппаратная избыточность) или процессы (программная избыточность), которые делают возможной работу системы при ут­рате или неработоспособности некоторых компонентов. Физическая избыто­чность, таким образом, может быть как аппаратной, так и программной и применяется сегодня довольно часто [1, стр. 408, 409].

Для того, чтобы избежать последствия отказа, несколько идентичных процессов объединяются в группы. Основное свойство всех подобных групп состоит в том, что когда сообщение посылается группе, его получают все члены этой группы. Таким образом, если один из процессов группы перестает ра­ботать, можно надеяться на то, что его место займет другой.

Существует несколько способов восстановления системы после ошибок. Первый заключается в возвращении текущего состояния безошибочности и называется обратным исправлением. Для этого необходимо часто записывать текущее безошибочное состояние системы и восстанавливать ее в предыдущем состоянии. При каждой такой записи состояния системы или ее части создается контрольная точка. Для повышения производительности множество распределенных систем сочетают контрольные точки с протоколиро­ванием сообщений. Благодаря протоколированию взаимодействия между про­цессами после отказа системы можно воспроизвести ход ее функционирования [1, стр. 445].

Другим вариантом исправления ошибок является прямое исправление. При появление в системе ошибочного состояния вместо отката на­зад, к предыдущей контрольной точке, система переводится в но­вое корректное состояние, в котором она могла бы продолжать работать. Но для такого метода было бы необходимо знать заранее о появлении ошибок, что делает его трудно осуществимым [15, стр. 157, 158].