Сервисное ПО в распределенных системах

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ АВТОНОМНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ

ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ

«ЮЖНЫЙ ФЕДЕРАЛЬНЫЙ УНИВЕРСИТЕТ»

ИНСТИТУТ ЭКОНОМИКИ И ВНЕШНЕЭКОНОМИЧЕСКИХ СВЯЗЕЙ

ЭКОНОМИЧЕСКИЙ КОЛЛЕДЖ

 

 

 

 

 

 

 

 

Курсовая работа

По дисциплине: «Разработка и Эксплуатация АИС»

На тему: «Сервисное ПО в распределенных системах»

 

 

 

 

 

 

 

 

 

Выполнил:

Студент Группы АСУ-3

Стремоухов Д. А.

 

Научный руководитель:

Бордюгова Т.Н.

 

 

 

 

 

 

 

 

Ростов-на-Дону

2013

Содержание

 

Введение ………………………………………………………………………………………………………..3

Глава 1. Распределенные Системы Данных.

    1. Определение  распределенных систем…………………………………………………..5
    2. Основные требования к распределенным системам……………………………..8
      1. Прозрачность...............................................................................10-12
      2. Открытость...................................................................................12-13
      3. Масштабируемость.....................................................................13-14
    3. Логические программные слои распределенных систем...................14-16

Глава 2. Распределенные вычислительные системы Boinc и Grid

2.1. История развития Распределенных  Вычислений..................................16-19

2.2. Grid-системы...................................................................................................19

2.2.1. Концепция  грид……………………………………………………………………………...19

2.2.2. Обзор………………………………………………………………………………………....19-20

2.2.3. Сравнение  грид-систем и обычных суперкомпьютеров.................20

2.2.4. История...........................................................................................20-22

2.2.5. Типы  GRID-систем...............................................................................22

2.3. BOINC..............................................................................................................22

2.3.1. Описание........................................................................................22-23

2.3.2. Серверная  часть BOINC..................................................................23-24

2.3.3. Организация  проектов.......................................................................24

2.3.4. Использование BOINC...................................................................24-27

2.3.5. Установка  и настройка клиента BOINC.........................................27-29

2.3.6. Затраты  электроэнергии.....................................................................29

Заключение ……………….…………………………………………………………………………….29-30

Приложения....................................................................................................31

Список Литературы ………………………………………………………………………………………31

 

 

 

 

 

Введение

Компьютерные системы претерпевают революцию. С 1945 года, когда началась эпоха современных компьютеров, до приблизительно 1985 года компьютеры были большими и дорогими. Даже мини-компьютеры стоили сотни тысяч долларов. В результате большинство организаций имели в лучшем случае лишь несколько компьютеров, и, поскольку методы их соединения отсутствовали, эти компьютеры работали независимо друг от друга.

          Однако в середине восьмидесятых под воздействием двух технологических новинок ситуация начала меняться. Первой из этих новинок была разработка мощных микропроцессоров. Изначально они были 8-битными, затем стали доступны 16-, 32- и 64-битные процессоры. Многие из них обладали вычислительной мощностью мэйнфреймов (то есть больших компьютеров), но лишь частью их цены.

          Скорость роста, наблюдавшаяся в компьютерных технологиях в последние полвека, действительно потрясает. Ей нет прецедентов в других отраслях. От машин, стоивших 100 миллионов долларов и выполнявших одну команду в секунду, мы пришли к машинам, стоящим 1000 долларов и выполняющим 10 миллионов команд в секунду. Разница в соотношении цена/производительность достигла порядка 1012.

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

Моя курсовая работа называется «Сервисное ПО в Распределенных Системах». На мой взгляд, это достаточно важная и актуальная тема в наше время, т.к. распределенные системы открывают широкий спектр возможностей для различных исследований, вычислений и много другого.

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

Чтобы достичь цели, необходимо выполнить определенные задачи, а именно:

  1. Разобраться с термином «Распределенные системы»
  2. Рассмотреть историю возникновения данной технологии
  3. Изучить все её особенности
  4. Познакомиться с такими видами Распределенных систем, в которых задействованы вычисления (системы BOINC и Grid).

Объектом данной курсовой работы является тема Распределенных систем в целом. Предметом данной курсовой работы является Сервисное ПО в Распределенных системах Данных и системах Распределенных Вычислений.

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

 

 

