Метод декомпозиции распределенных сервисных систем с использованием сетей Петри тема диссертации и автореферата по ВАК РФ 05.13.11, кандидат наук Якушкин Олег Олегович

  • Якушкин Олег Олегович
  • кандидат науккандидат наук
  • 2021, ФГБОУ ВО «Санкт-Петербургский государственный университет»
  • Специальность ВАК РФ05.13.11
  • Количество страниц 265
Якушкин Олег Олегович. Метод декомпозиции распределенных сервисных систем с использованием сетей Петри: дис. кандидат наук: 05.13.11 - Математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей. ФГБОУ ВО «Санкт-Петербургский государственный университет». 2021. 265 с.

Оглавление диссертации кандидат наук Якушкин Олег Олегович

Введение

Глава 1. Аналитический обзор

Глава 2. Новая модель описания распределенных сервисных

систем, построенная на базе сетей Петри

2.0.1 Рассматриваемая проблема

2.0.2 Проверка требований к типу

2.0.3 Возможности SOPN

2.0.4 Расширения сетей Петри в модели SOPN

2.1 Предложенное новое решение - Сервисно-ориентированная модель

на базе сетей Петри

2.1.1 Основные расширения

2.1.2 Integers

2.1.3 Целочисленные операции

2.1.4 Вложенные типы

2.1.5 Модули

2.1.6 О полученной модели SOPN

2.1.7 Описание модели SOPN

Глава 3. Апробация представленного метода декомпозиции

распределенных сервисных систем

3.1 Практическая реализация модели SOPN

3.1.1 Архитектура системы SOPN CSharp

3.1.2 Принципы организации объектной модели SOPN

3.2 Метод организации объектной модели SOPN

3.2.1 Перенос объектов сервисных систем в модель SOPN

3.2.2 Отличительные особенности построенной модели с практической точки зрения

3.2.3 Методика оценки работоспособности распределенных сервисных систем с учетом потенциальных

инфраструктурных проблем

3.3 Апробация модели

3.3.1 Моделирование законов Амдала и Густафсона

3.4 Верификация сложных моделей распределенных сервисных систем

3.4.1 Алгоритм моделирования

3.4.2 Моделирование в MADT приложения с клиент- серверной архитектурой

3.4.3 Моделирование взаимодействия компонентов распределенного приложения по сети с помощью MADT

3.5 Эксперимент по моделированию HPC системы с топологией FatTree

Заключение

Список литературы

Список рисунков

Приложение А. Взаимодействия в распределенных сервисных

системах

А.1 Шаблоны сервисного взаимодействия

А.1.1 Шаблон «Подписчик-Респондент» (англ. "Publish-Subscribe")

А.1.2 Шаблон «Клиент-Сервер» (англ. "Request-Reply")

А.1.3 Шаблон «Конвейер» (англ. "Pipeline")

А.1.4 Шаблон «Опрос» (англ. "Survey-Respondent")

А.2 Взаимодействие шаблонов передачи сообщений

А.2.1 События и операции

А.2.2 Цепочки операций

А.3 Распределенное хранение и верификация данных

А.3.1 Сетевые уязвимости cмарт-контрактов

А.3.2 Ошибка доступа

А.3.3 Очередность обмена

А.3.4 Зависимость временных меток

А.4 Выводы

Приложение Б. Методы формального моделирования

распределенных сервисных взаимодействий

Б.1 Формальная верификации алгоритмов работы программы

Б.2 Языки формальной верификации

Б.2.1 Изабель

Б.2.2 Coq

Б.2.3 Verdi

Б.2.4 TLA+

Б.2.5 Сравнение языков формальной верификации

Б.2.6 Об основных проблемах языков формальной верификации

Б.3 Использование графических нотаций

Б.4 Декомпозиция рассмотренных межсервисных взаимодействий с

использованием сетей Петри

Б.4.1 Представление взаимодействий

Б.5 Выводы

Рекомендованный список диссертаций по специальности «Математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей», 05.13.11 шифр ВАК

Введение диссертации (часть автореферата) на тему «Метод декомпозиции распределенных сервисных систем с использованием сетей Петри»

Введение

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

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

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

В рамках данной работы рассмотрены некоторые вопросы моделирования сервисных систем для анализа вычислений, производимых на узлах, составляющих единую сеть, объединенную коммуникационным брокером или Peer-2-Peer* (Р2Р) системой, передающей информацию непосредственно между узлами. Также рассматривается работа сервисных систем, построенных на базе суперкомпьютерных кластеров. Исследуются процессы, выполняемые непосредственно на локальных узлах и в формате взаимодействия виртуальных облачных ресурсов.

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

*Г2Г — система, в которой узлы взаимодействуют напрямую друг с другом

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

Тема работы согласуется с направлениями исследований, проводимых в рамках приоритетного направления развития науки, технологий и техники в Российской Федерации по информационно-телекоммуникационным системам и перечнем критических технологий Российской Федерации по направлению «Технологии и программное обеспечение распределенных и высокопроизводительных вычислительных систем».

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

1. Построить модель, позволяющую анализировать взаимодействия сервисов в распределённой вычислительной среде.

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

3. Создание практической реализации для анализа сервисных систем на базе представленной модели посредством предложенной методики.

Основные положения, выносимые на защиту.

1. Модель описания распределенных сервисных систем, построенная на базе сетей Петри.

2. Алгоритм организации моделей распределенных сервисов на базе сетей Петри.

3. Методика оценки работоспособности распределённой сервисной системы с учетом потенциальных инфраструктурных проблем.

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

объектно-ориентированного программирования, эмпирического анализа, моделирования и эксперимента.

Научная новизна.

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

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

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

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

Объем и структура работы. Работа состоит из введения, четырёх глав, заключения. Полный объём составляет 136 страниц с 48 рисунками и 3 таблицами. Список литературы содержит 160 наименований.

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

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

Вторая глава описывает созданную автором на базе сетей Петри новую модель для описания распределенных сервисных систем. Рассматриваются проблемы сетей Петри для моделирования распределенных сервисных

систем и того, как их можно решить. Предлагается новая модель сервисно-ориентированных сетей Петри, основанная на существующей модели СБРМ Новая модель обладает рядом свойств, необходимых для моделирования распределенных сервисных систем, таких как:

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

2. Введение и управление экземплярами сложных типов данных.

3. Создание модулей-шаблонов для инкапсуляции сегментов логики.

4. Организация масштабируемых во времени компонентов.

Таким образом, аппарат сетей Петри БОРМ дополнен следующими расширениями:

1. Централизованным временем, включенным в состояние системы.

2. Упрощенными по сравнению с БОРМ вероятностными вызовами срабатываний переходов.

3. Единой системой блокировок.

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

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

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

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

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

В заключении приведены основные результаты работы.

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

Рассматриваются вопросы моделирования системы на различных этапах построения: формализация технического задания; формирование жизненного цикла системы; распределения ресурсов; декомпозиции элементов, обеспечивающих работу сервисных систем. В контексте специфики разработки распределенных сервисных систем, описывается важность шаблонов взаимодействия ее элементов. Анализ ведется в первую очередь с точки зрения возможностей управления системой. Рассматриваются такие шаблоны межсервисного взаимодействия как Publish-Subscribe, Request-Reply, Pipeline, Survey-Respondent и применимость этих шаблонов для взаимодействия сервисов в плане обмена событиями и операциями, а также возможность использования композиций шаблонов взаимодействия, в том числе цепочек операций.

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

— Язык описания, моделирования, документирования и верификации распределенных систем Temporal Logic of Actions (TLA+) [1].

— Язык функционального программирования для доказательства теорем Coq [2].

— Язык графического описания абстрактных моделей программных систем Unified Modeling Language (UML) [3].

— Математический аппарат для моделирования распределенных систем Petri Nets [4].

— Диаграммы состояний абстрактных автоматов, описывающие поведение систем [5].

Для приведенных шаблонов передачи сообщений строятся модели в рамках гибридных сетей Петри. Рассматриваются проблемы расширяемости и параллелизма созданных моделей. Таким образом формируется задача исследова-

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

Степень достоверности. Представленные результаты прошли апробацию в рамках НИР СПбГУ «Компьютерная технология мониторинга и диагностики состояния объектов культурного наследия», «Исследования в области проектирования и реализации эффективных прямых вычислительных экспериментов по моделированию гидрофизических и гидрометеорологических процессов на акватории Балтийского моря (в открытом море и вблизи побережья России)» и «Центр технологий распределенных реестров НТИ». Результаты находятся в соответствии с результатами, полученными другими авторами.

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

1. The XLV annual international conference Control Processes and Stability, 2014.

2. The 6th International Conference «Distributed Computing and Grid-technologies in Science and Education», 2014.

3. United Conference IVESC-ICEE-ICCTPEA-BDO-2014.

4. 14th International Conference of Numerical Analysis and Applied Mathematics, 2014.

5. 9th European Solid Mechanics Conference, 2015.

6. Mathematical Modeling and Computational Physics, 2015.

7. III International Conference in memory of V.I.Zubov Stability and Control Processes, 2015.

8. The XLVII Annual International Conference Control Processes and Stability, 2016.

9. The 7th International Conference «Distributed Computing and Grid-technologies in Science and Education», 2014.

