Верхнеуровневая архитектура: различия между версиями
Строка 23: | Строка 23: | ||
[[File:top-modules.jpg|500px|thumb|right|Типы модулей системы моделирования]] | [[File:top-modules.jpg|500px|thumb|right|Типы модулей системы моделирования]] | ||
Тестовая версия 1 | ===Реализации=== | ||
====Тестовая версия 2==== | |||
Реализует сценарии внутрипроцессной и распределенной работы компонентов системы, а также два тестовых клиента, включающих управляющую подсистему в собственное адресное пространство. Реализованы следующие компоненты. | |||
* [[control]] - разделяемая библиотека, реализующая [[Подсистема управления | управляющую подсистему]], и реализующая интерфейс, предоставляемый веб-серверу. | |||
* [[lb_dll]] - разделяемая библиотека, реализующая балансировщики нагрузки с интерфейсом [[ILoadBalancer]], а также провайдер балансировщиков нагрузки [[ILoadBalancerProvider]]. Библиотека может быть включена в адресное пространство подсистемы управления при соответствующей конфигурации последней. Также библиотека может быть использована сторонним процессом, который реализует циклическое прослушивание удаленных каналов связи - см. [[lb_exe]]. | |||
* [[arch_ac]] - реализация подсистемы предметной области "Архитектурная акустика". | |||
* arch_ac_client - исполняемый компонент, играющий роль заглушки "пользователь-веб-сервер". Выполняет моделирование в предметной области "Архитектурная акустика". | |||
* [[domain_shared]] - разделяемая библиотека, которая опционально предоставляется реализациям подсистем предметных областей и их узлам. Библиотека реализует утилитарные функции, которые могут быть использованы на обеих сторонах - например функции по распаковке/запаковке объектов, реализации каналов связи между узлами. См. рисунок. | |||
* [[domain_exe]] - реализует пользовательский интерфейс для распределенного экземпляра подсистемы предметной области - независимо от предметной области. См. ПОП на рисунке сверху. | |||
* [[node_exe]] - реализует пользовательский интерфейс для распределенного узла подсистемы предметной области - независимо от предметной области. Аналогичен [[domain_shared]], но для узла. | |||
* [[lb_exe]] - реализует пользовательский интерфейс для балансировщиков нагрузки и провайдера балансировщиков нагрузки, которые реализуются разделяемой библиотекой [[lb_dll]]. | |||
[[File:DIS-DDS-border.png|500px|thumb|right|Структурные компоненты, реализующие процесс на стороне экземпляра подсистемы предметной области - в случае использования функций [[domain_shared]]. Для узла определяется аналогично.]] | |||
''Следующие реализации устарели и сейчас не совместимы с предметно-независимой подсистемой.'' | |||
* [[integral]] - реализация подсистемы предметной области "Интеграл" по параллельному расчету интеграла <math>\int_{a}^{b}\frac{4}{1 + x^2}\, dx</math>. При <math>a = 0</math>, <math>b = 1</math> Результат должен быть равен <math>\pi</math>. | |||
* integral_client - аналогичный клиент, инициирующий расчет интеграла в предметной области "Интеграл". | |||
=====Развертывание===== | |||
====Тестовая версия 1==== | |||
Реализует только сценарий внутрипроцессной работы компонентов системы, за исключением браузера, а также два тестовых клиента, включающих управляющую подсистему в собственное адресное пространство. Реализованы следующие компоненты. | |||
* [[control]] - библиотека, реализующая [[Подсистема управления | управляющую подсистему]], и реализующая интерфейс, предоставляемый веб-серверу. | * [[control]] - библиотека, реализующая [[Подсистема управления | управляющую подсистему]], и реализующая интерфейс, предоставляемый веб-серверу. | ||
* [[arch_ac]] - реализация моделирующей подсистемы предметной области "Архитектурная акустика". | * [[arch_ac]] - реализация моделирующей подсистемы предметной области "Архитектурная акустика". | ||
* arch_ac_client - исполняемый компонент, играющий роль заглушки "пользователь-веб-сервер". Выполняет моделирование в предметной области "Архитектурная акустика". | * arch_ac_client - исполняемый компонент, играющий роль заглушки "пользователь-веб-сервер". Выполняет моделирование в предметной области "Архитектурная акустика". | ||
* [[integral]] - реализация подсистемы предметной области "Интеграл" по параллельному расчету интеграла <math>\int_{a}^{b}\frac{4}{1 + x^2}\, dx</math>. При <math>a = 0</math>, <math>b = 1</math> Результат должен быть равен <math>\pi</math>. | * [[integral]] - реализация подсистемы предметной области "Интеграл" по параллельному расчету интеграла <math>\int_{a}^{b}\frac{4}{1 + x^2}\, dx</math>. При <math>a = 0</math>, <math>b = 1</math> Результат должен быть равен <math>\pi</math>. | ||
* integral_client - аналогичный клиент, инициирующий расчет интеграла в предметной области "Интеграл". | * integral_client - аналогичный клиент, инициирующий расчет интеграла в предметной области "Интеграл". |
Версия 00:45, 1 ноября 2017
Моделирующий пользователь подключается через HTML5 браузер к системе моделирования. Моделирующий пользователь выполняет аутентификацию и авторизацию в системе моделирования.Моделирующий пользователь задает физико-геометрическую модель среды распределения моделируемого поля, создавая ее с нуля, либо загружая ее с локального хранилища, либо из базы данных пользователя. Моделирующий пользователь посылает системе запрос на выполнение моделирования в заданной им предметной области на основе заданной физико-геометрической модели. Указанный пользователем экземпляр подсистемы предметной области выполняет моделирование. Моделирующий пользователь периодически запрашивает состояние созданного процесса моделирования. По завершению процесса, моделирующий пользователь запрашивает результаты моделирования. Система отвечает пользователю результатами моделирования.
Структура
На верхнем уровне системной иерархии система принципиально состоит из предметно-независимой и предметно-ориентированной подсистемы.
Предметно-независимая подсистемы разрабатывается нами без какой-либо привязки к предметной области проведения модельных экспериментов.
Предметно-независимая подсистема выполняет посреднические функции между моделирующим пользователем с одной стороны и предметно-ориентированной подсистемой с другой, а также выполняет сервисные функции по хранению данных пользователя и предметной области, по распределению нагрузки между параллельными вычислителями предметно-ориентированной подсистемы, и по реализации политики безопасности.
Предметно-ориентированная подсистема, реализует высокопроизводительное моделирование в наборе предметных областей, обслуживаемых предметно-независимой подсистемой, с использованием собственного аппаратного обеспечения.
Структурно, верхний уровень определяется следующими компонентами.
- Веб-сервер - служба, принимающая HTTP запросы от клиентов и трансформирующая их в вызов точки входа подсистемы управления с соответствующими параметрами.
- Подсистема управления - динамически загружаемая веб-сервером библиотека (DLL в Windows, SO в Unix), реализующая подсистему управления. Библиотека экспортирует заданный набор интерфейсных функций, доступных веб-серверу для обработки клиентских запросов. Также предоставляет интерфейс для подсистемы предметной области, который зависит от метода реализации подсистемы предметной области - в виде также внутрипроцессного сервера (единственная доступная реализация на 15.12.2015) или в виде удаленного сервера. Программно взаимодействие реализуется в виде пары "прокси-заглушка", предоставляющей полиморфные объекты с методами по передаче вызова.
- Вычислительная подсистема - чисто логическое объединение предметно-ориентированных подсистем, реализующих высокопроизводительное моделирование в своих предметных областях. На 15.12.2015 в виде разделяемых (динамических) библиотек реализованы две предметные области - "Архитектурная акустика" и "Интеграл".
Главный сценарий использования системы частично отражает назначение этих подсистем.
Реализации
Тестовая версия 2
Реализует сценарии внутрипроцессной и распределенной работы компонентов системы, а также два тестовых клиента, включающих управляющую подсистему в собственное адресное пространство. Реализованы следующие компоненты.
- control - разделяемая библиотека, реализующая управляющую подсистему, и реализующая интерфейс, предоставляемый веб-серверу.
- lb_dll - разделяемая библиотека, реализующая балансировщики нагрузки с интерфейсом ILoadBalancer, а также провайдер балансировщиков нагрузки ILoadBalancerProvider. Библиотека может быть включена в адресное пространство подсистемы управления при соответствующей конфигурации последней. Также библиотека может быть использована сторонним процессом, который реализует циклическое прослушивание удаленных каналов связи - см. lb_exe.
- arch_ac - реализация подсистемы предметной области "Архитектурная акустика".
- arch_ac_client - исполняемый компонент, играющий роль заглушки "пользователь-веб-сервер". Выполняет моделирование в предметной области "Архитектурная акустика".
- domain_shared - разделяемая библиотека, которая опционально предоставляется реализациям подсистем предметных областей и их узлам. Библиотека реализует утилитарные функции, которые могут быть использованы на обеих сторонах - например функции по распаковке/запаковке объектов, реализации каналов связи между узлами. См. рисунок.
- domain_exe - реализует пользовательский интерфейс для распределенного экземпляра подсистемы предметной области - независимо от предметной области. См. ПОП на рисунке сверху.
- node_exe - реализует пользовательский интерфейс для распределенного узла подсистемы предметной области - независимо от предметной области. Аналогичен domain_shared, но для узла.
- lb_exe - реализует пользовательский интерфейс для балансировщиков нагрузки и провайдера балансировщиков нагрузки, которые реализуются разделяемой библиотекой lb_dll.

Следующие реализации устарели и сейчас не совместимы с предметно-независимой подсистемой.
- integral - реализация подсистемы предметной области "Интеграл" по параллельному расчету интеграла . При , Результат должен быть равен .
- integral_client - аналогичный клиент, инициирующий расчет интеграла в предметной области "Интеграл".
Развертывание
Тестовая версия 1
Реализует только сценарий внутрипроцессной работы компонентов системы, за исключением браузера, а также два тестовых клиента, включающих управляющую подсистему в собственное адресное пространство. Реализованы следующие компоненты.
- control - библиотека, реализующая управляющую подсистему, и реализующая интерфейс, предоставляемый веб-серверу.
- arch_ac - реализация моделирующей подсистемы предметной области "Архитектурная акустика".
- arch_ac_client - исполняемый компонент, играющий роль заглушки "пользователь-веб-сервер". Выполняет моделирование в предметной области "Архитектурная акустика".
- integral - реализация подсистемы предметной области "Интеграл" по параллельному расчету интеграла . При , Результат должен быть равен .
- integral_client - аналогичный клиент, инициирующий расчет интеграла в предметной области "Интеграл".