Автор Анна Евкова
Преподаватель который помогает студентам и школьникам в учёбе.

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

Содержание:

Введение

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

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

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

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

В соответствии с поставленной целью решались следующие основные задачи:

- изучить сущность и содержание основных понятий и категорий распределенных систем;

- выделить основные задачи, решение которых делает построение распределенных систем осмысленным;

- провести анализ проблем, возникающих в ходе проектирования и эксплуатации распределенных систем;

- изучить примеры распределенных информационных систем;

- сделать выводы о преимуществе распределенных систем.

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

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

Одним из основных источников в написании своей работы я выбрала книгу «Распределенные системы. Принципы и парадигмы»[1]. Ее авторы Эндрю Таненбаум и Маартен ван Стеен детально описали принципы и технологию распределенных систем. Теоретическая часть сопровождена примерами реально действующих систем. Эндрю С. Таненбаум является профессором вычислительной техники, а также членом АСМ и IEEE; доктор Маартен ван Стеен ведет курсы по операционным систе­мам, компьютерным сетям и распределенным системам.

Также основные понятия и концепции из области распределенных систем понятно описаны в пособиях М.С. Косякова [2], Л.Е. Карпова [3], О.П. Култыгина [4] и Г.И. Радченко [5].

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

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

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

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

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

1.1 Предпосылки создания распределенных систем

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

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

Толчком к развитию распределенных систем и баз данных также послужило появление и развитие высокоскоростных компьютерных сетей. Локальные сети соединяют сотни компьютеров, находящихся в одном помещении и образуют единое локальное пространство, в котором компьютеры обмениваются небольшим количеством информации за несколько микросекунд [4, стр.5]. С развитием глобальных сетей, объединяющих территориально рассредоточенные компьютеры, возможно находящиеся в различных городах и странах и позволяющих миллионам машин во всем мире обмениваться информацией, все больше информации предается между компьютерами[10, стр.28]. Остро встает вопрос согласованности данных, которые обрабатываются различными пользователями. Действительно, сегодня в мире существует огромное количество уже готовых к использованию информационных ресурсов, где можно найти нужные уже готовые компоненты для создания и разработки новых информационных систем. Необходим механизм, который позволит сделать независимо разработанные информационные ресурсы способными к взаимодействию.

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

1.2 Определение распределенных вычислений и распределенных систем

Теоретической основой для построения распределенных систем обработки данных являются распределенные вычисления. Область распределенных вычислений (англ. Distributed computing) представляет собой раздел теории вычислительных систем, изучающий теоретические вопросы организации распределенных систем (англ. distributed systems) [2, стр.8]. Задачей распределенных вычислений является создание алгоритма, который будет обеспечивать остающиеся процессы непротиворечивой информацией, благодаря чему они смогут взаимодействовать и решать общие задачи.

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

В своем труде профессор Эндрю Таненбаум предлагает следующее определение:

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

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

Еще одно определение распределенной системе дал ученый Лесли Лэмпорт:

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

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

Еще некоторые определения распределенной системы:

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

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

- Распределенная система - это взаимосвязанный набор автономных компьютеров, процессов или процессоров [9].

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

Распределенная обработка данных - это обработка данных, выполняемая на независимых, но связанных между собой компьютерах, представляющих распределенную систему. Системы, имеющие программы распределенной среды, включают компьютеры, называемые серверами и клиентами. Каждый сервер имеет свою группу клиентов. Программное обеспечение сетевой среды обслуживается и поддерживается сетевыми операционными системами. В роли сервера выступает главный, более мощный компьютер. При этом возможны несколько видов работ, которые он может выполнять: - удаленный запрос, например, команда, позволяющая посылать одиночную заявку на выполнение обработки данных; - удаленная трансакция, осуществляющая направление группы запросов прикладному процессу; - распределенная трансакция, дающая возможность использования нескольких серверов и прикладных процессов, выполняемых в группе абонентских систем. Распределенная среда требует организации распределенной базы данных и такого инструментария, как распределенная система управления базой данных (РСУБД) [12, стр.155].

Как видно из определений много, но из них можно выделить общие признаки, которыми должна обладать распределенная система:

- территориальное распределение компонентов системы, причем как объединение в глобальную сеть, так и кластер из рабочих станций,

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