10. The 16th International Conference on Computational Science and Its Applications (ICCSA), 2016.

11. The 19th International Conference on Computational Science and Its Applications (ICCSA), 2019.

12. The 20th International Conference on Computational Science and Its Applications (ICCSA), 2020.

А также в рамках следующих научных школ.

1. School on Nuclear Electronics and Computing Based on XXV International Symposium on Nuclear Electronics and Computing, 2015.

2. Summer Student Program at Joint Institute for Nuclear Research, 2015.

3. Google Summer of Code, 2016 (at CERN, SfT BLonD code optimization strategy for parallel and concurrent architectures).

Личный вклад. Автор принимал участие в нижеперечисленных НИР в роли главного разработчика ряда программных продуктов.

1. «Программного комплекса для хранения, автоматизированного структурирования текстовых объектов и поиска по ним» (ПХАСП)^ в рамках проекта СПбГУ «Компьютерная технология мониторинга и диагностики состояния объектов культурного наследия» шифр 9.37.157.2014.

2. «Программный комплекс для оценки ресурсов прочности и устойчивости сосудов давления в условиях механохимической коррозии» (ОС-ДУМК)^ в рамках проекта СПбГУ «Исследования в области проектирования и реализации эффективных прямых вычислительных экспериментов по моделированию гидрофизических и гидрометеорологических процессов на акватории Балтийского моря (в открытом море и вблизи побережья России)» 0.37.155.2014.

3. «Программный комплекс для решения систем обыкновенных дифференциальных уравнений при реализации вычислительных экспериментов в комплексном пространстве» (КСОДУКАП)§ в рамках проекта МИЦНТ СНГ «Проблемы прочности сосудов давления в агрессивных средах» 9.17.1946.2015.

4. «Программный комплекс для защиты, управления и контроля доступа к содержимому закрытых сетевых ресурсов» (ПК-ЗУК) ' в рамках проекта РФФИ «Виртуальный суперкомпьютер как инструмент для решения комплексных проблем» 9.15.426.2016.

Автор осуществлял руководство работами в рамках следующих научно-исследовательских проектов.

^Иомер 2016611483 в сборнике «Программы для ЭВМ. Базы данных. Топологии интегральных микросхем. Официальный бюллетень Федеральной службы по интеллектуальной собственности», 2016

^Иомер 2016618850 в сборнике «Программы для ЭВМ. Базы данных. Топологии интегральных микросхем. Официальный бюллетень Федеральной службы по интеллектуальной собственности», 2016

§ Номер 2014662066 в сборнике «Программы для ЭВМ. Базы данных. Топологии интегральных микросхем. Официальный бюллетень Федеральной службы по интеллектуальной собственности», 2014

'Номер 2018611670 в сборнике «Программы для ЭВМ. Базы данных. Топологии интегральных микросхем. Официальный бюллетень Федеральной службы по интеллектуальной собственности», 2018

1. Microsoft Azure For Research Award 2014 (исследование «Messaging with business logic control over load balancing»).

2. Гранта для студентов вузов, расположенных на территории Санкт-Петербурга, аспирантов вузов, отраслевых и академических институтов, расположенных на территории Санкт-Петербурга 2014 (исследование «Разработка средства интерактивного мониторинга распределённой сетевой архитектуры»).

3. Гранта-стипендии Президента Российской Федерации молодым ученым и аспирантам, осуществляющим перспективные научные исследования и разработки по приоритетным направлениям модернизации российской экономики, на 2016-2018 годы.

Публикации. Основные результаты по теме работы изложены в 8 печатных изданиях [6 15], 2 из которых изданы в журналах, рекомендованных ВАК [13,14], 6 в тезисах докладов [7,9 12,15].

Работы [6,9,12] выполнены без соавторов. В работах [11,13], написанных в соавторстве с научным руководителем, А. Б. Дегтяреву принадлежит постановка задач и метод решения, а также консультирование по различным вопросам, связанным с анализом результатов. В публикациях [7,8,10,11,14,15] В. М. Гриш-кин участвовал в обсуждении результатов. В работах [10,13] О. С. Седова и С. В. Швембергер осуществляли тестирование программ применительно к конкретным задачам. В работе [11] Г. А Федосеев выполнял работы по конфигурации разрабатываемого программного обеспечения, а В. В. Корхов занимался внедрением полученного решения.

Глава 1. Аналитический обзор

Исследованию моделей параллельных процессов, позволяющих производить формализованный анализ поведения распределенных систем, посвящены исследования E. Dijkstra [16], C. Hoare [17], C. Petri [18], R. Milner [19], R.David [4], H. Alla [20], Т. Henzinger [21], L. Lamport [22,23], B. Boehm [24], T. Coquand [25], D. Woos [26], M. A. Marsan [27], G. Huet [28] и других авторов [2,19,29 35], а в нашей стране В. Е. Котова [36], Д.А.Поспелова [37], Ю.Г.Карпова [38], А. А. Лескина [39]. Существующие методики моделирования позволяют производить системный анализ разрабатываемого программного обеспечения (ПО), верифицировать модели, изменяемые во времени, на предмет нежелательного поведения, и создавать на базе полученных моделей программный продукт. Однако, при решении задачи моделирования сервисной системы чаще всего выставляются жесткие рамки на полноту описания модели (в случае формальной верификации алгоритмов работы программы) [40,41]; последовательности действий и их математических характеристик (в случае работы с математическими моделями такими как сети Петри и конечные автоматы) [42,43]; возможности моделирования хода системных взаимодействий (в случае использования графических нотаций, таких как языки Unified Modeling Language (UML) и Service-oriented architecture Modeling Language (SoaML)) [3,44].

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

Таблица 1.1

Основные этапы развития методов анализа и прогноза поведения распределённых программных систем

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

Направление: Графические модели документации ПО

Систематизация инструментов программной инженерии (CASE), создаваемых в рамках проекта Information System Design and Optimization System [45] Waters, 1974

Теоретическая разработка методологии описания потоков данных диаграммами (DFD) [24] Boehm, Mcclean, Urfrig, 1975

Построение методов описания отношений «сущность-связь» диаграммами (ERD) [46] Chen, 1975

Введение методологии структурного анализа и проектирования (SADT) [47] Dickover, McGowan, Ross, 1977

Основание теоретической базы формальных графических описаний сложных систем [48] Harel, 1987

Развитие методологии компьютерного документирования ПО [49] Monarchi, Booch, Henderson-Sellers, Jacobson, Mellor, Rumbaugh, Wirfs-Brock, 1994

Формализация объектно-ориентированной методологии разработки информационных систем и программного обеспечения систем реального времени [50] Терехов, Кознов, Романовский, Долгов, Иванов, 1999

Появление унифицированного языка моделирования программного обеспечения (UML) [51] Medvidovic, Rosenblum, Red-miles, Robbins, 2002

Разработка методов моделирования описания бизнес-процессов (BPMN) [52] Ouyang, Dumas, Hofstede, Aalst, 2006

Развитие методологии моделирования сервисно ориентированной архитектуры (SoaML) [53] Sadovykh, Desfray, Elves&ter, Berre, Landre, 2010

Создание в Intel методики организации графа связей потоков процессов [54] Tovinkere, Voss, 2015

Разработки Netflix методик интерактивного моделирования трафика сетевых приложений [55] Gomes, Santos, Vidal, 2017

Направление: Формальные методы доказательства теорем

Появление основных концепций теории доказательств [56] Gentzen, Godel, Herbrand, 1930

Работы по созданию систем автоматического доказатель- Loveland, 1972

ства [57]

Работы в области автоматизации тактики доказательства Hennessy, Milner, 1980

решений [58]

Создание системы автоматизации принятия решений для Huet, 1981

алгебраических структур [28]

Создание системы верификации доказательств теорем [25] Coquand, Huet, 1985

Построение методик автоматизированной помощи в дока- Paulin-Mohring, 1993

зательстве теорем и утверждений (Coq) [59]

Разработка языка спецификаций программного обеспече- Lamport, 1994

ния, в котором учитываются временные аспекты взаимо-

действий (TLA) [60]

Описание с помощью средств формальной верификации Blazy, Leroy, 2009

Coq компилятора [61] и подмножества языка Си [62]

Описание с помощью средств формальной верификации Woos, Wilcox, Anton,

алгоритмов решения задачи консенсуса Raft [63], Paxos [64] Tatlock, Ernst, Anderson, Chand, Liu, Stoller, 2016

Направление: Математические модели, представляющие процессы графически

Создание математической модели общего назначения, опи- Petri, 1962

сывающей отношение между условиями и событиями [18]

Описание модели синхронизированных сетей Петри — Moalla, Pulou, Sifakis,

незамкнутых, ожидающих события извне [65] 1978

Разработка модели цветных сетей Петри, объединяющих Silva, Martinez, Ladet,

различные типы сообщений [66] Alla, 1985

Формирование модели сетей Петри, работающих с рацио- Mandelbaum, Chen, 1991

нальными числами «потоками» [67]

Описание и формализация методов работы со временем в Khansa, 1997

сетях Петри [68]

Развитие модели Гибридных сетей Петри, сочетающей в Alla, David, 1998