Глава 1. Распределенные Системы Данных

    1. Определение  распределенных систем

          В литературе можно найти различные определения распределенных систем, причем ни одно из них не является удовлетворительным и не согласуется с остальными. Но в целом подойдет следующее определение.

          Распределенная система — это набор независимых компьютеров, представляющийся их пользователям единой объединенной системой.

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

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

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

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

          Взглянем теперь на некоторые примеры распределенных систем. В качестве первого примера рассмотрим сеть рабочих станций в университете или отделе компании. Вдобавок к персональной рабочей станции каждого из пользователей имеется пул процессоров машинного зала, не назначенных заранее ни одному из пользователей, но динамически выделяемых им при необходимости. Эта распределенная система может обладать единой файловой системой, в которой все файлы одинаково доступны со всех машин с использованием постоянного пути доступа. Кроме того, когда пользователь набирает команду, система может найти наилучшее место для выполнения запрашиваемого действия, возможно, на собственной рабочей станции пользователя, возможно, на простаивающей рабочей станции, принадлежащей кому-то другому, а может быть, и на одном из свободных процессоров машинного зала. Если система в целом выглядит и ведет себя как классическая однопроцессорная система с разделением времени (то есть многопользовательская), она считается распределенной системой. В качестве второго примера рассмотрим работу информационной системы, которая поддерживает автоматическую обработку заказов. Обычно подобные системы используются сотрудниками нескольких отделов, возможно в разных местах. Так, сотрудники отдела продаж могут быть разбросаны по обширному региону или даже по всей стране. Заказы передаются с переносных компьютеров, соединяемых с системой при помощи телефонной сети, а возможно, и при помощи сотовых телефонов. Приходящие заказы автоматически передаются в отдел планирования, превращаясь там во внутренние заказы на поставку, которые поступают в отдел доставки, и в заявки на оплату, поступающие в бухгалтерию. Система автоматически пересылает эти документы имеющимся на месте сотрудникам, отвечающим за их обработку. Пользователи остаются в полном неведении о том, как заказы на самом деле курсируют внутри системы, для них все это представляется так, будто вся работа происходит в централизованной базе данных.

          В качестве последнего примера рассмотрим World Wide Web. Web предоставляет простую, целостную и единообразную модель распределенных документов. Чтобы увидеть документ, пользователю достаточно активизировать ссылку. После этого документ появляется на экране. В теории (но определенно не в текущей практике) нет необходимости знать, с какого сервера доставляется документ, достаточно лишь информации о том, где он расположен. Публикация документа очень проста: требуется только задать ему уникальное имя в форме унифицированного указателя ресурса (Uniform Resource Locator, URL), которое ссылается на локальный файл с содержимым документа. Если бы Всемирная паутина представлялась своим пользователям гигантской централизованной системой документооборота, она также могла бы считаться распределенной системой. К сожалению, этот момент еще не наступил.

 

    1. Основные требования к распределенным системам

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

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

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

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

Эффективность. В узком смысле применительно к распределенным системам под эффективностью будет пониматься минимизация накладных расходов, связанных с распределенным характером системы. Поскольку эффективность в данном узком смысле может противоречить безопасности, открытости и надежности системы, следует отметить, что требование эффективности в данном контексте является наименее приоритетным. Например, на поддержку логической целостности данных в распределенной системе могут тратиться значительные ресурсы времени и памяти, однако система с недостоверными данными вряд ли нужна пользователям. Желательным свойством промежуточной среды является возможность организации эффективного обмена данными, если взаимодействующие программные компоненты находятся на одном компьютере. Эффективная промежуточная среда должна иметь возможность организации их взаимодействия без затрагивания стека TCP/IP. Для этого могут использоваться системные сокеты (unix sockets) в POSIX системах или именованные каналы (named pipes).

Устойчивость распределенной системы связана с понятием масштабируемости, но не эквивалентна ему. Допустим, система использует набор обрабатывающих запросы серверов и один диспетчер запросов, который распределяет запросы пользователей между серверами. Такая система может считаться достаточно хорошо масштабируемой, однако диспетчер является уязвимой точкой такой системы. С другой стороны, система с единственным сервером может быть устойчива, если существует механизм его автоматической замены в случае выхода его из строя, однако она вряд ли относится к классу хорошо масштабируемых систем. На практике достаточно часто встречаются распределенные системы, не удовлетворяющие данным требованиям: например, любая система с уникальным сервером БД, реализованным в виде единственного компьютера, имеет уникальную точку сбоя. Выполнение требований устойчивости и масштабируемости обычно связано с некоторыми дополнительным расходами, что на практике может быть не всегда целесообразно. Однако используемые при построении распределенных систем технологии должны допускать принципиальную возможность создания устойчивых и высоко масштабируемых систем.

           В качестве основного требования к распределенным системам предъявляется достижение их прозрачности, открытости и масштабируемости.

 

      1. Прозрачность

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

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

