среда, 19 мая 2010 г.

Component model of distributed object-oriented simulation software


The article is about design of distributed object-oriented simulation software which includes ability to perform independent calculations via simulation model and mathematical model and to compare results.
Base component model of the system is presented. A role of each component is described: Simulation Algorithms (AIM) – component that realizes a set of tools for creating simulation models of queue systems and also basic simulation tools; Mathematical Modeling Algorithms (AMM) – component which performs calculations that don't demand simulations, and calculations that have analytical or numeric solutions; Calculator – the system "core", it performs reading and parsing data described in Model file, uses AIM and AMM components for performing calculations; Model – "file"-type component, completely describing modeling goals and all necessary parameters; Constructor – program that realizes possibility of creating and editing models by user in a convenient from.
In cause of prospective difficulty of calculations a task of distributed calculations architecture development is formulated. In the article the types of nodes involved in distributed system work was identified: Clients – computers of the system clients; Remote Calculators – nodes that are used for calculations; Server – a node which performs task data storage functions and Distant Calculators network coordination. Variant of system deployment based on those nodes is presented.
Two new components were added to main model during design of system deployment: GRID Client – component that aggregates the calculation components and provides their connection with server; and GRID Server – component that performs division of the calculation tasks into segments, provides coordination of Remote Calculators and system clients, stores the tasks and calculation results. Detailed structure of those components is offered; low-level components and their interaction mechanisms are shown.
The Microsoft Windows Communication Foundation (WCF) technique was selected for building of connections between system components and a more detailed system model was shown.



Рис. 1. Модель основных компонентов объектной распределенной системы моделирования
Компонентная модель распределенной объектно-ориентированной системы имитационного моделирования
К. Ю. Войтиков1, А. Н. Моисеев2, П. Н. Тумаев3
1,3Филиал Кемеровского государственного университета в г. Анжеро-Судженске,
2Томский государственный университет
- mail: 1kost_v@ngs.ru, 2amoiseev@ngs.ru, 3ptumaev@yandex.ru

Введение

На сегодняшний день на рынке программного обеспечения существует определенное число систем, предназначенных для моделирования процессов массового обслуживания. Большая часть таких систем ориентирована на решение практических задач в конкретной предметной области (транспорт, телекоммуникации и т.п.), к тому же практически все эти системы реализуют определенные модели имитационного моделирования, не предусматривая подключения других возможных подходов. В качестве примера программы, удачно сочетающей решение практических задач в конкретных областях с возможностью реализации того или иного теоретического подхода, можно привести систему AnyLogic компании XJ Technologies [1]. Пожалуй, это одна из лучших систем в своем классе. Однако и эта программа обладает рядом недостатков, наиболее существенным из которых является необходимость использовать для проведения вычислений производственные мощности настольного (клиентского) компьютера. В связи с практическим отсутствием средств, решающих задачи моделирования с возможностью распределенных вычислений (в том числе – и по сети Интернет) является актуальной задача создания соответствующего программного обеспечения.

1. Базовые компоненты системы

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

В качестве отдельного компонента, например, в виде инструментальной библиотеки, предлагается выделить алгоритмы имитационного моделирования (АИМ). Данный компонент реализует набор механизмов для построения имитационной модели систем массового обслуживания, а также базовые инструменты имитационного моделирования.
Для выполнения расчетов, не нуждающихся в имитационном моделировании, расчетов, имеющих аналитические или численные решения, предлагается использовать компонент, отвечающий за алгоритмы математического моделирования (АММ). Кроме того, совместное использование этих компонентов позволит не только провести численные расчеты и выполнить имитационное моделирование, а при необходимости и сравнить полученные результаты.
Калькулятор (Calculator) – «ядро» системы, производит чтение и разбор данных, описанных в файле Модель, и обращается к компонентам АИМ (AIM) и АММ (AMM) для выполнения соответствующих расчетов;
Модель (Model) – компонент типа «файл», полностью описывающий постановку задачи моделирования и все необходимые параметры. Для этого компонента выбрана объектная модель внутренней структуры;
Конструктор (Constructor) – программа, предоставляющая возможность создания и редактирования моделей в удобном для пользователя виде.
Исходя из предполагаемой сложности, а главное длительности выполняемых вычислений, возникает задача разработать архитектуру, позволяющую использовать для работы системы несколько компьютеров одновременно, причем, таким образом, при котором все участвующие в работе системы компьютеры должны одновременно использоваться для выполнения одного текущего задания системы, то есть расчетов по одной и той же задаче.
Для построения системы воспользуемся принципом распределённых вычислений (GRID, MPP[2]). Это частный случай параллельных вычислений, при котором используется большое количество самостоятельных компьютеров, а разделение расчетов осуществляется путем разбиения основной задачи на ряд подзадач.
Отсюда следует, что принципиально такая архитектура может использоваться лишь для тех моделей, имитацию которых можно разбить на независимые части без потери адекватности имитации.

2. Организация распределенных вычислений

В работе системы должны участвовать три типа узлов:
•    Клиент (Client) – компьютер клиента системы, который составляет для нее задание;
•    Удаленный Калькулятор (Remote Calculator) – узел, использующийся непосредственно для расчетов;
•    Сервер (Server) – узел, использующийся для приема заданий от Клиентов, их хранения, координации сети Удаленных Калькуляторов, аккумуляцию и синхронизацию результатов расчетов.
Как видно из модели компонентов, представленной на рис. 1, непосредственно в процессе имитации и вычислений обязательно участвуют три ее компонента – Calculator, AIM и AMM. Вдобавок экземпляры компонента Model передаются компоненту Calculator для каждого конкретного задания.
Исходя из этого, компоненты основной модели системы будут распределены по типам узлов следующим образом (рис. 2).