себе дискретные и «потоковые» компоненты [20]

Построение гибридных сетей Петри, моделирующих рабо- Demongodin, Koussoulas,

ту дифференциальных уравнений [69] 1998

Формулирование модели сетей Петри, использующих цепи Recalde, Silva, 2000

Маркова [70]

Формализация методологии визуального моделирования David, Alla, 2001

систем с помощью Гибридных Автоматов [71]

Создание визуального языка разработки ПО ВЯЬ/ОЯ [72] Кознов, Романовский, 2007

Последовательные функциональные схемы (ЯРО) — язык Okuda, Nagao, Mizuya,

программирования промышленных контроллеров [73] Miyazawa, 2013

Развитие компьютерных технологий приводит к появлению множества различных подходов к решению задач и анализу полученных результатов. Архитектура приложений расслаивается, появляются различные стандарты и руководства по методам построения и использования систем [74-80]. Часто такие инструкции требуют дополнительных комментариев и рассматривают узкий пласт разрабатываемого решения, не обращая внимания на большую картину происходящего в системе. Текстовые рекомендации в большинстве случаев не могут полностью описать наблюдаемые события, происходящие в функционирующей системе. Средства отладки, предоставляемые отдельными компонентами системы, позволяют анализировать микроуровень, на котором работает каждый из них и могут скрыть системную причину возникновения тех или иных проблем [81-83].

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

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

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

*Экзафлопс — производительность вычислительного устройства, которая соответствует выполнению 1018 операций с плавающей запятой в секунду

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

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

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

1. Аппаратная архитектура современных компьютеров не позволяет осуществлять сбалансированный конкурентный доступ к ресурсам, вызывая «голодание» как на уровне высокоскоростной памяти ядер центрального процессора [90], так и с точки зрения работы с сопроцессорами [91-94]. Протокол, описывающий взаимодействия отдельных сервисов между собой, в случае отсутствия расчетов загрузки сети может привести к переполнению каналов связи и разбалансировке системы.

Похожие диссертационные работы по специальности «Математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей», 05.13.11 шифр ВАК

Список литературы диссертационного исследования кандидат наук Якушкин Олег Олегович, 2021 год

Список литературы

1. Automated verification of asynchronous circuits using circuit Petri nets / I. Poliakov, A. Mokhov, A. Rafiev at al. // Proceedings - International Symposium on Asynchronous Circuits and Systems. — 2008. — P. 161-170.

2. Verdi: A Framework for Implementing and Formally Verifying Distributed Systems / James R. Wilcox, Doug Woos, Pavel Panchekha et al. // SIGPLAN Not. — 2015. — Vol. 50, N. 6. — P. 357-368.

3. Berardi, D. Reasoning on UML class diagrams / D. Berardi, D. Calvanese, G. De Giacomo // Artificial Intelligence. — 2005. — Vol. 168, N. 1-2. — P. 70118.

4. David, R. On hybrid Petri nets / R. David, H. Alla // Discrete Event Dynamic Systems: Theory and Applications. — 2001. — Vol. 11, N. 1-2. — P. 9-40.

5. Hybrid automata-based CEGAR for rectangular hybrid systems / P. Prabhakar, P.S. Duggirala, S. Mitra, M. Viswanathan // Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics). — 2013. — Vol. 7737. — P. 48-67.

6. Iakushkin, O. Service-Oriented Petri Net Model / O. Iakushkin // Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics). — 2020. — Vol. 12254 LNCS. — P. 51-66.

7. Iakushkin, O. Messaging middleware for cloud applications: Extending brokerless approach / O. Iakushkin, V. Grishkin // 2014 2nd International Conference on Emission Electronics, ICEE 2014 Joined with 10th International Vacuum Electron Sources Conference, IVESC 2014, International Conference on Computer Technologies in Physical and Engineering Applications, ICCTPEA 2014, 20th International Workshop on Beam Dynamics and Optimization, BDO 2014 -Proceedings. — 2014. — P. 1-4.

8. Iakushkin, O. Unification of control in P2P communication middleware: Towards complex messaging patterns / O. Iakushkin, V. Grishkin // AIP Conference Proceedings. — 2015. — Vol. 1648. — P. 1-6.

9. Iakushkin, O. Cloud Middleware Combining the Functionalities of Message Passing and Scaling Control / O. Iakushkin // EPJ Web of Conferences. — 2016. — Vol. 108. — P. 1-5.

10. Iakushkin, O. Application control and horizontal scaling in modern cloud middleware / O. Iakushkin, O. Sedova, V. Grishkin // Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics). — 2016. — Vol. 9570. — P. 81-96.

11. A continuous integration system for MPD root: Experiments with setup configuration / A. Degtyarev, G. Fedoseev, O. Iakushkin, V. Korkhov // CEUR Workshop Proceedings. — 2016. — Vol. 1787. — P. 172-176.

12. Iakushkin, O. Intellectual scaling in a distributed cloud application architecture: A message classification algorithm / O. Iakushkin // 2015 International Conference on "Stability and Control Processes" in Memory of V.I. Zubov, SCP 2015 - Proceedings. — 2015. — P. 634-637.

13. Iakushkin, O. Decomposition of the modeling task of some objects of archeo-logical research for processing in a distributed computer system / O. Iakushkin, A. Degtyarev, S. Shvemberger // Computer Research and Modeling. — 2015. — Vol. 7, N. 3. — P. 533-537.

14. Iakushkin, O. Visualization of work of a distributed application based on the mqcloud library / O. Iakushkin, V. Grishkin // Computer Research and Modeling. — 2015. — Vol. 7, N. 3. — P. 529-532.

15. Grishkin, V. Middleware transport architecture monitoring: Topology service / V. Grishkin, O. Iakushkin // 2014 20th International Workshop on Beam Dynamics and Optimization, BDO 2014. — 2014. — P. 64-66.

16. Dijkstra, E. W. Cooperating Sequential Processes / E. W. Dijkstra // The Origin of Concurrent Programming: From Semaphores to Remote Procedure Calls. — Springer New York, 2002. — P. 65-138.

17. Hoare, C.A.R. Communicating Sequential Processes / C.A.R. Hoare // Communications of the ACM. — 1978. — Vol. 21, N. 8. — P. 666-677.

18. Petri, C. Communication with automata / C. Petri // Schriften des IIM. — 1962. — N. 3. — P. 16-27. — cited By 4.

19. Milner, R. A calculus of mobile processes, I / R. Milner, J. Parrow, D. Walker // Information and Computation. — 1992. — Vol. 100, N. 1. — P. 1-40.

20. Alla, H. Continuous and hybrid Petri nets / H. Alla, R. David // Journal of Circuits, Systems and Computers. — 1998. — Vol. 8, N. 1. — P. 159-188.

21. Henzinger, T. A. Theory of hybrid automata / T. A. Henzinger // Proceedings - Symposium on Logic in Computer Science. — 1996. — P. 278-292.

22. Lamport, L. Fast Paxos / L. Lamport // Distributed Computing. — 2006. — Vol. 19, N. 2. — P. 79-103.

23. TLA + proofs / D. Cousineau, D. Doligez, L. Lamport at al. // Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics). — 2012. — Vol. 7436. — P. 147-154.

24. Boehm, B. Some Experience with Automated Aids to the Design of Large-Scale Reliable Software / B. Boehm, R. Mcclean, D. Urfrig // IEEE Transactions on Software Engineering. — 1975. — Vol. 1, N. 1. — P. 125-133.

25. Coquand, T. Constructions: A higher order proof system for mechanizing mathematics / T. Coquand, G. Huet // Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics). — 1985. — Vol. 203. — P. 151-184.

26. Raft refloated: Do we have consensus? / H. Howard, M. Schwarzkopf, A. Mad-havapeddy, J. Crowcroft // Operating Systems Review (ACM). — 2015. — Vol. 49, N. 1. — P. 12-21.

27. Marsan, A. M. A class of generalized stochastic Petri nets for the performance evaluation of multiprocessor systems / A. M. Marsan, G. Conte, G. Balbo // ACM Transactions on Computer Systems (TOCS). — 1984. — Vol. 2, N. 2. — P. 93-122.

28. Huet, G. A complete proof of correctness of the Knuth-Bendix completion algorithm / G. Huet // Journal of Computer and System Sciences. — 1981. — Vol. 23, N. 1. — P. 11-21.

29. Murata, T. Petri Nets: Properties, Analysis and Applications / T. Murata // Proceedings of the IEEE. — 1989. — Vol. 77, N. 4. — P. 541-580.

30. David, R. Discrete, continuous, and hybrid petri nets (second edition) / R. David, H. Alla. — Springer Berlin Heidelberg, 2010. — P. 550.

31. Astley, M. Customization and composition of distributed objects: Middleware abstractions for policy management / M Astley, G. A. Agha // Proceedings of the ACM SIGSOFT Symposium on the Foundations of Software Engineering. — 1998. — P. 1-9.

32. Watts, D.J. Collective dynamics of 'small-world' networks / D.J. Watts, S.H. Strogatz // Nature. — 1998. — Vol. 393, N. 6684. — P. 440-442.