- взаимодействие и обмен информации между компонентами системы [2, стр. 10,11].

1.3 Терминология и схема работы распределенных систем

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

Узлом называется любое аппаратное устройство в распределенной системе.

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

Пир - это узел, совмещающий в себе как клиентскую, так и серверную часть (т.е. и поставщик, и потребитель информации одновременно).

Сервис – это сетевая сущность, предоставляющая определенные функциональные возможности [5, стр. 10,11].

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

1.4 Классификация распределенных систем

Классифицировать распределенные системы можно по различным признакам. По количеству элементов в системе различают распределенные системы:

-Кластеры -   несколько вычислительных узлов (не превышает несколько десятков), объединенных с помощью быстрой технологии передачи данных и с установленным специальным программным обеспечением. Компьютерные кластеры в настоящее время получили большое распространение. Видимо, это связано, в первую очередь с тем, что из-за постоянного снижения цен на оборудование и появление в последнее время соответствующего системного программного обеспечения технология создания кластеров стала общедоступной. [9, стр. 6]

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

- Глобальные распределенные системы – с количеством элементов более тысячи. В ней участвуют несколько отдельных организаций, географически удаленных друг от друга, которые предоставляют друг другу свои ресурсы по определенным правилам и с определенными протоколами взаимодействия[6, стр.32]. 

В своем труде Таненбаум проведем также разделение распределенных компьютерных систем на гомогенные (homogeneous) и гетерогенные (heterogeneous). Это разделение приме­няется исключительно к мультикомпьютерным системам.

Для гомогенных мультикомпьютерных систем характерна одна соединяющая компьютеры сеть, ис­пользующая единую технологию. В этих системах, известных под названием системиых сетей {System Area Networks, SAN), узлы монтируются в большой стойке и соединяются единой, обычно высо­коскоростной сетью.

Гомоген­ные мультикомпьютерные системы нередко используются в качестве параллельных (работающих с одной задачей), в точности как мультипроцессорные. Наибольшее число существующих в настоящее время распределенных систем по­строено по схеме гетерогенных мультикомпьютерных. Это означает, что компью­теры, являющиеся частями этой системы, могут быть крайне разнообразны, например, по типу процессора, размеру памяти и производительности каналов ввода-вывода [1, стр. 39-44].

По типу предоставляемых ресурсов различают:

- Распределенные вычислительные системы, где в качестве основного ресурса представляется вычислительная мощность всей системы. Мощность вычислительной системы наращивается посредством увеличения числа вычислительных узлов.

- Распределенные информационные системы, которые предназначены для обработки больших объемов информации, но не требуют больших вычислительных ресурсов [6, стр. 32].

- Семантический Грид, производящая централизованное удаленное предоставление ресурсов (как вычислительных мощностей, так и информационных систем), необходимых для решения различного рода вычислительных задач [5, стр. 131].

1.5 Механизм реализации распределенной обработки данных

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

Существует несколько распространенных моделей взаимодействия в распределенных системах. Первой моделью является удаленный вызов процедур (Remote Procedure Call, RPC). Этот механизм нацелен на сокрытие большей части проблем передачи сообщений и идеален для приложений архитектуры клиент- сервер [1, стр. 81].

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

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

На машине сервера запускается процесс выполнения вызванной процедуры,

поступающая информация помещаются принимающей аппаратурой либо во встроенный буфер, либо в оперативную память. Когда удаленный сервер получает сообщение, он видит его как прямое обращение к локальной процедуре, выполняет вызов и предает его серверной заглушке. Она в свою очередь компонует результаты в сообщение для клиента и вызывает операционную систему сервера. После выполнения процедуры сервер передает результаты операционной системе клиента. Операционная система клиента принимает сообщение и передает его клиентскому стабу, который выводится из ожидания, извлекает результаты из сообщения и передает их клиенту [5, стр.52-54].

Достоинство этого метода заключается в том, что и клиент, и сервер не знают об удаленности вызова и промежуточных действиях [3, стр.26].

Удаленные вызовы процедур стали фактическим стандартом для связи в распре­ деленных системах. Популярность этой модели объясняется ее несомненной простотой [1, стр.103].

Более усовершенствованным вариантом модели удаленного вызова процедур является вид удаленного обращения к методам (Remote Method Invocation, RMI), которое основано на представлении распределенных объектов [1, стр.81].

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