Рис. 2. Диаграмма развертывания компонентов системы

Наряду с основными компонентами в системе появляются два новых компонента: GRID Client – компонент, агрегирующий в себя компоненты, участвующие в расчетах, и обеспечивающий их связь с Сервером; и GRID Server – компонент, осуществляющий разделение заданий на сегменты, обеспечивающий координацию Удаленных Калькуляторов и Клиентов, хранящий задания и результаты имитаций.
Стоит заметить, что узел Клиент не обязательно содержит компонент Конструктор. В общем случае достаточно передать компоненту GRID Server файл модели и параметры задания для нее, для чего Конструктор не является необходимым. Для передачи этих параметров будет использоваться специальный интерфейс Сервера, названный Интерфейсом Заданий.
Компонент Model фактически присутствует на всех трех узлах системы, так как создается пользователем на узле Клиент, передается и хранится вместе с заданием на узле Сервер, а также передается и обрабатывается на узле Удаленный Калькулятор.
Одним из ключевых свойств такой архитектуры является пассивность компонента GRID Server, который, по сути, является хранилищем данных и правил доступа к ним. Таким образом, взаимодействие компонентов системы, находящихся на узлах Клиент и Удаленный Калькулятор осуществляется через изменение данных, хранящихся в компоненте GRID Server. Так клиент системы создает новое задание и сохраняет его на Сервере. Множество Удаленных Калькуляторов в определенные промежутки времени соединяются с Сервером и, если он содержит новые задания, загружают их и начинают процесс имитации, наполняя Сервер результатами. По окончании моделирования всеми Удаленными Калькуляторами, клиент системы вновь подключается к Серверу и получает необходимые данные о результатах моделирования.
Из этого следует, что компонент GRID Server должен предоставлять два интерфейса: Интерфейс Заданий для создания заданий и получения результатов клиентом и интерфейс GRID Клиентов для подключения Удаленных Калькуляторов.

3. Применение WCF для организации распределенных вычислений

Для связи компонентов системы между узлами, была выбрана технология Microsoft Windows Communication Foundation (WCF). WCF – это унифицированная модель программирования распределенных приложений на платформе Microsoft. Она инкорпорирует предшествующие технологии – ASMX, .NET Remoting, DCOM и MSMQ – и предоставляет расширяемый API, отвечающий разнообразным требованиям, которые возникают при создании распределенных систем. WCF – это каркас для работы с web-службами на основе XML, который совместим со многими другими технологиями [3]. WCF предоставляет возможность конструировать логику взаимодействия независимо от протоколов, форматов и способов передачи данных, позволяет динамически переключаться между ними, а также предоставляет готовые механизмы обеспечения безопасности исполнения кода.
Рассмотрим более подробно структуру компонентов GRID Server и GRID Client.



Рис. 3. Структура компонентов GRID Server и GRID Client

Центральным звеном компонента GRID Server является компонент Controller, отвечающий за обработку всех событий внутри компонента и реализующий бизнес-логику обращения к данным.
Как было сказано выше, компонент GRID Server предоставляет два интерфейса: Интерфейс Заданий и Интерфейс GRID Клиентов. Интерфейс GRID Клиентов реализуется компонентом Service, который является WCF-службой и обеспечивает связь компонентов GRID Client и GRID Server вне зависимости от способа физического соединения содержащих их улов и доступных протоколов передачи данных.
Компонент DB является базой данных, хранящей информацию о заданиях системы, результатах проведенных ранее имитаций, а также о существующий GRID Клиентах.
Компонент Model – компонент из основной модели системы. Отдельные экземпляры компонента передаются на Сервер Клиентом и привязываются к конкретному заданию.
Компонент Grid Client Application – центральное звено GRID Клиента. Компонент выполняет запросы к WCF-службе Сервера для получения новых заданий и отправки результатов имитации. Инициирует имитацию и выполнение заданий компонетном Calculator+AIM+AMM.
Компонент LocalDB является локальной базой данных или другой формой хранения данных для локального хранения заданий и результатов между сеансами связи с GRID Сервером.
Стоит отметить, что гибкость интеграции и разделения компонентов вычислительной системы достигается благодаря применению проектных решений Фасад [4] и Шлюз [5]. Применение этих проектных решений позволяет избавиться от возможной зависимости систем друг от друга, выделить их в независимые программные модули, что, в свою очередь, способствует повышению степени их повторной используемости.

Заключение

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

ЛИТЕРАТУРА

1. XJ Technologies (Официальный русскоязычный сайт) [Электронный ресурс]: – Режим доступа свободный: http://www.xjtek.ru
2. Топорков В. В. Модели распределенных вычислений. – М.: ФИЗМАТЛИТ, 2004. – 320 с.
3. Резник С., Крейн Р., Боуэн К. Основы Windows Communication Foundation для .NET Framework 3.5: Пер с англ. – М.: ДМК Пресс, 2008. – 480 с.
4. Гамма Э., Хелм Р., Джонсон Р., Влиссидес Дж. Приемы объектно-ориентированного проектирования: паттерны проектирования. – СПб.: Питер, 2001. – 366 с.
5. Фаулер М. Архитектура корпоративных программных приложений: Пер. с англ. – М. Издательский дом «Вильямс», 2004. – 544с.

Работа выполнена в рамках аналитической ведомственной целевой программы «Развитие научного потенциала высшей школы (2009-2010 годы)», проект № 4761

Комментариев нет:

Отправить комментарий