33. Validation of workload algorithms within the integrated performance modeling environment / J. Armstrong, M. Gauthier, W. Wang at al. // 16th Conference on Behavior Representation in Modeling and Simulation 2007, BRIMS. — 2012. — Vol. 2. — P. 715-755.

34. Fu, J.C. Distribution theory of runs: A Markov chain approach / J.C. Fu, M.V. Koutras // Journal of the American Statistical Association. — 1994. — Vol. 89, N. 427. — P. 1050-1058.

35. Boxma, O. Queueing-theoretic solution methods for models of parallel and distributed systems / O. Boxma, G. Koole, Z. Liu // Performance Evaluation of Parallel and Distributed Systems Solution Methods. — 1994. — P. 1-24.

36. Котов, В.Е. Формальные модели параллельных вычислений: сборник научных трудов / В.Е. Котов. — Ленинград: Вычислительный центр СО АН СССР, 1988. — С. 166.

37. Поспелов Д., А. Логико-лингвистические модели в системах управления / А. Поспелов, Д. — Ленинград: Энергоиздат, 1981. — С. 231.

38. Карпов, Ю.Г. Имитационное моделирование систем: введ. в моделирование с AnyLogic 5 / Ю.Г. Карпов. — Петербург: БХВ, 2009. — С. 390.

39. Лескин, А.А. Сети Петри в моделировании и управлении / А.А. Лескин, П.А. Мальцев, А.М. Спиридонов. — Москва: Наука, 1989. — С. 135.

40. Newcombe, C. Why Amazon chose TLA+ / C. Newcombe // Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics). — 2014. — Vol. 8477. — P. 25-39.

41. Clausen, C. Programs, Proofs, and Tactics in the Coq Proof Assistant /

C. Clausen. — Aarhus Universitet, Datalogisk Institut, 2015. — P. 77.

42. Multiformalism to support software rejuvenation modeling / E. Barbierato, A. Bobbio, M. Gribaudo, M. Iacono // Proceedings - 23rd IEEE International Symposium on Software Reliability Engineering Workshops, ISSREW 2012. — 2012. — P. 271-276.

43. Zamani, M. Approximations of Stochastic Hybrid Systems: A Compositional Approach / M. Zamani, M. Rungger, P.M. Esfahani // IEEE Transactions on Automatic Control. — 2017. — Vol. 62, N. 6. — P. 2838-2853.

44. Evaluation of service designs based on SoaML / M. Gebhart, M. Baumgartner, S. Oehlert at al. // Proceedings - 5th International Conference on Software Engineering Advances, ICSEA 2010. — 2010. — P. 7-13.

45. Waters, S. Computer-Aided Methodology Of Computer Systems Design. / S. Waters // Computer Journal. — 1974. — Vol. 17, N. 3. — P. 211-215.

46. Chen, P. The entity-relationship model: Toward a unified view of data / P. Chen // ACM SIGIR Forum. — 1975. — Vol. 10, N. 3. — P. 9-36.

47. Dickover, M. Software design using: SADT / M. Dickover, C. McGowan,

D. Ross // Proceedings of the 1977 Annual Conference, ACM 1977. — 1977. — P. 125-133.

48. Harel, D. Statecharts: a visual formalism for complex systems / D. Harel // Science of Computer Programming. — 1987. — Vol. 8, N. 3. — P. 231-274.

49. Methodology standards: Help or hindrance? / D. Monarchi, G. Booch, B. Henderson-Sellers at al. // ACM SIGPLAN Notices. — 1994. — Vol. 29, N. 10. — P. 223-228.

50. Объектно-ориентированная методология разработки информационных систем и программного обеспечения систем реального времени / А. Н. Терехов, Д. В. Кознов., К. Ю. Романовский и др. // Объектно-ориентированное визуальное моделирование. — 1999. — С. 4-20.

51. Modeling software architectures in the unified modeling language / N. Medvidovic, D. Rosenblum, D. Redmiles, J. Robbins // ACM Transactions on Software Engineering and Methodology. — 2002. — Vol. 11, N. 1. — P. 2-57.

52. From BPMN process models to BPEL Web services / C. Ouyang, M. Dumas, A. Hofstede, W. Aalst // Proceedings - ICWS 2006: 2006 IEEE International Conference on Web Services. — 2006. — P. 285-292.

53. Enterprise architecture modeling with SoaML using BMM and BPMN - MDA approach in practice / A. Sadovykh, P. Desfray, B. Elves^ter at al. // 2010 6th Central and Eastern European Software Engineering Conference, CEE-SECR 2010. — 2010. — P. 79-85.

54. Tovinkere, V. Flow Graph Designer: A Tool for Designing and Analyzing Intel® Threading Building Blocks Flow Graphs / V. Tovinkere, M. Voss // Proceedings of the International Conference on Parallel Processing Workshops. — 20155. — Vol. 2015. — P. 149-158.

55. Gomes, G.A.M. Interactive Visualization of Traffic Dynamics Based on Trajectory Data / G.A.M. Gomes, E. Santos, C.A. Vidal // Proceedings - 30th Conference on Graphics, Patterns and Images, SIBGRAPI 2017. — 2017. — P. 111-118.

56. Zach, R. Hilbert's Program then and Now / R. Zach. — Elsevier, 2007. — P. 411447.

57. Loveland, D.W. A Unifying View of Some Linear Herbrand Procedures / D.W. Loveland // Journal of the ACM (JACM). — 1972. — Vol. 19, N. 2. — P. 366-384.

58. Hennessy, M. On observing nondeterminism and concurrency / M. Hennessy, R. Milner // Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics). — 1980. — Vol. 85. — P. 299-309.

59. Paulin-Mohring, C. Inductive definitions in the system Coq rules and properties / C. Paulin-Mohring // Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics). — 1993. — Vol. 664. — P. 328-345.

60. Lamport, L. The Temporal Logic of Actions / L. Lamport // ACM Transactions on Programming Languages and Systems (TOPLAS). — 1994. — Vol. 16, N. 3. — P. 872-923.

61. Leroy, X. Formal verification of a realistic compiler / X. Leroy // Communications of the ACM. — 2009. — Vol. 52, N. 7. — P. 107-115.

62. Blazy, S. Mechanized Semantics for the Clight Subset of the C Language / S. Blazy, X. Leroy // Journal of Automated Reasoning. — 2009. — Vol. 43, N. 3. — P. 263-288.

63. Planning for change in a formal verification of the raft consensus protocol / D. Woos, J. Wilcox, S. Anton at al. // CPP 2016 - Proceedings of the 5th ACM SIGPLAN Conference on Certified Programs and Proofs, co-located with POPL 2016. — 2016. — P. 154-165.

64. Chand, S. Formal verification of multi-paxos for distributed consensus / S. Chand, Y Liu, S. Stoller // Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics). — 2016. — Vol. 9995. — P. 119-136.

65. Moalla, M. Synchronized petri nets: A model for the description of non-autonomous sytems / M. Moalla, J. Pulou, J. Sifakis // Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics). — 1978. — Vol. 64. — P. 374-384.

66. Generalized inverses and the calculation of symbolic invariants for coloured petri nets / M. Silva, J. Martinez, P. Ladet, H. Alla // Technique et Science Informatiques. — 1985. — Vol. 4, N. 1. — P. 113-126.

67. Event correlation: Language and semantics / C. Sanchez, S. Sankaranarayanan, H. Sipma at al. // Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics). — 2003. — Vol. 2855. — P. 323-339.

68. Bonhomme, P. Towards a new control synthesis method for p-time Petri nets [Vers une nouvelle methode de synthese de commande pour les reseaux de Petri p-temporels] / P. Bonhomme // Journal Europeen des Systemes Automatises. — 2010. — Vol. 44, N. 2. — P. 161-180.

69. Demongodin, I. Differential Petri nets: Representing continuous systems in a discrete-event world / I. Demongodin, N.T. Koussoulas // IEEE Transactions on Automatic Control. — 1998. — Vol. 43, N. 4. — P. 573-579.

70. Recalde, L. PN fluidification revisited: Semantics and steady state / L. Recalde, M. Silva // ADPM 2000: 4th Int. Conf. on Automation of Mixed Processes: Hybrid Dynamic Systems. — 2000. — P. 279-286. — cited By 10.

71. David, R. On hybrid Petri nets / R. David, H. Alla // Discrete Event Dynamic Systems: Theory and Applications. — 2001. — Vol. 11, N. 1-2. — P. 9-40.

72. Кознов, Д. В. Язык DRL для проектирования и разработки документа- ции семейства программных продуктов / Д. В. Кознов, К. Ю. Романовский // Вестник Санкт-Петербургского университета, Серия 10: Прикладная математика. Информатика. Процессы управления. — 2007. — С. 41-53.

73. Research on structural analysis for the petri-net representing sequential function chart / M. Okuda, T. Nagao, T. Mizuya, I. Miyazawa. — Society of Instrument and Control Engineers (SICE), 2013. — P. 538-543.

74. Wilder, B. Cloud Architecture Patterns / B. Wilder. Develop cloud-native applications. — O'Reilly, 2012. — P. 161.

75. Kale, L.V. Parallel Science and Engineering Applications: The Charm++ Approach / L.V. Kale, A. Bhatele. Series in Computational Physics. — CRC Press, 2016. — P. 314.

