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

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

Рис.2 - Кнопка «Новый проект»
Откроется окно «Создание новой цифровой модели системы».

Рис.3 - Окно «Создание новой цифровой модели системы»
Заполните поля «Название проекта», «Версия проекта», «Описание проекта» и нажмите кнопку «Создать».
После того как вы создали проект, появится рабочая область для моделирования схемы.

Рис.4 - Рабочая область для моделирования схемы
Нажмите на кнопку «+», чтобы добавить новый цифровой двойник.
В открывшейся окне вы можете выбрать способ создания микросервиса:
Генерация цифрового двойника на основе существующих метрик.

Рис.5 - Кнопка «Сгенерировать цифровой двойник»
Если вы нажали на кнопку «Сгенерировать цифровой двойник», то вас перекинет на страницу «Генерация цифрового двойника», где вы сможете сгенерировать цифровой двойник на основе существующих метрик. Подробнее как это сделать описано в разделе документации «Генерация цифрового двойника».
Импорт существующего цифрового двойника.

Рис.6 - Кнопка «Загрузка существующего цифрового двойника»
Если вы выбрали загрузку существующего цифрового двойника, то при нажатии на кнопку «Загрузка существующего цифрового двойника» будет выведена форма для добавления нового цифрового двойника в виде файла в формате json (например, если вы выгрузили json с данными по цифровому двойнику из раздела «Генерация цифрового двойника»).
Далее нажмите на кнопку «Импортировать json».

Рис.7 - Кнопка «Импортировать json»
В результате в форме будут отображены данные цифрового двойника, где значения цифрового двойника будут заполнены следующим образом (пример):
{
"approximation": {
"name": "example",
"r2_score": 0.8274659416286798,
"r2_score_memory": 0.8693824694164557,
"degree": 4,
"degree_memory": 5,
"equation": "y = 0.1721160786 + -0.0040123388 * tps + 0.0000467083 * tps^2 + -0.0000001518 * tps^3 + 0.0000000002 * tps^4",
"equation_memory": "y = 0.4518521493 + -0.0019271983 * tps + -0.0000071230 * tps^2 + 0.0000002039 * tps^3 + -0.0000000008 * tps^4 + 0.0000000000 * tps^5",
"coefficients": {
"intercept": 0.17211607864438944,
"coefs": [
-0.004012338761542752,
0.00004670833417044238,
-1.5176740185022632e-7,
1.610320292661595e-10
]
},
"coefficients_memory": {
"intercept": 0.4518521493063319,
"coefs": [
-0.0019271983417529267,
-0.000007123033571743772,
2.03885491727988e-7,
-7.893728712896916e-10,
9.034571635130323e-13
]
},
"data_bounds": {
"tps_min": 0.15000000000000002,
"tps_max": 363.45,
"cpu_min": 0.01,
"cpu_max": 0.46,
"memory_min": 0.35,
"memory_max": 0.56,
"tps_memory_min": 0.15000000000000002,
"tps_memory_max": 363.45
},
"metadata": {
"cpu_limits": 600,
"memory_limits": 851443712
}
},
"name": "example",
"version": "1"
}
Поле |
Тип данных |
Описание |
|---|---|---|
name |
String |
Имя цифрового двойника |
version |
Integer |
Верчия цифрогового двойника |
approximation.name |
String |
Имя сервиса |
approximation.r2_score |
Integer |
Оценка точности модели |
approximation.r2_score_memory |
Integer |
Оценка точности модели по памяти |
approximation.equation |
String |
Уравнение cpu от tps |
approximation.equation_memory |
String |
Уравнение cpu от tps по памяти |
approximation.degree |
Integer |
Значение точности |
approximation.degree_memory |
Integer |
Значение точности по памяти |
approximation.coefficients.intercept |
Integer |
Коэффициент уравнения |
approximation.coefficients.coefs |
Integer |
Коэффициенты уравнения при степенях |
approximation.coefficients_memory.intercept |
Integer |
Коэффициент уравнения по памяти |
approximation.coefficients_memory.coefs |
Integer |
Коэффициенты уравнения при степенях по памяти |
approximation.data_bounds.tps_min |
Integer |
Ограничение по минимальному tps, в рамках которого будет корректный расчет |
approximation.data_bounds.tps_max |
Integer |
Ограничение по максимальному tps, в рамках которого будет корректный расчет |
approximation.data_bounds.cpu_min |
Integer |
Ограничение по минимальному CPU, в рамках которого будет корректный расчет |
approximation.data_bounds.cpu_max |
Integer |
Ограничение по максимальному CPU, в рамках которого будет корректный расчет |
approximation.data_bounds.memory_min |
Integer |
Ограничение по минимальному memory, в рамках которого будет корректный расчет |
approximation.data_bounds.memory_max |
Integer |
Ограничение по максимальному memory, в рамках которого будет корректный расчет |
approximation.data_bounds.tps_memory_min |
Integer |
Ограничение по минимальному tps_memory_min, в рамках которого будет корректный расчет |
approximation.data_bounds.tps_memory_max |
Integer |
Ограничение по максимальному tps_memory_max, в рамках которого будет корректный расчет |
approximation.metadata.cpu_limits |
Integer |
Лимиты контейнера по CPU |
approximation.metadata.memory_limits |
Integer |
Лимиты контейнера по memory |
Таблица. Описание полей цифрового двойника
Примечание: значения цифрового двойника не могут быть отрицательными. Значения для секции approximation берутся из ручки digital-twin.
После того, как вы ввели данные/импортировали json файл с цифровым двойником и нажали кнопку «Добавить», ваш новый сервис отобразиться на общей схеме (без связей).