Ресурс может время от времени менять своё местоположение, и при следующем вызове может быть обнаружен в другом месте (но по тому же логическому адресу). Распределенная система, позволяющая ресурсам менять свое расположение от вызова к вызову, обладает свойством прозрачности смены местоположения ресурса (пример – система ICQ).

Иногда ресурсу было позволено менять свое положение непосредственно в процессе его использования (пример такого ресурса – мобильные пользователи с беспроводной связью, не отключающиеся от сети при переходе в другую зону обслуживания). Это более сильное свойство называется прозрачностью динамической смены местоположения ресурса.

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

Часто совместное использование ресурсов достигается за счет действительно совместной работы и тесного взаимодействия пользователей системы. Однако пользователь должен знать, что он является не единственным ее пользователем. Например, при работе с системой управления базой данных (СУБД) пославший запрос пользователь не должен знать, что одновременно СУБД получает и обрабатывает запросы многих других пользователей. Такое прозрачное параллельное использование должно быть непротиворечивым, для чего составляются специальные правила блокировок, когда пользователи поочередно получают исключительные права на ресурс. Этой же цели достигают с помощью отправки транзакций.

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

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

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

 

      1. Открытость

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

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

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

 

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

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

Требование масштабируемости часто является препятствием распространения систем, реализованных для локальных сетей на уровень сетей глобальных (корпоративных или Интернета). В глобальных сетях время получения ответа может значительно превышать локальные задержки, потому что там чаще используется асинхронная связь. Кроме того, в локальных сетях службы часто распределены по компьютерам фиксированно, а в глобальных сетях местоположение необходимой службы заранее неизвестно.

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

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

 

    1. Логические программные слои распределенных систем

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

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

Часто этот слой называют клиентом распределенной системы, что неверно. Все распределенные системы имеют клиентов, то есть сущности, которые пользуются сервисами, предоставляемыми этими системами. Клиенты могут быть полностью внешними по отношению к системам и независимыми от них. В этом случае они не являются презентационным слоем самих систем. Лучшими примерами программ, спроектированных таким образов, являются сетевые навигаторы, обрабатывающие документы, написанные на языке HTML-документов.

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

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

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

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

Описанные три слоя – это концептуальные конструкции, которые логически разделяют функциональность большинства распределенных систем. В практических реализациях они могут комбинироваться различными способами. В этих случаях говорят не о концептуальных слоях, а о ярусах (звеньях). Известны 4 типа основных типов распределенных систем, отличающихся количеством входящих в них ярусов: одно-, двух-, трех- и многоярусные системы.

 

Глава 2. Распределенные вычислительные системы Boinc и Grid

2.1. История развития Распределенных Вычислений

Распределенные вычисления – способ решения трудоемких вычислительных задач с использованием нескольких компьютеров, чаще всего объединенных в параллельную вычислительную систему. Распределенные вычисления применимы также в распределенных системах управления.

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

Необходимость разделять вычислительные задачи и выполнять их одновременно (параллельно) возникла задолго до появления первых вычислительных машин.

В конце XVIII века во Франции под руководством Гаспара де Прони была начата работа по уточнению логарифмических и тригонометрических таблиц в связи с переходом на метрическую систему. Для ее выполнения был необходим огромный по тем временам объем вычислений. Исполнители проекта были разбиты на три уровня:

  • квалифицированные специалисты-вычислители, от которых требовалась аккуратность при проведении вычислений;
  • организаторы распределения заданий и обработки полученных результатов;
  • организаторы подготовки математического обеспечения и обобщения полученных результатов (высший уровень, в состав которого входили Адриен Лежандр и Лазар Карно).

Работа не была завершена из-за революционных событий 1799 года, однако идеи Гаспара де Прони подтолкнули Чарльза Бэббиджа к созданию аналитической машины.

Решение для модели атомной бомбы в США было получено коллективом учёных, которые пользовались вычислительными машинами.

В 1973 году Джон Шох и Джон Хапп из калифорнийского научно-исследовательского центра Xerox PARC  написали программу, которая по ночам запускалась в локальную сеть PARC и заставляла работающие компьютеры выполнять вычисления.

В 1978 году советский математик В. М. Глушков работал над проблемой макроконвейерных, распределенных вычислений. Он предложил ряд принципов распределения работы между процессорами. На базе этих принципов им была разработана ЭВМ ЕС-2701.

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

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

В январе 1996 года стартовал проект GIMPS по поиску простых чисел Мерсенна, используя компьютеры простых пользователей как добровольную вычислительную сеть.