76. Wittig, A. Amazon Web Services in Action / A. Wittig, M. Wittig. — Manning Publications, 2015. — P. 397.

77. Hintjens, P. ZeroMQ: Messaging for Many Applications / P. Hintjens. — O'Reilly Media, Incorporated, 2013. — P. 493.

78. Russell, N. Workflow Patterns: The Definitive Guide / N. Russell, W.M.P. Aalst, A.H.M. Hofstede. Information Systems. — MIT Press, 2016. — P. 384.

79. Workflow resource patterns: Identification, representation and tool support / N. Russell, W. Aalst, A. Hofstede, D. Edmond // Lecture Notes in Computer Science. — 2005. — Vol. 3520. — P. 216-232.

80. Hee, K. Workflow Management: Models, Methods, and Systems / K. Hee. Information Systems. — MIT Press, 2004. — P. 384.

81. Matloff, N. Parallel Computing for Data Science: With Examples in R, C++ and CUDA / N. Matloff. Chapman & Hall/CRC The R Series. — CRC Press, 2015. — P. 328.

82. Kale, L.V. Controlling concurrency and expressing synchronization in charm++ programs / L.V. Kale, J. Lifflander // Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics). — 2014. — Vol. 8665. — P. 196-221.

83. Price, J. Oclgrind: An extensible OpenCL device simulator / J. Price, S. McIntosh-Smith // ACM International Conference Proceeding Series. — 2015. — P. 1-7.

84. Neely, J.R. Application Modernization at LLNL and the Sierra Center of Excellence: Tech. Rep. 5 / J.R. Neely, B.R. Supinski: 2017.

85. Are we ready for SDN? Implementation challenges for software-defined networks / S. Sezer, S. Scott-Hayward, P. Chouhan at al. // IEEE Communications Magazine. — 2013. — Vol. 51, N. 7. — P. 36-43.

86. Degtyarev, A. Balancing load on a multiprocessor system with event-driven approach / A. Degtyarev, I. Gankevich // Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics). — 2016. — Vol. 9570. — P. 35-52.

87. Bogdanov, A. New Approach to the Simulation of Complex Systems / A. Bog-danov, A. Degtyarev, V. Korkhov // EPJ Web of Conferences. — 2016. — Vol. 108. — P. 1-8.

88. Data-driven service composition in enterprise soa solutions: A petri net approach / W. Tan, Y. Fan, M. Zhou, Z. Tian // IEEE Transactions on Automation Science and Engineering. — 2010. — Vol. 7, N. 3. — P. 686-694.

89. Kovac, D. Qualitative trust modeling in SOA / D. Kovac, D. Trcek // Journal of Systems Architecture. — 2009. — Vol. 55, N. 4. — P. 255-263.

90. Google-Wide Profiling: A continuous profiling infrastructure for data centers / G. Ren, E. Tune, T. Moseley at al. // IEEE Micro. — 2010. — Vol. 30, N. 4. — P. 65-78.

91. Exploring traditional and emerging parallel programming models using a proxy application / I. Karlin, A. Bhatele, J. Keasler at al. // Proceedings - IEEE 27th International Parallel and Distributed Processing Symposium, IPDPS 2013. — 2013. — P. 919-932.

92. Kemal, J.Y. Multidisciplinary simulation acceleration using multiple shared memory graphical processing units / J.Y. Kemal, R.L. Davis, J.D. Owens // International Journal of High Performance Computing Applications. — 2016. — Vol. 30, N. 4. — P. 486-508.

93. Memory Efficient Two-Pass 3D FFT Algorithm for Intel (R) Xeon Phi(TM) Coprocessor / Y.-Q. Liu, Y. Li, Y.-Q. Zhang, X.-Y. Zhang // Journal of Computer-Science and Technology. — 2014. — Vol. 29, N. 6. — P. 989-1002.

94. Nadal-Serrano, J.M. A Performance Study of CUDA UVM versus Manual Optimizations in a Real-World Setup: Application to a Monte Carlo Wave-Particle Event-Based Interaction Model / J.M. Nadal-Serrano, M. Lopez-Vallejo // IEEE

Transactions on Parallel and Distributed Systems. — 2016. — Vol. 27, N. 6. — P. 1579-1588.

95. Interactive exploitation of nonuniform cloud resources for LHC computing at CERN / D. Berzano, J. Blomer, P. Buncic at al. — IEEE International Conference on Cloud Computing. — IEEE, 2013. — P. 976-977.

96. Virtual private supercomputer: Design and evaluation / I. Gankevich, V. Gaidu-chok, D. Gushchanskiy at al. // CSIT 2013 - 9th International Conference on Computer Science and Information Technologies, Revised Selected Papers. — 2013. — P. 1-4.

97. Nilsson, P. Distributed data analysis in ATLAS / P. Nilsson // AIP Conference Proceedings. — 2012. — Vol. 1504. — P. 991-994.

98. CernVM - A virtual software appliance for LHC applications / P. Buncic, C. Aguado Sanchez, J. Blomer at al. // Journal of Physics: Conference Series. — 2010. — Vol. 219, N. 1 PART 4.

99. The ALICE high level trigger / T. Alt, G. Grastveit, H. Helstrup at al. // Journal of Physics G: Nuclear and Particle Physics. — 2004. — Vol. 30, N. 8. — P. S1097-S1100.

100. Navarro, C.A. A survey on parallel computing and its applications in dataparallel problems using GPU architectures / C.A. Navarro, N. Hitschfeld-Kahler, L. Mateu // Communications in Computational Physics. — 2014. — Vol. 15, N. 2. — P. 285-329.

101. Comparing hardware accelerators in scientific applications: A case study / R. Weber, A. Gothandaraman, R.J. Hinde, G.D. Peterson // IEEE Transactions on Parallel and Distributed Systems. — 2011. — Vol. 23, N. 1. — P. 58-68.

102. Shagrithaya, K. Enabling development of OpenCL applications on FPGA platforms / K. Shagrithaya, K. Kepa, P. Athanas // Proceedings of the International Conference on Application-Specific Systems, Architectures and Processors. — 2013. — P. 26-30.

103. High Performance Interconnect Network for Tianhe System / X.-K. Liao, Z.B. Pang, K.-F. Wang at al. // Journal of Computer Science and Technology. — 2015. — Vol. 30, N. 2. — P. 259-272.

104. MilkyWay-2 supercomputer: System and application / X. Liao, L. Xiao, C. Yang, Y. Lu // Frontiers of Computer Science. — 2014. — Vol. 8, N. 3. — P. 345-356.

105. OStrich: Fair scheduling for multiple submissions / J. Emeras, V. Pinheiro, K. Rzadca, D. Trystram // Lecture Notes in Computer Science (including sub-series Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinfor-matics). — 2014. — Vol. 8385, N. PART 2. — P. 26-37.

106. An updated performance comparison of virtual machines and Linux containers / W. Felter, A. Ferreira, R. Rajamony, J. Rubio // ISPASS 2015 - IEEE International Symposium on Performance Analysis of Systems and Software. — 2015. — P. 171-172.

107. Schulthess, T. C. Programming revisited / T. C. Schulthess // NATURE PHYSICS. — 2015. — Vol. 11, N. 5. — P. 369-373.

108. Lee, H.H. Finite Element Simulations with ANSYS Workbench 17 / H.H. Lee. — SDC Publications, 2017. — P. 608.

109. Turnbull, J. The Docker Book / J. Turnbull. — James Turnbull, 2014. — P. 386.

110. Mouat, A. Using Docker: Developing and Deploying Software with Containers / A. Mouat. — O'Reilly Media, 2015. — P. 354.

111. Greenberg, D. Building Applications on Mesos / D. Greenberg. — O'Reilly Media,

2015. — P. 164.

112. Ignazio, R. Mesos in Action / R. Ignazio. — Manning Publications Company,

2016. — P. 272.

113. SWAN: A service for interactive analysis in the cloud / D. Piparo, E. Tejedor, P. Mato at al. // Future Generation Computer Systems. — 2018. — Vol. 78. — P. 1071-1078.

114. Scaling up MapReduce-based Big Data Processing on Multi-GPU systems / H. Jiang, Y. Chen, Z. Qiao at al. // Cluster Computing. — 2015. — Vol. 18, N. 1. — P. 369-383.

115. Erl, T. Cloud Computing: Concepts, Technology & Architecture / T. Erl, R. Puttini, Z. Mahmood. The Prentice Hall Service Technology Series from Thomas Erl. — Pearson Education, 2013. — P. 528.

116. Performance evaluation of cloud-based high performance computing for finite element analysis / D. Wu, X. Liu, S. Hebert at al. // Proceedings of the ASME Design Engineering Technical Conference. — 2015. — Vol. 1A. — P. 1-10.

117. Serrano, N. Infrastructure as a service and cloud technologies / N. Serrano, G. Gallardo, J. Hernantes // IEEE Software. — 2015. — Vol. 32, N. 2. — P. 30-36.

118. Integration of XRootD into the cloud infrastructure for ALICE data analysis / M. Kompaniets, O. Shadura, P. Svirin at al. // Journal of Physics: Conference Series. — 2015. — Vol. 664, N. 2. — P. 1-9.