Рис.8 - Добавление нового элемента
Добавьте связь к новому сервису. Соблюдайте корректность, соединенного входа и выхода.
В данном примере необходимо делать связь от выхода генератора нагрузки (предварительно был добавлен для входящей нагрузки) к входу «example», далее от выхода «example» на вход «egw» (предварительно был добавлен еще один компонент egw).
В результате соединения нового сервиса с другими получаем следующий результат:

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

Рис.10 - Генератор нагрузки
Примечание: вы можете добавить заглушку (output нода), нажав на соответствующую кнопку. В результате появляется возможность оценить зависимости и учитывать нагрузочные характеристики выходных потоков.

Рис.11 - Заглушка
Как видно на картинке для каждого сервиса выводится следующая информация: процент утилизации, процент утилизации по памяти, количество реплик и нагрузка на реплику в tps (рис.11).

Рис.12 - Результат расчета
Используйте специальные кнопки для отображения дополнительной информации.
Нажмите на переключатель «Результат расчета», чтобы увидеть результат значений tps между сервисами (на стрелках):

Рис.13 - Кнопка «Результат расчета»

Рис.14 - Отображение по кнопке «Результат расчета»
Также можно нажать на переключатель «Показывать дополнительную информацию», чтобы увидеть дополнительную информацию по весу стрелок между компонентами:

Рис.15 - Кнопка «Показывать дополнительную информацию»

Рис.16 - Результат работы кнопки «Показывать дополнительную информацию»
Нажмите на кнопку «Экспорт» при раскрытии меню слева, чтобы сохранить на свое устройство схему цифровой архитектуры с результатом расчета:

Рис.17 - Кнопка «Экспортировать схему»
Далее шаги 7-16 являются опциональными.
Нажмите на кнопку «Импортировать» на главной странице, чтобы загрузить схему цифровой архитектуры в формате json.

Рис.18 - Кнопка «Импортировать схему»
Примечание: также есть возможность импортировать схему при создании проекта, для этого нажмите на кнопку «Импортировать» слева в меню:

Рис.19 - Кнопка «Импортировать схему» в меню
В результате будет импортирована схема, которая будет выглядеть следующим образом:

Рис.20 - Результат импортирования схемы
Элементы данной схемы можно отредактировать при нажатии на кнопку «Карандаш», которая есть у каждого компонента:

Рис.21 - Кнопка «Редактирование»
Окно редактирования параметров будет иметь следующий вид:

Рис.22 - Форма редактирования параметров
Примечание: значения не могут быть отрицательными.
После настройки сервиса нажмите на кнопку «Сохранить».
Далее, при необходимости выполните опциональные шаги с 8 по 16, если нет необходимости в их выполнении, то выполните действия согласно шагу 6, чтобы сохранить полученную схему на свое устройство.
Функционал предусматривает возможность добавить несколько входящих нагрузок (опционально).
Нажмите кнопку «Генератор нагрузки».

Рис.23 - Кнопка «Генератор нагрузки»
На рабочей поверхности отобразится еще один элемент с входящей нагрузкой.

Рис.24 - Отображение второго input элемента с входящей нагрузкой
Данная функция может быть полезна для моделирования сценариев нагрузки, где входной трафик может поступать из нескольких независимых источников.
Функционал предусматривает возможность добавить выходящую нагрузку (опционально).
Данный функционал позволяет моделировать output-ноды и описывать выходные точки системы, что повышает точность моделирования.
Нажмите на значок «Заглушка» в меню добавления элемента.

Рис.25 - Значок «Заглушка»
На рабочей поверхности отобразится элемент с выходящей нагрузкой.

Рис.26 - Отображение выходящей нагрузки
Функционал предусматривает удаление сервиса, но не является обязательным (опционально).
Например, для удаления сервиса example перейдите в режим редактирования сервиса и нажмите кнопку «Удалить»:

Рис.27 - Кнопка «Удалить» сервис
Функционал предусматривает возможность замены цифрового двойника (обновления версии), но не является обязательным (опционально).
Например, для замены компонента example (обновления версии) нажмите на кнопку «Заменить цифровой двойник»:

Рис.28 - Кнопка «Заменить цифровой двойник»
При нажатии на нее открывается всплывающее окно для редактирования:

Рис.29 - Окно для редактирования цифрового двойника
В окне предусмотрена кнопка «Импорт элемента» для загрузки файла JSON:

Рис.30 - Кнопка импорт элемента
После того, как вы изменили данные/импортировали json файл с цифровым двойником (обновили версию) и нажали кнопку «Заменить», ваш новый сервис отобразиться на общей схеме с новыми значениями и произойдет перерасчет.
Используйте кнопки дополнительных функциональностей (опционально).

Рис.31 - Кнопки дополнительных функциональностей
Предусмотрены вспомогательные кнопки:
1 - Увеличение масштаба.
2 - Уменьшение масштаба.
3 - Настроить вид (кнопка изменения масштаба или положения элемента на экране так, чтобы он полностью помещался в пределах видимой области).
4 - Переключатель состояний (кнопка фиксации элементов на экране).
Также предусмотрена кнопка настройки панели (схемы):

Рис.32 - Кнопка настройки панели
Нажмите на данную кнопку, если хотите указать «Название»,»Описание»,»Версию».
Используйте кнопку «Документация» (опционально).
Если есть ссылка на документацию, то для пользователя будет доступна кнопка «Документация».

Рис.33 - Кнопки «Документация»
Функционал предусматривает расчет по нескольким эпохам (опционально).
Нажмите на значок дополнительных функций:
![]()
Рис.34 - Значок дополнительных функций
Нажмите на кнопку «Добавить эпоху»:

Рис.35 - Кнопка «Добавить эпоху»
После добавления нескольких эпох вы можете посмотреть на графике результат. Для этого нажмите на кнопку «Показать график».

Рис.36 - Кнопка «Показать график»

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

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

Рис.39 - Удаление эпохи
Нажмите на кнопку «Скачать результат», если хотите выгрузить полученный результат по эпохам (Epoches.yaml) и спецификацию вашей схемы (ScaleObjects.yaml).

Рис.40 - Кнопка «Скачать результат»
Функционал предусматривает генерацию отчета по эпохам (опционально).
Добавьте предварительно эпохи согласно пункту 13.
Нажмите на кнопку «Сгенерировать отчет».

Рис.41 - Кнопка «Сгенерировать отчет»
В результате будет выведен отчет содержащий следующую информацию:
Данные по максимальным значениям среди всех сервисов:
Максимальная утилизация по памяти.
Максимальная утилизация.
Максимальная входная нагрузка.

Рис.42 - Визуализация максимальных значений среди всех сервисов
Также отчет содержит графики, которые показывают следующую информацию:
Входная нагрузка от эпох.
Входная нагрузка на каждый сервис на эпоху.
Число реплик на каждый сервис на эпоху.
Утилизация по CPU на каждый сервис на эпоху.
Утилизация по памяти на каждый сервис на эпоху.
Утилизация по CPU на каждый сервис на эпоху абсолютные значения.
Утилизация по памяти на каждый сервис на эпоху абсолютные значения.
Общая утилизация по CPU на проекте.
Общая утилизация по памяти на проекте.
В качестве примера представлено несколько графиков:

Рис.43 - График «Входная нагрузка от эпох»

Рис.44 - График «Входная нагрузка на каждый сервис на эпоху»

Рис.45 - График «Утилизация по памяти на каждый сервис на эпоху»
При возникновении вопросов вы можете обратиться за помощью в чат поддержки по кнопке (опционально)

Рис.46 - Кнопка «Чат поддержки»
Результат#
В ходе выполнения данных шагов пользователь получает файл в формате json, который содержит схему с взаимосвязанными сервисами, рассчитанными значениями утилизации, утилизации по памяти и количеством реплик.
Для проверки успешности использования моделирования необходимо:
Выполнить шаг 1.
Выполнить шаги 2-5 (или выполнить действия согласно шагу 7, если вы работаете с уже имеющиеся схемой).
Выполнить шаги 8-16 (опционально).
Выполнить шаг 6.
Импортировать полученную схему.
Проверить, что раннее экспортированный файл соответствует импортированному по содержанию: корректность рассчитанных данных и связей между сервисами.
Правила эксплуатации#
Особых правил эксплуатации не предусмотрено.
Cценарий не предусматривает загрузку и выгрузку данных (журналы событий, база пользователей, атрибуты доступа, ролевая модель и т. д.) в/из внешних источников (сервисы, автоматизированные системы и т.д.).