Основное различие между RMI и RPC состоит в том, что RMI поддерживает внутрисистемные ссылки на объекты. Кроме того, отпадает необходимость в клиентских и серверных заглушках общего назначения. Вместо них мы можем использовать значительно более удобные в ра­боте и специфические для объектов посредники (англ. proxy), или реализацию интерфейса удаленного объекта [5, стр. 55].

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

После образования посредника (proxy), объекты находятся на сервере и предоставляют необходимые интерфейсы. Вызывающий процесс на обращение к методу попадает в серверный каркас, или скелетон (skeleton), который по своим функциям напоминает серверную заглушку в RPC. Каркас связывается с экземпляром удаленного объекта. Если объект физически распределен по нескольким вычислительным машинам, то это скрывается от клиентов за интерфейсами объектов [5, стр.55,56].

Механизм удаленного обращения к методам имеет ряд достоинств. На основе RMI было создано множество реализаций, значительно облегчивших создание объектно-ориентированных распределенных приложений [3, стр.40].

Еще одной моделью взаимодействия является ориентированный на сообщения промежуточный уровень (Message-Oriented Middleware, MOM) или системы очередей сообщений [1, стр. 81].

Потребность в этой модели возникает, когда нет уверенности в том, что принимающая сторона во время выполнения запроса работает. Клиенты взаимодействуют, обмениваясь структурированными наборами данных - сообщениями. Такие системы предоставляют возможность промежуточного хранения сообщений, не требуя активности во время передачи, но от отправителя, ни от получателя [3, стр. 44,45].

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

Однако существуют формы взаимодействия, в которых временные характе­ристики имеют решающее значение, например мультимедийных системах, когда недостает поддержки передачи непрерывных потоков, таких как аудио или видео. Для обмена критичной ко времени передачи информацией распределенные сис­темы обычно предоставляют поддержку потоков данных (data streams, или про­ сто streams) [1, стр.149].

Выводы по 1 главе:

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

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

Существует несколько механизмов взаимодействия между процессами в распределенной системе. Из них наиболее широко известны такие модели, как удален­ный вызов процедур (RPC), удаленное обращение к ме­тодам (RMI), ориентированный на сообщения про­межуточный уровень (MOM) и потоки данных (streams). Каждая из моделей имеет свои достоинства и ориентирована на разный способ доступа к данным и характеристику передаваемых данных.

Глава 2. Основные задачи распределенной системы

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

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

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

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

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

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

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

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].

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

2.5 Безопасность

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

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

В распределенную систему долж­ны быть встроены механизмы защиты, при помощи которых можно будет реали­зовать различные правила защиты.

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

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

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

Выводы по 2 главе:

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

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

Глава 3. Развитие распределенных систем

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

Однако чаще в таких приложениях используется самая простая разновидность распределенных вычислений: вычисления в архитектуре клиент-сервер. Эта организация системы предполагает наличие двух типов машин – клиентские машины реализуют интерфейсы пользователей и сервер, или центральный процессор, обслуживающий множество удаленных клиентов и реализующий уровни обработки и данных. Клиенты и сервер взаимодействуют, обмениваясь сообщениями и, как правило, следуя форме взаимодействий типа запрос-ответ [11, стр. 20].

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

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

Примером могут служить и кластеры из обыкновенных рабочих станций (COW), соединенные локальной вычислительной сетью. При этом все оборудование такой распределенной системы может находиться в одном или нескольких соседних зданиях. Подобные кластеры COW становятся все популярнее из-за относительно низкой стоимости входящих в нее компонентов с одной стороны и неплохой производительности – с другой. Например, ядро поисковой системы компании Google построено по архитектуре COW [6, стр. 32].

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

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

Первые проекты по распределенным вычислениям, появившиеся в начале 1990-х годов, основывались на объединении вычислительных возможностей суперкомпьютеров. Основной целью данных проектов было предоставление вычислительных ресурсов для определенного ряда высокопроизводительных приложений. Первыми экспериментальными системами по объединению распределенных станций стали проекты FAFNER и I-WAY. Эти проекты стали базовыми, для всей отрасли распределенных вычислений в дальнейшем [5, стр. 16].