119. Hey, A.J.G. The Fourth Paradigm: Data-intensive Scientific Discovery / A.J.G. Hey, S. Tansley, K.M. Tolle. — 2009. — P. 252.

120. GPU-accelerated micromagnetic simulations using cloud computing / C.L. Jer-main, G.E. Rowlands, R.A. Buhrman, D.C. Ralph // Journal of Magnetism and Magnetic Materials. — 2016. — Vol. 401. — P. 320-322.

121. Analysis of I/O Performance on an Amazon EC2 Cluster Compute and High I/O Platform / R.R. Exposito, G.L. Taboada, S. Ramos at al. // Journal of Grid Computing. — 2013. — Vol. 11, N. 4. — P. 613-631.

122. Eberbach, E. Toward El Dorado for Cloud Computing: Lightweight VMs, Containers, Meta-Containers and Oracles / E. Eberbach, A. Reuter // ACM International Conference Proceeding Series. — 2015. — P. 1-7.

123. Learning Spark: Lightning-Fast Big Data Analysis / H. Karau, A. Konwinski, P. Wendell, M. Zaharia. — O'Reilly Media, 2015. — P. 276.

124. Cost minimization for big data processing in geo-distributed data centers / L. Gu, D. Zeng, P. Li, S. Guo // IEEE Transactions on Emerging Topics in Computing. — 2014. — Vol. 2, N. 3. — P. 314-323.

125. Laneman, J.N. Cooperative diversity in wireless networks: Efficient protocols and outage behavior / J.N. Laneman, D.N.C. Tse, G.W. Wornell // IEEE Transactions on Information Theory. — 2004. — Vol. 50, N. 12. — P. 3062-3080.

126. Santi, P. Topology control in wireless ad hoc and sensor networks / P. Santi // ACM Computing Surveys. — 2005. — Vol. 37, N. 2. — P. 164-194.

127. Jensen, K. Coloured petri nets / K. Jensen // Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics). — 1987. — Vol. 254. — P. 248-299.

128. Jensen, K. Coloured Petri Nets: Modelling and Validation of Concurrent Systems / K. Jensen, L.M. Kristensen. — Springer Berlin Heidelberg, 2009. — P. 384.

129. Jensen, K. Coloured petri nets and the invariant-method / K. Jensen // Theoretical Computer Science. — 1981. — Vol. 14, N. 3. — P. 317-336.

130. David, R. Petri nets for modeling of dynamic systems. A survey / R. David, H. Alla // Automatica. — 1994. — Vol. 30, N. 2. — P. 175-202.

131. Gischer, J. Shuffle Languages, Petri Nets, and Context-Sensitive Grammars / J. Gischer // Communications of the ACM. — 1981. — Vol. 24, N. 9. — P. 597605.

132. Iakushkin, O. Petri nets for modelling of message passing middleware in cloud computing environments / O. Iakushkin, Y. Shichkina, O. Sedova // Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics). — 2016. — Vol. 9787. — P. 390-402.

133. Iakushkin, O. Application control and horizontal scaling in modern cloud middleware / O. Iakushkin, O. Sedova, G. Valery // Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics). — 2016. — Vol. 9570. — P. 81-96.

134. Iakushkin, O. Cloud Middleware Combining the Functionalities of Message Passing and Scaling Control / O. Iakushkin. — Vol. 108. — EDP Sciences, 2016.

135. Iakushkin, O. Unification of control in P2P communication middleware: Towards complex messaging patterns / O. Iakushkin, V. Grishkin. — Vol. 1648. — American Institute of Physics Inc., 2015.

136. Iakushkin, O. Intellectual scaling in a distributed cloud application architecture: A message classification algorithm / O. Iakushkin. — Institute of Electrical and Electronics Engineers Inc., 2015. — P. 634-637.

137. Khetkarn, K. Formal modeling of priority queue using generalized stochastic petri nets / K. Khetkarn, W. Vatanawood. — Association for Computing Machinery, 2019. — P. 39-43.

138. About the fluifidication of SPN by CPN for complex dynamical systems: Critical regions / N. El Akchioui, F. Dib, D. Lefebvre et al. — Institute of Electrical and Electronics Engineers Inc., 2020.

139. Ma, M. Study on hierarchical modeling and performance evaluation method about parallel automatic test system / M. Ma, S.-J. Xihou, J.-G. Huang // Xi-tong Fangzhen Xuebao / Journal of System Simulation. — 2010. — Vol. 22, N. 12. — P. 2779-2783+2787.

140. Virtual machine based on genetic algorithm used in time and power oriented cloud computing task scheduling / T. Ma, S. Pang, W. Zhang, S. Hao // Intelligent Automation and Soft Computing. — 2019. — Vol. 25, N. 3. — P. 605-613.

141. Liu, Fei. An efficient method for unfolding colored Petri nets / Fei Liu, Monika Heiner, Ming Yang // Proceedings of the 2012 Winter Simulation Conference (WSC) / IEEE. — 2012. — P. 1-12.

142. Kordon, Fabrice. Optimized colored nets unfolding / Fabrice Kordon, Alban Linard, Emmanuel Paviot-Adet // International Conference on Formal Techniques for Networked and Distributed Systems / Springer. — 2006. — P. 339-355.

143. Haas, Peter J. Stochastic petri nets: Modelling, stability, simulation / Peter J Haas. — Springer Science & Business Media, 2006.

144. Sassone, P.G. On the extraction and analysis of prevalent dataflow patterns / P.G. Sassone, D.S. Wills // Proceedings of the 2004 7th Annual IEEE International Workshop on Workload Characterization, WWC-7. — 2004. — P. 11-18.

145. Bellido, J. Control-flow patterns for decentralized RESTful service composition / J. Bellido, R. Alarcon, C. Pautasso // ACM Transactions on the Web. — 2013. — Vol. 8, N. 1. — P. 1-30.

146. Hadad, J. TQoS: Transactional and QoS-aware selection algorithm for automatic web service composition / J. Hadad, M. Manouvrier, M. Rukoz // IEEE Transactions on Services Computing. — 2010. — Vol. 3, N. 1. — P. 73-85.

147. Planning for change in a formal verification of the RAFT consensus protocol / D. Woos, J.R. Wilcox, S. Anton at al. // CPP 2016 - Proceedings of the 5th ACM SIGPLAN Conference on Certified Programs and Proofs, co-located with POPL 2016. — 2016. — P. 154-165.

148. Practical software model checking via dynamic interface reduction / H. Guo, M. Wu, L. Zhou at al. // SOSP'11 - Proceedings of the 23rd ACM Symposium on Operating Systems Principles. — 2011. — P. 265-278.

149. Taking proof-based verified computation a few steps closer to practicality / S. Set-ty, V. Vu, N. Panpaliaet al. // The 21st USENIX Security Symposium. — 2012. — P. 253-268.

150. SeL4: Formal verification of an OS kernel / G. Klein, K. Elphinstone, G. Heiser at al. // S0SP'09 - Proceedings of the 22nd ACM SIGOPS Symposium on Operating Systems Principles. — 2009. — P. 207-220.

151. Amir, R. A UML profile for service oriented architectures / R. Amir, A. Zeid // Proceedings of the Conference on Object-Oriented Programming Systems, Languages, and Applications, OOPSLA. — 2004. — P. 192-193.

152. Hentrich, C. Process-Driven SOA: Patterns for Aligning Business and IT / C. Hentrich, U. Zdun. Infosys Press. — CRC Press, 2016. — P. 347.

153. Sava, A.T. Combining hybrid petri nets and hybrid automata / A.T. Sava, H. Alla // IEEE Transactions on Robotics and Automation. — 2001. — Vol. 17, N. 5. — P. 670-678.

154. Haas, P.J. Stochastic Petri Nets: Modelling, Stability, Simulation / P.J. Haas. Springer Series in Operations Research and Financial Engineering. — Springer New York, 2006. — P. 510.

155. Everdij, M.H.C. Hybrid Petri Nets with diffusion that have into-mappings with generalised stochastic hybrid processes / M.H.C. Everdij, H.A.P. Blom // Lecture Notes in Control and Information Sciences. — 2006. — Vol. 337. — P. 31-63.

156. On the generalised stochastic Petri Net modeling of message-oriented middleware systems / S.F.L. Fernandes, W.J. Silva, M.J.C. Silva at al. // IEEE International Performance, Computing and Communications Conference, Proceedings. — 2004. — Vol. 23. — P. 783-788.

157. Fahland, D. Analyzing and completing middleware designs for enterprise integration using coloured Petri nets / D. Fahland, C. Gierds // Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics). — 2013. — Vol. 7908. — P. 400-416.

158. A decade of enterprise integration patterns: A conversation with the authors / O. Zimmermann, C. Pautasso, G. Hohpe, B. Woolf // IEEE Software. — 2016. — Vol. 33, N. 1. — P. 13-19.

159. Kounev, S. Performance modeling and evaluation of distributed component-based systems using queueing petri nets / S. Kounev // IEEE Transactions on Software Engineering. — 2006. — Vol. 32, N. 7. — P. 486-502.

160. Pedroso, C.M. Modeling weight round robin packet scheduler with Petri nets / C.M. Pedroso, K. Fonseca // 8th International Conference on Communication Systems, ICCS 2002 - Proceedings. — 2002. — P. 342-345.

