Материал: Создание распределенных информационно-управляющих систем на базе агентно-ориентированного подхода

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Создание распределенных информационно-управляющих систем на базе агентно-ориентированного подхода

МИНИСТЕРСТВО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ

ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧЕРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ

«ТЮМЕНСКИЙ ГОСУДАРСТВЕННЫЙ НЕФТЕГАЗОВЫЙ УНИВЕРСИТЕТ»

ИНСТИТУТ ГЕОЛОГИИ И НЕФТЕГАЗОДОБЫЧИ

КАФЕДРА «Кибернетических систем»





Реферат

по дисциплине «Распределенные компьютерные информационно-управляющие системы»

на тему «Создание распределенных информационно-управляющих систем на базе агентно-ориентированного подхода»

Выполнил: студент гр. АТПм-14 Азимов А.О.

Проверил: доцент кафедры КС Кулаков В.А.






ТЮМЕНЬ 2015

Аннотация

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

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

Введение

Распределенные системы управления отличаются территориально распределенной системой ввода-вывода, а также децентрализацией обработки данных. В связи с этим, проектирование и создание подсистем распределенной обработки потоковых данных является одним из наиболее важных этапов жизненного цикла (ЖЦ) ИУС. Эффективная организация взаимодействия между разработчиками различных подсистем обеспечивает также снижение ресурсозатрат на создание и эксплуатацию системы. Наиболее известным программным решением для распределенных программных систем является использование трехзвенных программных архитектур «клиент-сервер» и создание дополнительного слоя программного обеспечения (ПО) - промежуточного слоя (ПС), который позволяет сократить затраты на проектирование и разработку программных модулей обработки, хранения данных, а также их интеграцию. Применительно к распределенным системам управления применимость такого подхода сильно осложняется спецификой требований, предъявляемых к техническому обеспечению ИУС: требования по безопасности, надежности и помехозащищенности оборудования, сетей связи, а также протоколов передачи данных между узлами ввода-вывода и обработки потоковых данных [4].

Кроме того, для обработки потоковых данных клиент-серверная архитектура является недостаточно эффективной ещё и потому, что программно-аппаратные системы распределенной обработки потоковых данных имеют высокие требования к скорости обработки и передачи данных, а задача их хранения имеет более низкий приоритет, тогда как клиент-серверная архитектура ориентирована преимущественно на хранение и весьма требовательна к сетевым ресурсам [8]. Таким образом, существующие программные технологии не позволяют обеспечить эффективность ЖЦ ИУС, и одновременно обеспечить соблюдение ряда требований, часто предъявляемых к распределенным системам управления: открытости, гибкости, модульности, обеспечения управляемости, безопасности, прозрачности распределения ресурсов [1].

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

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

Постановка задачи

Задачу обработки потоковых данных можно представить в виде совокупности множества атрибутов и множества процедур их преобразования. Пусть задано множество атрибутов V, значения которых необходимо поддерживать актуальными. Подзадачи обработки данных в этом случае можно определить множеством операций F по вычислению актуальных значений одной совокупности атрибутов с использованием значений другой совокупности атрибутов [2]. Каждая такая операция может быть представлена кортежем:


Где

 -множество входных и выходных атрибутов для данной операции.

Поток данных между двумя операциями можно представить следующим кортежем:


Модель обработки потоковых данных может быть представлена в виде ориентированного биграфа (рис. 1):


где: - множество вершин графа; им соответствует объединение множеств атрибутов и процедур;

 -   множество упорядоченных пар вершин.

Рис. 1. Представление задачи обработки данных в виде двудольного орграфа операций и атрибутов

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

Таким образом, каждой вершине

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

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

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

Гибкость и живучесть распределенных ИУС

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

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

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

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

С точки зрения живучести программная система характеризуется следующими параметрами:

целью функционирования;

множеством задач  решение которых обеспечивает ее достижение;

множеством компонент являющихся составными частями системы.

На рис. 2 показано принципиальное отличие понятия отказоустойчовости от живучести, применительно к программным системам. На графиках показана зависимость условного количество решаемых задач (ось ординат) от условного времени ЖЦ системы (ось абсцисс).

Рис. 2. Зависимость количества решаемых задач от времени функционирования системы в условиях обеспечения: а) отказоустойчивости и б) живучести системы

Отказоустойчивость системы (рис. 2.а) подразумевает работоспособность всех компонент на продолжении максимального промежутка времени эксплуатации, тогда как живучесть системы (рис. 2.б) подразумевает сохранение работоспособности программной системы в случае отказов отдельных компонентов. Применительно к задачам распределенной обработки потоковых данных живучая программная система может быть также названа системой с постепенной деградацией точности (graсeful degradation of accuracy).

Понятие гибкости программной системы обратно понятию живучести. Гибкость подразумевает способность системы наращивать функционал в процессе работы, то есть увеличивать количество решаемых подзадач без остановки или ущерба для других подзадач. Понятие гибкости, как «постепенное улучшение» (progressive enhancement) получило широкое распространение в web-разработке при проектировании интерфейсов.

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

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

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

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

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

Агентно-ориентированная программная архитектура распределенной обработки потоковых данных

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

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

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

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

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