Проект FAFNER (англ. Factoring via Network enabled recursion) был создан для умножения простых чисел криптографических задач, путем разложения больших чисел на небольшие фрагменты на основе мощностей географически-распределенных вычислительных систем [18, стр. 63]. Данная система использовала сетевую файловую систему, поддерживала анонимную регистрацию участников. Данная система доказала свою надежность и качественность, заняв первое место по производительности в конкурсе, проводимом в рамках конференции Supercomputing’95 [5, стр. 17].

Проект I-WAY создавался с целью объединения ресурсов суперкомпьютерных центров и передовых средств визуализации в единое целое. Данные и компьютерные ресурсы были распределены по 17-и локациям в США и объединены 10-ю сетями, с различной пропускной способностью. Для данного проекта была создана аппаратная инфраструктура, специальное ППО и планировщик ресурсов (CRB) [18, стр. 63]. Уже в то время решались задачи создания хорошо управляемой распределенной системы.

3.2 Второе поколение распределенных систем

В конце 1990-х прорывом в области распределенных систем стало создание концепции GRID (Global Resource Information Distribution). Эта концепция позволяла обеспечивать гибкое и безопасное распределение ресурсов.

Были выделены три основных требования, которым должны соответствовать распределенная система для того чтобы называться GRID.

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

2.Отказоустойчивость. Ошибки в работе нескольких не должны влиять на полученные результаты.

Применение технологии GRID позволило объединить крупные комплексы обработки и хранения данных, обеспечивая их доступность для различных пользователей, включая правительственные и научные организации [5, стр. 18, 19].

Для реализации предложенных концепций в 1997 году был запущен проект Globus, направленный на разработку и предоставление инфраструктуры для GRID-вычислений. Интерес представляют средства защиты, использованные в данном проекте. В первую очередь Globus нуждается в ме­ханизмах аутентификации и объявления пользователя в удален­ных доменах[1, стр. 463]. Данный проект был поддержан многими производителями программного обеспечения, такими как IBM, Sun, HP, Intel [18, стр. 64].

В отличие от проекта Globus, проект Legion основывался на объектно-ориентированном подходе. Legion предлагает модель уда­ ленных объектов. Основной целью проекта было предоставление пользователям единой интегрированной инфраструктуры распределенной системы, независимо от масштаба, географического положения, языка или операционной системы [5, стр. 19].

В середине 1990-х годов одним из наиболее распространенных методов построения распределенных объектных систем являлась архитектура CORBA (Common Object Request Broker Architecture — общая архитектура брокера объектных запросов). Подобные спецификации разра­ ботаны группой управления объектами {Object Management Group, OMG). Основной целью OMG при разработке CORBA было создание распределенной системы, способной преодолеть большинство проблем межоперационной совместимости при интеграции сетевых приложений. CORBA обеспе­чивает отказоустойчивость при помощи службы репликации, в основании ко­торой лежит базовая служба надежной групповой рассылки. CORBA предлагает полностью защищенную архитектуру, которая позволяет обеспечить индивидуальную защиту каждого объекта [1, стр. 540, 621].

3.3 Современные распределенные системы

На сегодняшний день, распределенные системы отходят от традиционных понятий высокопроизводительных распределенных вычислений в сторону развития виртуального сотрудничества и виртуальных организаций. Виртуальная организация – это ряд людей и/или организаций, объединенных общими правилами коллективного доступа к определенным вычислительным ресурсам. Методы представления доступа к вычислительным ресурсам становятся сервисно-ориентированными, что позволяет гибко использовать одни и те же вычислительные ресурсы различными потребителями [5, стр. 21].

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

Дальнейшим развитием в области построения распределенных систем явилась разработка третьего поколения GRID. В начале 2000-х годов бизнес-сообщество занялось разработкой следующего поколения спецификаций, призванных решить проблемы ранних стандартов распределенных объектных технологий посредством веб-сервисов и сервис-ориентированной архитектуры (Service-Oriented Architecture – SOA) [18, стр. 65]. Это привело к созданию новых коммуникационных протоколов, в частности SOAP (Simple Object Access Protocol),основанный на XML протокол взаимодействия веб-сервисов. Протокол SOAP предназначен для организации взаимодействия удаленных систем при помощи асинхронного обмена XML-отформатированными документами, состоящими из трех частей: конверта (обертки), заголовка и тела. SOAP формирует базовый слой стека протоколов веб-сервисов, обеспечивая инфраструктуру обмена сообщениями между ними [5, стр. 93].

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