161. Rosa, N.S. Behavioural specification of middleware systems / N.S. Rosa, P.R. Freire Cunha // Journal of the Brazilian Computer Society. — 2006. — Vol. 12, N. 2. — P. 63-74.

162. Software engineering with petri nets: A web service and agent perspective / T. Betz, L. Cabac, M. Duvigneau at al. // Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics). — 2014. — Vol. 8910. — P. 41-61.

163. Konigsberg, Z.R. Timed Petri nets modeling and Lyapunov/max-plus algebra stability analysis for a type of queuing systems / Z.R. Konigsberg // International Journal of Pure and Applied Mathematics. — 2013. — Vol. 86, N. 2. — P. 301-323.

164. Hu, H. Supervisor optimization for deadlock resolution in automated manufacturing systems with Petri nets / H. Hu, M. Zhou, Z. Li // IEEE Transactions on Automation Science and Engineering. — 2011. — Vol. 8, N. 4. — P. 794-804.

165. Videla, A. RabbitMQ in Action: Distributed Messaging for Everyone / A. Videla, J.J.W. Williams. Manning Pubs Co Series. — Manning Publications Company, 2012. — P. 288.

166. Vinoski, S. Advanced message queuing protocol / S. Vinoski // IEEE Internet Computing. — 2006. — Vol. 10, N. 6. — P. 87-89.

167. Carnevali, L. A Quantitative Approach to Input Generation in Real-Time Testing of Stochastic Systems / L. Carnevali, L. Ridi, E. Vicario // IEEE Transactions on Software Engineering. — 2013. — Vol. 39, N. 3. — P. 292-304.

168. TimeNET: a toolkit for evaluating non-Markovian stochastic Petri nets / R. German, C. Kelling, A. Zimmermann, G. Hommel // Performance Evaluation. — 1995. — Vol. 24, N. 1-2. — P. 69-87.

169. GreatSPN 1.7: Graphical editor and analyzer for timed and stochastic Petri nets / G. Chiola, G. Franceschinis, R. Gaeta, M. Ribaudo // Performance Evaluation. — 1995. — Vol. 24, N. 1-2. — P. 47-68.

170. Nielsen, M. Towards a notion of distributed time for petri nets / M. Nielsen, V. Sassone, J. Srba // Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics). — 2001. — Vol. 2075. — P. 23-31.

171. Rakow, A. Slicing Petri nets with an application to workflow verification / A. Rakow // Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics). — 2008. — Vol. 4910. — P. 436-447.

Список рисунков

2.1 Временная структура, встроенная в конфигурацию состояния ... 29

2.2 Структура блокировки перехода ......................................31

2.3 Функциональные переходы для копирования и перемещения ввода 32

2.4 Реализации копирования................................................33

2.5 Реализации перемещения - Функциональные переходы..............34

2.6 Структура условий переключения ....................................35

2.7 Подсеть, работающая на входе и выводящая значение const в зависимости от него ....................................................36

2.8 Подсеть, работающая на входе и выходе, постоянное значение в зависимости от варианта ее реализации ..............................37

2.9 Операции +,-, >, ==, <, *,/, %......................................38

2.10 Подсеть дополнения....................................................39

2.11 Подсеть минус операции................................................40

2.12 Переход сравнения ......................................................41

2.13 Переход умножения ....................................................42

2.14 Переход div..............................................................43

2.15 Переход mod ............................................................44

2.16 Получение элемента из массива по индексу..........................45

2.17 Модуль, изображенный в свернутом виде - показаны только внешние элементы......................................................47

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

3.1 Архитектура программной реализации модели ......................53

3.2 Модель сети для созданной программы ................................57

3.3 Методика оценки работоспособности распределенных сервисных систем с учетом потенциальных инфраструктурных проблем . . . 64

3.4 Моделирование закона Амдала ........................................66

3.5 Моделирование закона Густафсона....................................66

3.6 Модель сети ..............................................................68

3.7 Моделирование клиент-серверной архитектуры сети ................69

3.8 Уровни архитектуры приложения......................................71

3.9 Результаты моделирования времени выполнения MPI программы в FatTree кластере в отношении к количеству процентов потерянных соединений между узлами в MADT (точки) в SOPN CSharp (кривая) 71

А.1 Подходы к организации взаимодействия узлов........................97

А.2 Масштабирование запросов с шаблоном Publish-Subscribe..........98

А.3 Масштабирование шаблона взаимодействия Request-Reply..........100

А.4 Алгоритм последовательности взаимодействий, приводящий к

падению узлов из-за проблем синхронизации состояния ............101

А.5 Осуществлене локализованного масштабирования исполнителей

задач с применением паттерна Pipeline................................102

А.6 Диаграмма последовательности работы алгоритма

Survey-Respondent ......................................................103

А.7 Прокси узел заблокирован в ожидании ответа узла-исполнителя . 104 А.8 Масштабирование логики, основанной на сочетании шаблонов

Request-Reply и Publish-Subscribe ......................................105

А.9 Распределение соединений внутри диалогов работающей системы . 106

А.10 диаграмма последовательности вызовов Reachable exception .... 110

А.11 диаграмма последовательности вызовов Transaction ordering . ... 111

А.12 диаграмма последовательности вызовов Reentrancy ..................112

Б.1 Верификация алгоритмов консенсуса методами формального

моделирования............................................................123

Б.2 Модель работы алгоритма автомата, выбирающего получателя сообщения

среди пула серверов........................................................127

Б.3 Модель автомата, позволяющего пропускать отключенные узлы при

рассылке сообщений........................................................128

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

сообщения ................................................................128

Б.5 Модель контроля отправки сообщений отправителей к набору узлов

получателей с помощью дирижера ..........................................131

Б.6 Модель балансировки передачи потоков данных............................132

Б.7 Представление двусторонней коммуникации................................133

Б.8 Представление балансировки нагрузки при использовании длительных

диалогов ..................................................................134

Б.9 Представление работы шаблона Survey-Respondent ............ 135

Приложение А

Взаимодействия в распределенных сервисных

системах

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

В облачных вычислительных системах решаются разные задачи. При первом приближении можно выделить три: большое количество маленьких задач типа массовых расчетов; обработка больших массивов данных; и расчет одной большой задачи — целостной системы управления, меняющей свое состояние при внесении каждого нового управления. Требования балансировки и масштабирования систем, решающих эти задачи, различны. Дополнительное обстоятельство состоит в том, что если исключить первый случай, который хорошо масштабируется даже в рамках систем Грид (Grid)*, работать в облачных структурах невозможно без средств коммуникации.

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

*Грид — среда согласованных распределенных вычислений в концепции виртуального суперкомпьютера

А.1 Шаблоны сервисного взаимодействия

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

Для практической реализации распределенной Basically Available, Soft state, Eventual consistency (BASE)t системы, предоставляющей сервисные услуги, на уровень коммуникаций между компонентами накладывается ряд требований: возможность получения отчета о статусе доставки сообщения с поддержкой ограничения жизненного цикла сообщения временными рамками; возможность ответить на полученное сообщение отправителю; возможность разослать одно сообщение нескольким адресатам. Обладая такими свойствами транспорта, архитектор системы может строить оценки временных задержек, проявляющихся при отказе компонентов (см. рис. А.1).

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

а) через брокера г тоГ)>

' ^ ^ ^ б) без посредника (г2г)

Рисунок А.1 — Подходы к организации взаимодействия узлов

^БЛ8Б — концепция системы, состояние которой в конечном счёте гарантированно становится согласованным

Рисунок А.2 — Масштабирование запросов с шаблоном Publish-Subscribe

А.1.1 Шаблон «Подписчик-Респондент» (англ. "Publish-Subscribe")

В шаблоне подписчик-респондент (Publish-Subscribe) сообщения создаются издателем и рассылаются всем подписчикам. Такая система позволяет уведомлять подписчиков о новых данных. Этот подход передачи данных также называют системой событий. Основной характеристикой данной системы является поддержка заранее не предопределенного количества подписчиков, которое может меняться в ходе работы системы (см. рис. А.2).

С точки зрения горизонтального масштабирования это приводит нас к тому, что, создавая клон издателя, следует подписывать на его сообщения только те компоненты, которые ранее не были подписаны на оригинал издателя. Это означает, что без увеличения числа подписчиков в системе увеличивать число издателей бессмысленно. Для синхронизации отмасштабированных издателей, при отсутствии внешних зависимостей на другие компоненты системы, достаточно синхронизации начального состояния. Данный шаблон рассылки сообщений поддерживается протоколами взаимодействия Advanced Message Queuing Protocol (AMQP)^ и ZeroMQ§ Message Transport Protocol (ZMTP)', его реализации присутствуют практически во всех современных коммуникационных системах.

^AMQP — протокол обмена сообщений через очереди брокера

§ZeroMQ — промежуточное программное обеспечение для прямого обмена сообщениями между приложениями

'ZMTP — протокол шифрования сообщений в ZeroMQ

А.1.2 Шаблон «Клиент-Сервер» (англ. "Request-Reply")

