УДК 004.9
doi: 10.21685/2072-3059-2024-1-2
Реализация управляемой приложением функциональной архитектуры пиринговой распределенной вычислительной системы, определяемой концептуальными и логическими моделями искусственного интеллекта. I. Декларативный и логический подходы
В. И. Волчихин1, Н. С. Карамышева2, М. А. Митрохин3, С. А. Зинкин4
1'2'3'4Пензенский государственный университет, Пенза, Россия
1cnit@pnzgu.ru, 2karamyshevans@yandex.ru, 3vt@pnzgu.ru, ^а49@уаМех.т
Аннотация. Актуальность и цели. На большинство сетевых распределенных вычислительных систем (РВС) реализуются клиент-серверные приложения и приложения типа «мастер-исполнители». Актуальным является создание приложений с произвольной структурой, согласованной с функциональной архитектурой РВС. При этом в существенной степени может быть облегчена реализация распределенных вычислений, позволяющая задействовать удаленные компьютеры пользователей для выполнения сложной обработки данных. Показано, что предложенная архитектура распределенных вычислительных систем отличается большой гибкостью и позволяет реализовывать сложные глобальные вычисления на основе обычных дейкстровских и других известных структур распределенного и параллельного программирования. Цель исследования - разработка и экспериментальная апробация методики и технологии реализации распределенных вычислительных систем на сети пиринговых узлов с концептуально определенной функциональной архитектурой. Материалы и методы. Для обеспечения интероперабельности между функциональной и системной архитектурами РВС, с одной стороны, и реализуемым приложением, с другой стороны, в настоящей работе использован подход, основанный на логическом подходе в искусственном интеллекте, а именно на логике предикатов первого порядка с графическим представлением формул в виде концептуальных графов. Для реализации РВС выбрана пиринговая системная сетевая архитектура, которая отличается большой гибкостью и позволяет реализовывать сложные глобальные вычисления на основе обычных дейкстровских и других известных структур распределенного и параллельного программирования, на основе которых построен концептуальный граф распределенного приложения. Результаты. Предложена методика реализации функциональной архитектуры РВС для заданного распределенного приложения. Для хранения текстового представления концептуального графа в приложении выбран текстовый файл. Приложение способно реализовывать произвольные схемы взаимодействия узлов сети; для изменения схемы взаимодействия достаточно изменить конфигурационный файл. Выводы. Проиллюстрирована сложная программная реализация в реальной компьютерной сети управляемая приложением функциональная архитектура пиринговой распределенной вычислительной системы, определяемая концептуальными и логическими моделями искусственного интеллекта.
Ключевые слова: распределенная вычислительная система, пиринговое приложение, функциональная архитектура, декларативный подход, концептуальные модели искусственного интеллекта, текстовое представление концептуального графа
© Волчихин В. И., Карамышева Н. С., Митрохин М. А., Зинкин С. А., 2024. Контент доступен по лицензии Creative Commons Attribution 4.0 License / This work is licensed under a Creative Commons Attribution 4.0 License.
Для цитирования: Волчихин В. И., Карамышева Н. С., Митрохин М. А., Зинкин С. А. Реализация управляемой приложением функциональной архитектуры пиринговой распределенной вычислительной системы, определяемой концептуальными и логическими моделями искусственного интеллекта. I. Декларативный и логический подходы // Известия высших учебных заведений. Поволжский регион. Технические науки. 2024. № 1. С. 19-38. doi: 10.21685/2072-3059-2024-1-2
The implementation of an application-driven functional architecture of a peer-to-peer distributed computing system defined by conceptual and logical models of artificial intelligence. 1. Declarative and logical approaches
V.I. Volchikhin1, N.S. Karamysheva2, M.A. Mitrokhin3, S.A. Zinkin4
i,2,3,4penza state University, Penza, Russia
1cnit@pnzgu.m, 2karamyshevans@yandex.ru, 3vt@pnzgu.ru, 4zsa49@yandex.ru
Abstract. Background. Most network distributed computing systems (DCS) implement "client-server" and "master-slave" applications. It is relevant to create applications with an arbitrary structure consistent with the functional architecture of the DCS. At the same time, the implementation of distributed computing can be significantly facilitated, allowing the use of remote user computers to perform complex data processing. It is shown that the proposed architecture of distributed computing systems is highly flexible and allows the implementation of complex global calculations based on conventional Dijkstra's and other well-known distributed and parallel programming structures. The purpose of the work is to develop and experimentally test a methodology and technology for implementing distributed computing systems (DCS) on a network of peer-to-peer nodes with a conceptually defined functional architecture. Materials and methods. To ensure interoperability between the functional and system architectures of the RCS, on the one hand, and the implemented application, on the other hand, this work uses an approach based on the logical approach in artificial intelligence, namely, on the logic of first-order predicates with graphical representation of formulas in the form of conceptual graphs. To implement the DCS, a peer-to-peer system network architecture was chosen, which is highly flexible and allows the implementation of complex global calculations based on conventional Dijkstra's and other well-known distributed and parallel programming structures, on the basis of which the conceptual graph of a distributed application is built. Results. A technique for implementing the functional architecture of a DCS for a given distributed application is proposed. A text file is selected to store the textual representation of the conceptual graph in the application. The application is capable of implementing arbitrary interaction patterns between network nodes. To change the interaction scheme, it is enough to change the configuration file. Conclusions. The application-controlled functional architecture of a peer-to-peer distributed computing system, defined by conceptual and logical models of artificial intelligence, is illustrated by a complex software implementation in a real computer network.
Keywords: distributed computing system, peer-to-peer application, functional architecture, declarative approach, conceptual models of artificial intelligence, textual representation of a conceptual graph
For citation: Volchikhin V.I., Karamysheva N.S., Mitrokhin M.A., Zinkin S.A. The implementation of an application-driven functional architecture of a peer-to-peer distributed computing system defined by conceptual and logical models of artificial intelligence. 1. Declarative and logical approaches. Izvestiya vysshikh uchebnykh zavedeniy. Povolzhskiy
region. Tekhnicheskie nauki = University proceedings. Volga region. Engineering sciences. 2024;(1):19-38. (In Russ.). doi: 10.21685/2072-3059-2024-1-2
Введение
На основе распределенных вычислительных систем (РВС) реализуются многие средства поддержки решения разнообразных задач. Например, ведутся интенсивные поиски решений в области создания инфраструктуры децентрализованного Интернета на основе нескольких основных технологий: блокчейна, машинного обучения, семантической паутины и интернета вещей [1, 2].
Важнейшими подходами к реализации крупномасштабных распределенных вычислений являются, например, грид-вычисления (англ. Grid Computing) [3, 4] и Р2Р-вычисления (пиринговые, англ. Peer-to-Peer Computing) [5, 6], которые стали распространенными вариантами реализации крупномасштабных распределенных вычислений.
Грид-вычисления используются для организации высокопроизводительных вычислений с экономными затратами. Они должны обладать способностью аккумулировать мощности географически распределенных разнородных ресурсов для формирования единого связного ресурса. Эта способность реализуется программным обеспечением промежуточного уровня (англ. Grid Middleware), выполняющим распределения сетевых ресурсов [3].
Названия и описания ряда распределенных технологий включают слово «вычисления», хотя этот термин почти всегда рассматривается не с позиций традиционной вычислительной математики и является скорее метафорическим. Например, технология вычислений в грид-системах подразумевает реализацию удаленных вычислений с доступом к высокопроизводительным вычислительным ресурсам; при реализации облачных вычислений основное внимание уделяется организации и учету услуг, предоставляемых и контролируемых провайдером облачных сервисов.
Целью настоящей работы является исследование одного из подходов к практической реализации управляемой приложением функциональной архитектуры распределенной сетевой вычислительной системы ADFA-DCS (англ. Application-Driven Functional Architecture of Distributed Computing System), распределенной вычислительной системы, определяемой концептуальными и логическими моделями искусственного интеллекта.
Для реализации системной архитектуры рассматриваемых в настоящей работе РВС выбраны технологии, близкие к пиринговой технологии Р2Р. Как известно, главным отличием Р2Р-архитектуры от клиент-серверной является наличие как программы-клиента, так и программы-сервера на каждом узле, входящем в состав вычислительной сети. В отличие от модели клиент-сервер, сети P2P обычно представляют собой децентрализованные распределенные системы, в которых участвующие одноранговые узлы могут совместно использовать и интегрировать свои вычислительные ресурсы [4, 7-9]. В этой связи преимуществами пиринговой архитектуры являются слабая зависимость от централизованных сервисов и ресурсов, полная или частичная возможность сохранения функционала при серьезных изменениях в структуре сети, а также высокая масштабируемость модели одноранговых вычислений [6-8]. Рассматривается возможность организации инфраструктуры децентра-
лизованного Интернета (англ. Distributed Web - DWeb) в виде одноранговой Р2Р-сети, узлами которой являются устройства пользователей [1, 2, 10].
В зависимости от степени централизации Р2Р-сети делятся на три основные категории: централизованную, децентрализованную и гибридную [6]. Первая категория Р2Р-сетей относится к первому поколению, в состав которого входят один или несколько центральных серверов. В отличие от традиционной клиент-серверной модели, здесь серверы содержат только метаин-формацию об общих ресурсах (например: только адрес, или идентификатор, узла, где доступен общий контент) вместо поддержания и хранения фактических ресурсов.
Для децентрализованной архитектуры сетей P2P характерно отсутствие центрального сервера, и все пиринговые узлы (пиры - от англ. peers) в сети равноправны по функциональным возможностям [4, 6]. Поскольку здесь нет центрального сервера, ответственность за исполнение запросов пользователя распределяется между одноранговыми узлами сети, что является сложной задачей. Однако одноранговые Р2Р-системы становятся все более популярными при разработке интернет-приложений, которые позволяют участникам сотрудничать и выполнять различные типы услуг, распределенных по сети без центральных серверов, осуществляющих мониторинга связей между узлами.
Гибридные Р2Р-сети [6, 11] представляет собой комбинацию централизованных и децентрализованных Р2Р-сетей, поэтому в них обеспечивается надежное управление пиринговыми узлами, а также они отличаются большей масштабируемостью по сравнению с децентрализованными Р2Р-сетями. Более широкие возможности реализуются при помощи так называемых пиринговых супер-узлов, которые образуют более высокий уровень в сети и предоставляют услуги, аналогичные серверным, для своих подмножеств подчиненных пиринговых узлов.
В настоящей работе предложена новая определяемая приложением функциональная архитектура (ФА) распределенных вычислительных систем, названная авторами ADFA-DCS. В отличие от предыдущей работы авторов [12], работа приложения предварительно описывается концептуальными графами сетей Петри. Затем формируется структура, задающая логику работы приложения, и на ее основе генерируется распределенная управляющая программа. Этот принцип позволяет реализовывать произвольные распределенные алгоритмы без затрат на перепрограммирование приложения.
Предложенная ФА реализуется на платформе глобальной или локальной вычислительной сети, на которой определена логическая системная архитектура (СА) распределенной вычислительной системы. Авторы настоящей работы полагают, что сети с архитектурой ADFA-DCS могут создаваться и на платформе территориально-распределенных корпоративных сетей SD-WAN (англ. Software Defined Wide Area Network), при построении которых реализован принципиально новый подход к управлению [13, 14].
1. О реализации распределенных приложений в сети пиринговых узлов
Разрабатываемое приложение, реализующее функциональную архитектуру РВС, должно обеспечивать решение задач, требующих распределения вычислений между компьютерами, удовлетворяющих общим требованиям
к работе приложений в распределенных вычислительных системах и обеспечивающих устойчивость к исключительным ситуациям, возникающих на узлах сети. Кроме того, необходимо создать удобный интерфейс пользователя, реализовать передачу сообщений и данных между узлами и обеспечить возможность проведения параллельных вычислений на узлах вычислительной сети. Обмен файлами также не исключается из рассмотрения. В качестве платформ, на которых реализуется проектируемое распределенное приложение, выбраны пиринговые сети.
Обычно пиринговые сети используются для обмена файлами. Кроме того, с помощью них можно производить распределенные вычисления, позволяющие задействовать удаленные компьютеры пользователей для выполнения сложной обработки данных. Пиринговая сетевая архитектура распределенных вычислительных систем отличается большой гибкостью и позволяет реализовывать сложные глобальные вычисления на основе обычных дейкстровских и других известных структур распределенного и параллельного программирования.
Р2Р-системам органически присуща масштабируемость, что делает их применение особенно эффективным для приложений, которые используют большие данные или с которыми работает большое число пользователей. Поскольку узлы Р2Р-сетей слабо зависят от центрального вычислительного устройства или сервера (если такой вообще существует), появляется возможность повышения уровня масштабируемости сетей и увеличения надежности их работы. Основной задачей становится создание новых алгоритмов обнаружения ресурсов, которые используются в новых Р2Р-платформах.
Для обеспечения интероперабельности между функциональной и системной архитектурами распределенной вычислительной системы, с одной стороны, и реализуемым приложением, с другой стороны, в настоящей работе использован подход, основанный на логическом подходе в искусственном интеллекте, а именно на логике предикатов первого порядка с графическим представлением формул в виде концептуальных графов.
На рис. 1 представлен концептуальный граф развертывания децентрализованной логической системной архитектуры Р2Р-сети с равноправными участниками.
В центре расположены узлы Y0, Y1, ..., Y8 Р2Р-сети, равнодоступные друг другу. Пунктирными линиями обозначены соответствующие логические связи. Размещению модулей A0, Ai, ..., A14 распределенного приложения соответствует графическое представление высказываний вида Place(Ai, Yj), где Place - бинарный предикатный символ, Ai - предметная константа из множества имен модулей реализуемого на сети приложения (первый концепт), Yj -предметная константа из множества имен узлов сети (второй концепт). Бинарный предикат Place для данного примера определяется следующим образом:
Place: A х Y^ {true, false},
где A = {A0, A1,..., A14}, Y = {Y0, Y1,..., Y8}. Одноименное предикату Place(a,y), где a e A, b e B, бинарное отношение носит функциональный характер.
Внутренним логическим связям в РВС соответствует тривиальный бинарный предикат Link(y, z), описывающий полный орграф с петлями:
Link: Yх Z ^ {true},
где Y - множество источников сообщений и данных; Z - множество приемников сообщений и данных; для децентрализованной Р2Р-сети Y = Z, т.е. каждый узел в Р2Р-сети может быть как передающим, так и принимающим сообщения и данные.
Рис. 1. Концептуальный граф развертывания децентрализованной пиринговой сети с равноправными участниками
Другой вариант реализации логической системной архитектуры централизованной Р2Р-сети представлен на рис. 2. Здесь все передачи осуществляются через центральный узел Comm, который в общем случае не является сервером, а служит звеном передачи и контроля информации в виде сообщений, передаваемых между равноправными узлами. В простейшем случае системная архитектура подобной сети может быть описана следующим тернарным предикатом:
LinkC: Yх {Comm} х Z ^ {true},
где Y = Z, т.е. все связи реализуются через центральный компьютер-коммутатор Comm, который в приведенном выражении обозначен одноименной предметной константой.
2. Элементы концептуальных графов и декларативная логика распределенного децентрализованного P2P-приложения
Проектируемое распределенное приложение реализует взаимодействие узлов по схеме на основе концептуального графа. Такое представление гаран-
тирует интероперабельность функциональной и системной архитектур распределенной вычислительной (например, облачно-сетевой) системы с решаемыми задачами обработки семантической информации.
Рис. 2. Концептуальный граф централизованной пиринговой сети с равноправными участниками и выделенным узлом для временного хранения передаваемых сообщений и данных
Концептуальный граф распределенного приложения может быть построен путем графической интерпретации известных конструкций структурного распределенного программирования.
Сетевая операция Seq последовательной передачи управления
Последовательному переходу соответствует концептуальный граф, представленный на рис. 3,а, и описывающий прямую передачу управления и данных (задана предикатом Send) от одного оператора Ai, размещенного на узле Ym (предикат Place) другому оператору Aj, размещенному на узле Yn (предикат Place) с квитированием (предикат Ack).
Передача управления и данных в распределенных сетевых приложениях здесь и далее осуществляется путем передачи сообщений между узлами. На рис. 3,б приведены правила для связей концептов, сгенерированные программно по XML-представлению концептуального графа, а на рис. 3,в - формула для составного высказывания, описывающего структуру, или реализуемость, графа.
Концептуальный граф, изображенный на рис. 3, представляет декларативную составляющую распределенного приложения. Для разработки при-
ложения необходимо задать также и процедурную, или императивную, составляющую. Эту составляющую предлагается задавать при помощи логико-алгебраических операционных (исполнимых) моделей, использующих операции модификации бинарных предикатов
a)
Факты, связывающие Составное высказывание -
концепты между собой: условие реализуемости
концептуального графа:
Send of Ai is Aj, Place(Ai, Ym) &
Place of Ai is Ym, Place(Aj, Yn) &
Place of Aj is Yn, Send(Ai, Aj) &
Ack of Aj is Ai. Ack(Aj, Ai).
б) в)
Рис. 3. Концептуальный граф Seq для последовательной передачи управления и данных в вычислительной сети (а) и соответствующие ему формульные представления (б и в)
Использована следующая нотация для оператора, подобного оператору if в процедурно-ориентированных языках:
[а](А © B).
Данное выражение означает, что при истинности условия а выполняется действие А, а при его ложности - действие B. Здесь [а] - условная часть продукционного правила, где квадратные скобки обязательны. В круглые скобки, также обязательные, заключена операционная часть продукционного правила. Далее данный оператор может использоваться в следующей частной форме:
[а](А © E),
где E - «пустое» действие.
Логико-алгебраические операционные выражения, дополняющие концептуальный граф Seq на рис. 3, описывают события, происходящие на передающем и принимающем узлах.
События на передающем узле Ym: Place(Ai, Ym) ^ true; Place(Aj, Yn) ^ false; Send(Ai, Aj) ^ false; Ack(Aj, Ai) ^ false; Inquiry(Ai, Aj) ^ false; Inquiry(Ai, Aj) ^ true; [Place*(Aj, Yn)](Send(Ai, Aj) ^ true © E) •; [Ack*(Aj, Ai)](Ack(Aj, Ai) ^ false © E) •.
События на принимающем узле Yn.
Place(Aj, Yn) ^ true;
[Inquiry*(Ai, Aj)](Inquiry(Ai, Aj) ^ false © E) •; [Send*(Ai, Aj)](Send(Ai, Aj) ^ false © E) •;
Ack*(Aj, Ai) ^ true;
Ack(Aj, Ai) ^ false.
C операциями модификации бинарных предикатов связаны как
обычные операции модификации предикатов, так и сетевые операции, связанные с передачей сообщений между узлами. Такой метод назовем методом непосредственной интерпретации логико-алгебраических операционных выражений (ЛАОВ). От методов операционной интерпретации сетевых спецификаций, рассмотренных в работе [12], данный метод отличается тем, что интерпретацией охвачены межузловые передачи информационных, квитирующих и служебных «опрашивающих» сообщений.
Здесь и далее в конце ЛАОВ может быть использован символ « • », означающий, что должна выполняться повторная проверка на истинность условия в продукционном правиле до тех пор, пока не будет достигнуто заданное заранее по умолчанию число повторений.
Символ «*» в предикатных именах означает, что действия по проверке условий или модификации предикатов реализуются в передающем и принимающем узлах c необходимым обменом сообщениями по умолчанию. Условно подобные действия в распределенной системе можно назвать реализацией декларативно-императивной, или декларативно-процедурной, логики распределенного приложения.
Операция неравнозначности «©» означает в ЛАОВ выбор одной из двух альтернатив.
На передающем узле Ym развиваются события, представляющие собой реализацию последовательности продукционно-подобных правил.
Модификации предиката Place(Ai, Ym) ^ true соответствует инициирование событий на передающем узле.
События Place(Aj, Yn) ^ false, Send(Ai, Aj) ^ false и Ack(Aj, Ai) ^ false и Inquiry(Ai, Aj) ^ false предваряют операции обмена сообщениями передающего узла Ai с принимающим узлом Aj.
Модификации предиката Inquiry(Ai, Aj) ^ true соответствует отправка опрашивающего сообщения от оператора Ai оператору Aj, сетевой адрес которого известен. Это сообщение опрашивает принимающий узел Yn о том, что оператор Aj на нем размещен и может быть инициирован. Принимающий узел, получив сообщение Inquiry, выполняет действия, соответствующие следующему ЛАОВ:
[Inquiry*(Ai, Aj)](Inquiry(Ai, Aj) ^ false © E) •.
Звездочка у имени бинарного предиката Inquiry* означает, что соответствующий этому предикату запрос поступает с «противоположного», т.е. с передающего узла, и высказывание Inquiry*(Ai, Aj), проверяемое на принимающем узле, становится истинным. Реагируя на это событие, принимающий узел Yn посылает в ответ передающему узлу Ym подтверждающее сообщение c истинным значением высказывания Place*(Aj, Yn). Звездочка при имени бинарного предиката Place* означает, что подтверждающее сообщение посыла-
ется на «противоположный», т.е. передающий узел Ym. Выполнение операции Inquiry(Ai, Aj) ^ false означает, что операции приема и передачи сообщений принимающим узлом выполнены успешно. В противном случае управление передается на повторную попытку выполнения данного правила, на что указывает символ « • ». После заданного числа безуспешных попыток в принимающем узле происходит передача управления на первый оператор Place(Aj, Yn) ^ true.
Получив информацию о готовности принимающего узла, передающий узел выполняет передачу сообщения с данными на принимающий узел:
[Place*(Aj, Yn)](Send(Ai, Aj) ^ true © E) •.
Принимающий узел Aj, получив сообщение с данными, в процессе выполнения продукционного правила
[Send*(Ai, Aj)](Workj, Send(Ai, Aj) ^ false © E)^
обрабатывает полученную информацию, выполняя прикрепленную процедуру Workj, и далее отправляет квитирующее сообщение Ack передающему узлу, что соответствует выполнению операций Ack(Aj, Ai) ^ true - посылке подтверждения и Ack(Aj, Ai) ^ false - завершению обработки данных. Передающий узел принимает подтверждение, что соответствует выполнению продукционного правила
[Ack*(Aj, Ai)](Ack(Aj, Ai) ^ false © E) •.
Несмотря на некоторую громоздкость описания, предлагаемый метод разработки распределенных приложений на основе логико-алгебраических спецификаций, как показал опыт, упрощает дальнейшее программирование.
Сетевая операция If альтернативного выбора направления передачи сообщений с квитированием
Рассмотрим далее операцию передачи сообщения по одному из двух направлений после проверки некоторого условия, что соответствует оператору If в процедурно-ориентированных языках программирования. Концептуальный граф для сетевой операции альтернативной передачи управления представлен на рис. 4. Здесь использовано обозначение Ai|Zi, означающее, что в процессе выполнения оператора Ai формируется истинное или ложное значение условия Zi; в случае его истинности (Ai|true) управление (сообщение с данными) передается оператору Aj, размещенному на узле Yr, а при его ложности (Ai|false) - оператору Ak на узле Ys. Случаю Ai|true будет соответствовать истинность высказывания Send_y(Ai|true, Aj), а случаю Afalse - истинность высказывания Send_n(Ai|false, Ak).
События на передающем узле Yt:
Place(Ai|Zi, Yt) ^ true;
Place(Ak, Ys) ^ false;
Place(Aj, Yr) ^ false;
Ack(Ak, Ai) ^ false;
Ack(Aj, Ai) ^ false;
Inquire(Ai, Aj) ^ false;
[A1|Z1]((Inquiry(A1, Aj) ^ true, [Place*(Aj, Yr)](Send(Ai, Aj) ^ true © E^, [Ack*(Aj, Ai)](Ack(Aj, Ai) ^ false © E)^) © (Inquiry(Ai, Ak) ^ true, [Place*(Ak, Ys)](Send(Ai, Ak) ^ true © E)\ [Ack*(Ak, Ai)](Ack(Ak, Ai) ^ false © E)^)).
а)
Факты, связывающие концепты между собой: Place of Ai|Zi is Yt, Send_n of Ai|Zi is Ak, Send_y of Ai|Zi is Aj, Ack_n of Ak is Ai|Zi, Place of Ak is Ys, Ack_y of Aj is Ai|Zi, Place of Aj is Yr.
б)
Составное высказывание -условие реализуемости концептуального графа: Place(Ai|Zi, Yt) & Place(Ak, Ys) & Place(Aj, Yr) & (Send_y(Ai|true, Aj) © Send_n(Ai|false, Ak)) & Ack_y(Aj, Ai|true) & Ack_n(Ak, Ai|false).
в)
Рис. 4. Концептуальный граф If для альтернативной передачи управления и данных в вычислительной сети (а) и соответствующие ему формульные представления (б и в)
События на принимающем узле Yr: Place(Aj, Yr) ^ true; [Inquiry*(Ai, Aj)](Inquiry(Ai, Aj) ^ false, Ack*(Aj, Ai) ^ true © E)^; Ack*(Aj, Ai) ^ false.
События на принимающем узле Ys: Place(Ak, Ys) ^ true; [Inquiry*(Ai, Ak)](Inquiry(Ai, Ak) ^ false, Ack*(Ak, Ai) ^ true © E)^; Ack*(Ak, Ai) ^ false.
Сетевая операция Cycle для распределенного цикла с квитированием
На рис. 5 представлен концептуальный граф Cycle для циклического участка распределенного алгоритма в вычислительной сети и соответствующие ему формульные представления.
а)
Факты, связывающие концепты между собой: Place of Ai|Zi is Yt, Send_y of Ai|Zi is Ak, Send_n of Ai|Zi is Ai|Zi, Ack_y of Ak is Ai|Zi, Place of Ak is Ys.
б)
Составное высказывание -условие реализуемости концептуального графа: Place(Ai|Zi, Yt) & Place(Ak, Ys) & (Send_y(Ai|true, Ak) 8 Send_n(Ai|false, Ai|Zi)) & Ack_y(Ak, Ai|true).
в)
Рис. 5. Концептуальный граф Cycle для циклического участка
распределенного алгоритма с квитированием в вычислительной сети (а) и соответствующие ему формульные представления (б и в)
Сетевая операция Switch-Or с квитированием
Выполнение сетевой операции Switch-Or с квитированием задается концептуальным графом, представленным на рис. 6. Операция реализует передачу сообщения по одной из ветвей распределенного алгоритма по значению переменной k.
3. Методика описания распределенных сетевых Р2Р-приложений для сети пиринговых узлов с концептуально определенной функциональной архитектурой
Структуры хранения концептуальных графов распределенных приложений в форме конфигурационных файлов
Для хранения текстового представления концептуального графа в приложении выбран текстовый файл. Приложение способно реализовывать произвольные схемы взаимодействия узлов сети; для изменения схемы взаимодействия достаточно изменить конфигурационный файл.
Данные формируются и записываются в файл по следующей схеме:
"[Оператор] ; [Узел] ; [Родительские операторы] ; [Дочерние операторы]".
В случае отсутствия родительских или дочерних операторов допускается ничего не указывать на месте соответствующих полей, тогда формат записи данных имеет следующий вид: "Л0; УС; ;".
Пропуск полей оператора и узла не допускается. Описание схематических обозначений приведено в табл. 1.
а)
Факты, связывающие Составное высказывание -
концепты между собой: условие реализуемости
Place of Ai|k is Yi, концептуального графа:
Send of An is Aj, Place(Ai|k,Yi) &
Send of A2 is Aj, Place(Aj,Yj) &
Send of A1 is Aj, [Ai|k]((k = 1) & Place(Ai, Yi) &
Send_n of Ai|k is An, Send i(Ai|i, Ai) &
Send_1 of Ai|k is A1, Ack_1(Ai, Ai|1) &
Send_2 of Ai|k is A2, Send(Ai, Aj) v
Place of Aj is Yj, (k = 2) & Place(A2, Y2) &
Place of An is Yn, Send 2(Ai|2, A2) &
Ack of Aj is Ai|k, Ack_2(A2, Ai|2) &
Place of A2 is Y2, Send(A2, Aj) v
Place of A1 is Y1, (k = n) & Place(An, Yn) &
Ack_n of An is Ai|k, Send n(Ai|n, An) &
Ack 2 of A2 is Ai|k, Ack n(An, Ai|n) &
Ack_1 of A1 is Ai|k. Send(An, Aj)) &
Ack(Aj, Ai|k).
б) в)
Рис. 6. Концептуальный граф сетевой операции Бикск-Ог с квитированием (а) и соответствующие ему формульные представления (б и в)
Таблица 1
Описание обозначений
Схематическое обозначение Описание
[Оператор] Порядковый номер оператора
ГУзел1 Номер узла, на котором располагается оператор
[Родительские операторы] Операторы, от которых текущий оператор ожидает передачи управления
[Дочерние операторы] Операторы, которым передает управление текущий оператор
Родительских и дочерних узлов может быть несколько. Для обозначения различных операций в графе используются следующие обозначения:
- косая черта (слеш) « / » - для обозначения параллельного выполнения операторов;
- запятая « , » - для обозначения условного перехода или ситуации свободного выбора оператора;
- точка « . » - для обозначения конца файла.
Сетевая операция Fork-Join с квитированием
Например, для графа, приведенного на рис. 7, конфигурационный файл будет содержать следующую информацию:
A1; Y1; ; A2 / A3 / A4 A2; Y2; A1; A5 A3; Y3; A1; A5 A4; Y4; A1; A5 A5; Y5; A2 / A3 / A4;.
Здесь для оператора A5, размещенного на узле Y5 Р2Р-сети, указаны три родительских оператора A2/A3/A4, выполняемые параллельно, и не указаны дочерние операторы. Местонахождение родительских операторов должно быть указано в предыдущих строках описания конфигурационного файла.
В следующем примере выполнение сетевой операции Fork-Join с квитированием задается концептуальным графом, представленным на рис. 7.
На рис. 7,б прямым полужирным шрифтом обозначены факты, связывающие концепты между собой; данные выражения получены автоматически путем обработки XML-файла, использованного для внутреннего представления концептуального графа, представленного на рис. 7,а. Формула, приведенная на рис. 7,в, представляет собой составное высказывание - условие правильной реализуемости концептуального графа. Далее это высказывание будет использовано при разработке декларативно-процедурной модели представления знаний о функциональной архитектуре РВС, построенной на основе Р2Р-сети.
4. Концептуальное программирование распределенного приложения для пиринговой РВС на основе декларативного и логического подходов
Рассмотрим, например, приведенное на рис. 8 представление распределенного алгоритма концептуальным графом (КГ).
Здесь введены отношения следования Send, Send_1, Send_2 и Send_3, которые связывают операторы-концепты по данным и управлению путем передачи сообщений. Отношения Ack, Ack_1, Ack_2 и Ack_3 связывают операторы-концепты при передаче квитирующих сообщений. Отношение Place определяет размещение операторов по узлам сети. Выбор имени оператора A9|k означает, что его выполнение сопровождается вычислением значения переменной k, которое проверяется при выборе направления передачи управления и данных. Унарный предикат R определяет начальную разметку позиции A0.
Такое представление удобно использовать как для реализации распределенных сетевых приложений, так и для создания интеллектуальных приложений на основе логического подхода. При помощи интеллектуального редактора концептуальных графов получены следующие высказывания (факты), сведенные в табл. 2.
а)
Факты, связывающие концепты между собой:
Send of An is Aj, Send of A2 is Aj, Send of A1 is Aj, Send of Ai is An, Send of Ai is A1, Send of Ai is A2, Place of Aj is Yj, Place of An is Yn, Ack of Aj is Ai, Place of A2 is Y2, Place of A1 is Y1, Ack of An is Ai, Ack of A2 is Ai, Place of Ai is Yi, Ack of A1 is Ai.
б)
Составное высказывание -условие реализуемости концептуального графа: Place(A1, Y1) & Place(A2, Y2) & Place(An, Yn) & Place(Ai, Yi) & Place(Aj, Yj) & Send(Ai, A1) & Send(Ai, A2) & Send(Ai, An) & Ack(A1, Ai) & Ack(A2, Ai) & Ack(An, Ai) & Send(A1, Aj) & Send(A2, Aj) & Send(An, Aj) & Ack(Aj, Ai).
в)
Рис. 7. Концептуальный граф сетевой операции Fork-Join с квитированием (а) и соответствующие ему формульные представления (б и в)
В табл. 3 внесены факты, или элементарные высказывания, непосредственно предназначенные для включения в распределенное приложение.
Программирование приложений на основе декларативного (точнее, декларативно-логического) подхода иллюстрируется на конкретном примере, но имеет более общий характер.
Особенность предлагаемого в данной работе декларативного подхода к созданию распределенного приложения заключается в следующем. Данные факты, приведенные в табл. 3, непосредственно используются при программировании прототипа распределенного алгоритма, представленного на рис. 8. Его работа протекает следующим образом. При истинности высказывания R(A0) программа находит высказывание, содержащее оператор A0 в качестве первого аргумента. В данном случае это высказывание Send(A0,A1). Далее выбирается второй аргумент - это имя оператора (предметная константа) A1,
которому передается управление при помощи сообщения. Далее отыскивается высказывание, в котором имя оператора А1 является первым аргументом, выбирается второй аргумент и т.д., до нахождения оператора А14.
Рис. 8. Пример представления распределенного приложения концептуальным графом G0
Таблица 2
Составное высказывание для концептуального графа Go
There is a Proposition where There is a Proposition where (cont.)
Send_1 of A9|k is A10 and Ack of A3 is A2 and
Ack of A6 is A2 and Ack of A4 is A2 and
Send_3 of A9|k is A12 and Ack of A5 is A2 and
Send_2 of A9|k is A11 and Ack_1 of A10 is A9|k and
Send of A2 is A5 and Place of A5 is Y3 and
Send of A1 is A2 and Place of A7 is Y4 and
Send of A14 is AO and Place of A8 is Y4 and
Send of A0 is A1 and Send of A8 is A9|k and
Place of A9|k is Y4 and Send of A7 is A8 and
Place of A12 is Y7 and Place of A2 is YO and
R is AO and Place of A1 is YO and
Place of A10 is Y5 and Place of AO is YO and
Place of A11 is Y6 and Send of A6 is A7 and
Send of A2 is A4 and Send of A5 is A6 and
Place of A13 is Y8 and Send of A4 is A6 and
Place of A14 is Y8 and Send of A12 is A13 and
Ack_3 of A12 is A9|k and Send of A11 is A13 and
Send of A2 is A3 and Send of A1O is A13 and
Ack_2 of A11 is A9|k and Send of A3 is A6 and
Place of A3 is Y1 and Ack of A13 is A9|k and
Place of A4 is Y2 and Send of A13 is A14.
Таблица 3
Факты для концептуального графа Go
Facts (1) Facts (2) Facts (3) Facts (4)
R(A0). Place(A2,Y0). Place(A13,Y8). Send(A7,A8).
Ack(A3,A2). Place(A3,Y1). Place(A14,Y8). Send(A8,A9|k).
Ack(A4,A2). Place(A4,Y2). Send(A0,A1). Send_1(A9|k,A10).
Ack(A5,A2). Place(A5,Y3). Send(A1,A2). Send_2(A9|k,A11).
Ack(A6,A2). Place(A6,Y3). Send(A2,A3). Send_3(A9|k,A12).
Ack 1(A10,A9|k). Place(A7,Y4). Send(A2,A4). Send(A10,A13).
Ack 2(A11,A9|k). Place(A8,Y4). Send(A2,A5). Send(A11,A13).
Ack 3(A12,A9|k). Place(A9|k,Y4). Send(A3,A6). Send(A12,A13).
Ack(A13, A9|k). Place(A10,Y5). Send(A4,A6). Send(A13,A14).
Place(A0,Y0). Place(A11,Y6). Send(A5,A6). Send(A14,A0).
Place(A1,Y0). Place(A12,Y7). Send(A6,A7).
Обычные для распределенного и параллельного программирования парные операторы Fork и Join выполняются следующим образом. В случае, когда при поиске первого аргумента в высказывании будет обнаружено несколько таких высказываний (в нашем случае это высказывания Send(A2,A3), Send(A2,A4) и Send(A2,A5)), то в конце выполнения оператора A2 будут последовательно созданы три сообщения, которые будут переданы операторам A3, A4 и A5 соответственно. Этот процесс принят, с некоторыми оговорками, за выполнение оператора Fork. Выполнению оператора Join соответствует конъюнктивная сборка сообщений на входе оператора A6, найденного по той же методике, что и все остальные операторы.
Выполнение пары операторов Switch-Or зависит от значения некоторой переменной k, вычисленного начальным оператором Switch. Например, согласно графу G0 и табл. 3 работа оператора Switch начинается с того момента, когда выбран оператор A9|k. По завершении работы этого оператора вычисляется параметр k, по значению которого становится истинным и выбирается одно из выражений Send_1 (A9|k,A10), Send_2(A9|k,A11) или Send_3(A9|k,A12) и определяется следующий оператор - A10, A11 или A12.
Предлагаемый декларативный подход основан на неполной формализации функциональной архитектуры РВС и требует приложения усилий разработчиков программного обеспечения к использованию неопределенных формально правил.
Заключение
Предложена новая функциональная архитектура РВС, названная авторами ADFA-DCS (англ. Application-Driven Functional Architecture of Distributed Computing System) - функциональная архитектура распределенных вычислительных систем, определяемая приложением. В отличие от предыдущей работы авторов [12], предложенная ФА реализуется на платформе глобальной или локальной вычислительной сети, на которой определена логическая системная архитектура распределенной вычислительной системы. Разработка функциональной архитектуры ADFA-DCS базируется на пиринговых и, возможно, на программно-определяемых технологиях и архитектурах [14, 15].
Процесс программирования распределенного приложения сопровождается использованием функций передачи сообщений и данных, поиском дан-
ных в таблицах, копии которых находятся на всех узлах ?2?-сети, и реализацией операторов, выполняющих функции, для которых и была предназначена создаваемая сетевая РВС.
Предложенная ФА реализуется на платформе глобальной или локальной вычислительной сети, на которой определена логическая системная архитектура распределенной вычислительной системы. Авторы настоящей работы полагают, что сети с архитектурой ADFA-DCS могут создаваться и на платформе территориально-распределенных корпоративных сетей SD-WAN.
Список литературы
1. Шибут М. С. Информационные технологии в управлении. 2022. URL: https://itud-pac-by.blogspot.com/ (дата обращения: 0i.09.2023).
2. Танг Н. Web 3.0: Децентрализованный Интернет будущего. 2022. URL: https://phemex.com/ru/blogs/web-3-0-Децентрализованный-Интернет-будущего. (дата обращения: 0i.09.2023).
3. Manoj Kumar Mishra, Yashwant Singh Patel, Moumita Ghosh, Mund G. B. A Review and Classification of Grid Computing Systems // International Journal of Computational Intelligence Research. 20i7. Vol. i3, № 3. P. 369-402.
4. Радченко Г. И. Распределенные вычислительные системы. Челябинск : Фотохудожник, 20i2. i84 с.
5. Cabani A., Ramaswamy S., Itmi M., Siti Haziqah Shukri, Pecuchet J.-P. Distributed Computing Systems: P2P versus Grid Computing Alternatives // Innovations and Advanced Techniques in Computer and Information Sciences and Engineering. 2007. P. 47-52. doi: i0.i007/978-i-4020-6268-i_9
6. Giridhar Kumar D., SubbaRao Ch. D. V. Peer-To-Peer Computing: Architectures, Applications and Challenges // International Journal of Recent Technology and Engineering (IJRTE). 20i9. Vol. 8, № iS4. P. 630-636.
7. Kahanwal B., Singh T. P. The Distributed Computing Paradigms: P2P, Grid, Cluster, Cloud, and Jungle // International Journal of Latest Research in Science and Technology. 20i2. Vol. i, № 2. P. i83-i87.
8. Vu Q. H., Lupu M., Ooi B. Ch. Peer-to-Peer Computing Principles and Applications. Springer, 20i0. doi: i0.i007/978-3-642-035i4-2
9. Право цифровой среды : монография / под ред. Т. П. Подшивалова, Е. В. Титовой, Е. А. Громовой. М. : Проспект, 2022. 896 с.
10. Moskov A. The State of the Decentralized Web (DWeb): Key Industry Insights. URL: https://coincentral.com/state-of-the-decentralized-web-2020/ (дата обращения: 0i.09.2023).
11. Duan Zh. H., Tian C., Zhou M. Ch., Wang X. B., Zhang N., Du H. W., Wang L. Two-layer hybrid peer-to-peer networks // Peer-to-peer Networking and Application. 20i6. Vol. i0 (6). P. i304-i329. doi: 10.1007/s12083-016-0460-5
12. Зинкин С. А., Джафар М. С., Карамышева Н. С. Концептуальные представления и модификации сетей Петри для приложений в области синтеза функциональной архитектуры распределенных вычислительных систем с переменной структурой // Известия Юго-Западного государственного университета. 20i8. Т. 22, № 6 (8i). С. i43-i67.
13. Карамышева Н. С., Свищев Д. С., Попов К. В., Зинкин С. А. Реализация агентно-базированных метакомпьютерных систем и приложений // Известия Юго-Западного государственного университета. 2022. Т. 26, № i. С. i48-i7i. doi: i0.2i869/2223-i560-2022-26-i-i48-i7i
14. SD-WAN Software Defined. Программно-определяемая WAN-сеть. 2022. URL: https://www.tadviser.ru/index.php/Статья:SD-
WAN_(Software_Defined)_Прогpаммно-определяемая_WAN-сеть (дата обращения: 01.09.2023).
15. Yang Zh., Cui Y., Li B., Liu Y., Xu Y. Software-Defined Wide Area Network (SD-WAN): Architecture, Advances and Opportunities // 28th International Conference on Computer Communication and Networks (ICCCN). Valencia, Spain, 2019. P. 1-9. doi: 10.1109/ICCCN.2019.8847124
References
1. Shibut M.S. Informatsionnye tekhnologii v upravlenii = Information technologies in management. 2022. (In Russ.). Available at: https://itud-pac-by.blogspot.com/ (accessed 01.09.2023).
2. Tang N. Web 3.0: Detsentralizovannyy Internet budushchego = Decentralized Internet of the future. (In Russ.). 2022. Available at: https://phemex.com/ru/blogs/web-3-0-Detsentralizovannyy-Internet-budushchego. (accessed 01.09.2023).
3. Manoj Kumar Mishra, Yashwant Singh Patel, Moumita Ghosh, Mund G.B. A Review and Classification of Grid Computing Systems. International Journal of Computational Intelligence Research. 2017;13(3):369-402.
4. Radchenko G.I. Raspredelennye vychislitel'nye sistemy = Distributed computing systems. Chelyabinsk: Fotokhu-dozhnik, 2012:184. (In Russ.)
5. Cabani A., Ramaswamy S., Itmi M., Siti Haziqah Shukri, Pecuchet J.-P. Distributed Computing Systems: P2P versus Grid Computing Alternatives. Innovations and Advanced Techniques in Computer and Information Sciences and Engineering. 2007:47-52. doi: 10.1007/978-1-4020-6268-1_9
6. Giridhar Kumar D., SubbaRao Ch.D.V. Peer-To-Peer Computing: Architectures, Applications and Challenges. International Journal of Recent Technology and Engineering (IJRTE). 2019;8(1S4):630-636.
7. Kahanwal B., Singh T.P. The Distributed Computing Paradigms: P2P, Grid, Cluster, Cloud, and Jungle. International Journal of Latest Research in Science and Technology. 2012;1(2):183-187.
8. Vu Q.H., Lupu M., Ooi B.Ch. Peer-to-Peer Computing Principles and Applications. Springer, 2010. doi: 10.1007/978-3-642-03514-2
9. Podshivalov T.P., Titova E.V., Gromova E.A. (eds.). Pravo tsifrovoy sredy: monografi-ya = Digital law: monograph. Moscow: Prospekt, 2022:896. (In Russ.)
10. Moskov A. The State of the Decentralized Web (DWeb): Key Industry Insights. Available at: https://coincentral.com/state-of-the-decentralized-web-2020/ (accessed 01.09.2023).
11. Duan Zh.H., Tian C., Zhou M.Ch., Wang X.B., Zhang N., Du H.W., Wang L. Two-layer hybrid peer-to-peer networks. Peer-to-peer Networking and Application. 2016;10(6):1304-1329. doi: 10.1007/s12083-016-0460-5
12. Zinkin S.A., Dzhafar M.S., Karamysheva N.S. Conceptual representations and modifications of Petri nets for applications in the field of synthesis of functional architecture of distributed computing systems with variable structure. Izvestiya Yugo-Zapadnogo gosu-darstvennogo universiteta = News of the Southwestern State University. 2018;22(6):143-167. (In Russ.)
13. Karamysheva N.S., Svishchev D.S., Popov K.V., Zinkin S.A. Implementation of agent-based metacomputer systems and applications. Izvestiya Yugo-Zapadnogo gosudar-stvennogo universiteta = News of the Southwestern State University. 2022;26(1):148-171. (In Russ.). doi: 10.21869/2223-1560-2022-26-1-148-171
14. SD-WAN Software Defined. Programmno-opredelyaemaya WAN-set'. 2022. Available at: https://www.tadviser.ru/index.php/Stat'ya:SD-WAN_(Software_Defined)_ Programmno-opredelyaemaya_WAN-set' (accessed 01.09.2023).
15. Yang Zh., Cui Y., Li B., Liu Y., Xu Y. Software-Defined Wide Area Network (SD-WAN): Architecture, Advances and Opportunities. 28th International Conference on Computer Communication and Networks (ICCCN). Valencia, Spain, 2019:1-9. doi: 10.1109/ICCCN.2019.8847124
Информация об авторах / Information about the authors
Владимир Иванович Волчихин
доктор технических наук, профессор, президент Пензенского государственного университета (Россия, г. Пенза, ул. Красная, 40)
E-mail: cnit@pnzgu.ru
Надежда Сергеевна Карамышева
кандидат технических наук, доцент кафедры вычислительной техники, Пензенский государственный университет (Россия, г. Пенза, ул. Красная, 40)
E-mail: karamyshevans@yandex.ru
Максим Александрович Митрохин
доктор технических наук, доцент, заведующий кафедрой вычислительной техники, Пензенский государственный университет (Россия, г. Пенза, ул. Красная, 40)
E-mail: vt@pnzgu.ru
Сергей Александрович Зинкин доктор технических наук, профессор, профессор кафедры вычислительной техники, Пензенский государственный университет (Россия, г. Пенза, ул. Красная, 40)
E-mail: zsa49@yandex.ru
Vladimir I. Volchikhin Doctor of engineering sciences, professor, president of Penza State University (40 Krasnaya street, Penza, Russia)
Nadezhda S. Karamysheva
Candidate of engineering sciences, associate
professor of the sub-department of computer
engineering, Penza State University
(40 Krasnaya street, Penza, Russia)
Maksim A. Mitrokhin Doctor of engineering sciences, associate professor, head of the sub-department of computer engineering, Penza State University (40 Krasnaya street, Penza, Russia)
Sergey A. Zinkin Doctor of engineering sciences, professor, professor of the sub-department of computer engineering, Penza State University (40 Krasnaya street, Penza, Russia)
Авторы заявляют об отсутствии конфликта интересов / The authors declare no conflicts of interests.
Поступила в редакцию / Received i8.09.2023
Поступила после рецензирования и доработки / Revised 2i.i2.2023 Принята к публикации / Accepted 20.0i.2024