Выводы по 3 главе:

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

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

Заключение

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

Из определения распределенной системы видно, какими признаками она обладает:

- машины, входящие в состав системы, работают автономно, или независимо друг от друга, но объединены в единую связную систему;

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

Основной целью распределенной обработки информации является оптимизация использования ресурсов и упрощение работы пользователя.

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

- Распределенная система позволяет скрыть от пользователя организацию параллельного доступа, местоположение и перемещение ресурсов, возникновение сбоев и отказов в каком-либо компоненте системы.

- В распределенной системе должны быть описаны ключевые интерфейсы, что позволяет произвольным процессам совместно работать

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

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

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

В то же время выявляется ряд проблем, требующих решения:

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

- Проблемы восстановления данных после сбоев системы.

- Проблема ограничения масштабируемости.

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

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

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

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

Библиография

  1. Распределенные системы. Принципы и парадигмы / Э. Таненбаум, М. ван Стеен. — СПб.: Питер, 2003. — 877 с.
  2. Косяков М.С. Введение в распределенные вычисления. – СПб: НИУ ИТМО, 2014. – 155 с.
  3. Карпов Л.Е. Архитектура распределенных систем программного обеспечения: Учебное пособие, М.: МАКС Пресс, МГУ, ВМ и К, 2007. – 130 с.
  4. Култыгин О.П. Распределенные системы обработки информации: Учебное пособие, М.: МФПА, 2011. – 69 с.
  5. Радченко, Г.И. Распределенные вычислительные системы / Г.И. Радченко. – Челябинск: Фотохудожник, 2012. – 184 с.
  6. Цветков В.Я., Алпатов А.Н. Проблемы распределённых систем / Перспективы науки и образования. 2014. № 6. С.31-36
  7. Глеб Ладыженский, Распределенные информационные системы и базы данных / издательство «Computerworld Россия» , № 06, 1996.
  8. Хомопепко А. Д., Цыганков В. М., Мальцев М. Г. Базы данных: Учебник для высших учебных заведений / Под ред. А. Д. Хомопепко. —. 6-е изд., доп. - СПб.: КОРОНА-Век, 2009. - 736 с.
  9. Лекции учебного курса «Методы и средства построения распределенных программных систем с использованием технологии Java», кафедра МО ЭВМ Нижегородский гос. ун-т. им Н.И.Лобочевского
  10. Олифер В. Г., Олифер Н. А. Компьютерные сети. Принципы, технологии, протоколы: Учебник для вузов. 4-е изд. — СПб.: Питер, 2010. — 944 с.
  11. Кристиан Качин, Рашид Гуерру, Луис Родригес Введение в надежное и безопасное распределенное программирование.
    М.:ДМК Пресс, 2016. — 512 с.
  12. Рагулин П.Г. Информационные технологии. Электронный учебник. — Владивосток: ТИДОТ Дальневост. ун-та, 2004. - 208 с.
  13. И.Б. Бурдонов, А.С. Косачев, В.Н. Пономаренко, В.З. ШнитманОбзор подходов к верификации распределенных систем. М.: ИСП РАН, 2006. — 61 с.
  14. Классификации распределенных систем. Родин А.в., Бурцев В.л. Родин А.в., Бурцев В.л.Классификации распределенных систем / Научная сессия МИФИ-2006. — стр. 149-151
  15. Столлингс, Вильям, Беспроводные линии связи и сети (Wireless Communications and Networking) / Вильям Столлингс; [Пер. с англ. А. В. Высоцкого и др.]. - М.[и др.] : Вильямс, 2003 (СПб. : ГПП Печ. Двор). - 638 с.
  16. Информационная безопасность распределённых информационных систем: учеб. / А.И.Моисеев, Д.Б. Жмуров. – Самара: Изд-во. Самар. гос. аэрокосм. ун-та, 2013. – 180 с.
  17. Шаньгин В. Ф. Ш20 Информационная безопасность компьютерных систем и сетей: учеб. пособие. — М.: ИД «ФОРУМ»: ИНФРА-М, 2011. — 416 с.
  18. Алпатов А. Н.  Развитие распределенных технологий и систем / ПНиО. 2015. №2 (14) — С.60-66