Паттерн клиент-сервер, он же запрос-ответ (Request-Reply) — это система операций, в которой отправитель получает ответ на запрос. Она используется для создания систем удаленного вызова процедур и известна как пара клиент-сервер. Хорошим примером практического применения шаблона Request-Reply служит сервисная система, предоставляющая удаленный доступ к ресурсам, аналогичная представленной в разделе 2.1.1. Количество клиентов в ней может расти вне зависимости от количества серверов, так как операции конечны во времени и приносят результат, изменяющий состояние задействованных компонентов единовременно (см. рис. А.4). Поскольку сообщения, участвующие в операции, передаются в две стороны, операции всегда занимают больше времени, чем события, по меньшей мере, в два раза.

Такая система хорошо масштабируется (см. рис. А.4), однако в случае, когда операции клиентов могут вносить изменения в состояние сервера, потребуется дополнительная синхронизация между сервером, на котором изменили состояние, и его дубликатами. Это занимает время и может приводить к рассинхронизации состояния узлов системы и ее недоступности в конечном итоге. Данный шаблон рассылки сообщений реализован во всех брокерных и P2P системах передачи сообщений.

А.1.3 Шаблон «Конвейер» (англ. "Pipeline")

Шаблон проектирования конвейер (Pipeline) представляет собой схему построения взаимосвязи компонентов, основанную на поэтапной обработке и передаче данных. Архитектурное решение представляет собой связанный направленный ациклический граф. Другими словами, управление осуществляется передачей сообщений между компонентами-обработчиками в одном направлении, формируя логику выполнения программы (см. рис. А.5). Такой подход, разделяющий программы на компоненты, распределенные по разным узлам, позволяет создавать комплексные графы выполнения задач с горизонтальным масштабировани-

Рисунок А.3 — Масштабирование шаблона взаимодействия Request-Reply

Рисунок А.4 — Алгоритм последовательности взаимодействий, приводящий к падению узлов из-за проблем синхронизации состояния

Sensors^

Sensor Sensor Sensor

Push Push Push

\

Aggregator

cesssing *

v

Worker Worker Worker

Push Pull Push Pull Push Pull

Collector

Pull Push

Рисунок А.5 — Осуществлене локализованного масштабирования исполнителей задач с применением паттерна Pipeline

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

А.1.4 Шаблон «Опрос» (англ. "Survey-Respondent")

Шаблон передачи сообщений опрос (Survey-Respondent) позволяет за предопределенный отрезок времени получить сводку результатов, опросив некоторое число респондентов. Предполагается, что не все опрошенные компоненты смогут ответить (см. рис. А.6). Удобно использовать данный подход для мониторинга со-

Surveyor

Control Node Respondent Respondent Respondent

ке

Subscribe

Subscribe

Subscribe

Get N respondents

Respondents addresses

send request to all given respondents

wait until survey expires

response

process results

response

< ignore

Surveyor

Control Node

Respondent

Respondent

Respondent

Рисунок А.6 — Диаграмма последовательности работы алгоритма Survey-Respondent

стояния системы и сборки статистики по узлам. Используется некоторыми Р2Р коммуникационными системами, такими как NanoMsg '.

А.2 Взаимодействие шаблонов передачи сообщений

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

^ NanoMsg — альтернативное ZeгoMQ решение для взаимодействия приложений без посредника

Client Dealer Worker

Request

Response

Service

Submit task

-Si-

Wait for task result

Sh

Tasik result w III never arrive

Client Dealer Worker

utdown Worker Node

Рисунок А.7 — Прокси узел заблокирован в ожидании ответа узла-исполнителя

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

А.2.1 События и операции

Наиболее распространенным проявлением такого объединения является использование Request-Response (Req-Res) и Publish-Subscribe (Pub-Sub). Эта связка не вносит особых требований для горизонтального масштабирования системы, помимо выдвигаемых шаблонами коммуникации, но остро ставит вопрос взаимных блокировок узлов в ходе ожидания событий и выносит на коммуникационный уровень разнородный трафик (см. рис. А.7).

Последнее, в свою очередь, увеличивает сложность оценки пропускной способности связок между узлами (см. рис. А.8).

Response Nodes

Node Operations Synchronization Node

reply subscriptions <-> reply subscriptions

Events P/iiblishers

Client Client

request subscriptions request subscriptions

Publisher

Events

Events Synchronization Publisher <->

Events

Рисунок А.8 — Масштабирование логики, основанной на сочетании шаблонов Request-Reply

и Publish-Subscribe

Control Node

Agents;

V

Agent Agent Agent

Dialog Dialog Dialog

к Л

Worker Worker

Dialog Dialog

Рисунок А.9 — Распределение соединений внутри диалогов работающей системы

А.2.2 Цепочки операций

В сервисных системах распространена частичная передача управления от одного компонента к другому, основанная на цепочках операций (см. рис. А.9). Такое делегирование подразумевает возможность компонентов сознательно окончить диалог, при этом в ходе диалога на каждом шаге состояние компонентов участников может меняться. Это означает, что пока компоненты не прекратили диалог, они неразрывно связаны и находятся в неопределенном состоянии. По окончании диалога компоненты могут синхронизировать свои состояния с дубликатами, как и в случае с операциями. В отличие от операций, такие цепочки, меняющие состояние компонентов, приводят к тому, что на дублирующих узлах ответы на параллельно приходящие запросы будут отличаться с момента входа в диалог. Из-за продолжительной и изменяющейся со временем нагрузки на узлы в ходе диалога, а также необходимости поддержания общения между конкретными узлами, проблема масштабирования встает особо остро. В современных коммуникационных системах на базе ЛМОР подобных протоколов и в Реег-2-Реег решениях, таких как ZeгoMQ и NanoMsq, данный вопрос не решен.

Такое разнообразие шаблонов взаимодействия узлов в сочетании с шаблонами управления архитектурой компонентов сервисной системы, представленными в [144-146], актуализирует задачу моделирования распределенных сервисных систем. Разработчикам требуются возможности детальной проработки разраба-

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

А.3 Распределенное хранение и верификация данных

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

1. Протоколы связи узлов

2. Алгоритм консенсуса

3. Работа сервисных приложений

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

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

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

Мы будем фокусироваться на смарт-контрактах для платформы Ethereum, написанных на языке Solidity, так как она имеет развитую инфраструктуру для разработки.

А.3.1 Сетевые уязвимости смарт-контрактов

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

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

Прежде чем перейти к классификации уязвимостей, необходимо обозначить некоторые архитектурные особенности выполнения кода на solidity. В первом приближении смарт-контракт это обычная компьютерная программа, которая выполняется виртуальной машиной, однако она должна выполняться на всех узлах сети. Для этого пользователю сначала необходимо написать код контракта, а затем отправить транзакцию, которая устанавливает контракт в сети по определенному адресу. Здесь есть еще одно ограничение: так как контракт будет выполняться на каждом узле, то, чтобы сократить издержки, была введена определенная единица операции виртуальной машины: "газ". Поэтому как при установке смарт-контракта, так и последующих его вызовах, автор транзакции платит за каждую единицу "газа которая будет потрачена с помощью введенной в системе меры стоимости: "эфира". Также в транзакции указывается максимальное число "газа которое разрешено потратить. Это сделано для того, чтобы наличие какого-нибудь бесконечного цикла в функции смарт-контракта, не потратило все средства пользователя, вызывающего эту функцию.

- Solidity - уровень кода.

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

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

— Reentrancy - подробнее рассматривается далее.

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

— EVM - уровень виртуальной машину Ethereum

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

— Ether lost in transfer - можно отправить деньги на адрес, который никому не принадлежит, тем самым они будут безвозвратно потеряны.

— Blockchain - уровень подхода систем типа blockchain

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

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

— Time constraints или timestamp dependency - майнер, который включает блок с транзакциями в сеть, имеет некоторый произвол в задании времени создания этой транзакции, что может привести к уязвимостям в контрактах, которые завязаны на время.

— Сетевые

* Reachable exception - аналогично exception disorder в предыдущей классификации.

* Failed send - есть возможность постоянно отвергать перевод денег.

* Transaction ordering - аналогично Unpredictable state в предыдущей классификации.

А.3.2 Ошибка доступа

Предположим, что у нас есть поле A в контракте, которое содержит чей-нибудь адрес A0ld, теперь мы хотим изменить этот адрес на другой Anew, предварительно отправив А01^ некоторое количество денег. Но, если в fallback функции A0ld будет выброшено исключение, состояние А0ш откатится (деньги не запишутся на его баланс), однако вызывающий не получит исключение, ему просто вернется false, и если не проверить это значение, а сразу назначить в A адрес Anew, то A0id не получит денег и потеряет положение в контракте, которое может быть привилегированно.

Рисунок А.10 — диаграмма последовательности вызовов Reachable exception

А.3.3 Очередность обмена

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

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

Рисунок А.11 — диаграмма последовательности вызовов Transaction ordering

Повторный вход

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

— проверяет наличие запрошенного количества денег на балансе,

— отправляет необходимую сумму вызывающему пользователю,

— уменьшает его баланс.

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

с баланса происходит в самом конце. Так будет продолжаться, пока пользователь не выведет все деньги, или не достигнет stack size limit.

[ owner | | wallet | [ usar |

deposit! u*er_addr. 100]

<

100

bfllanc*ii[utei„9ddf] и 100

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