menuclose menu

Как решить проблему производительности на low-code

8 мин.

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

За low-code инструментами закрепился стереотип, что подобные платформы обеспечивают решение достаточно простых задач. А созданные с их помощью приложения не выдерживают высокой нагрузки. Однако существуют лоу-код решения, позволяющие реализовывать проекты, требующие тяжелых расчетов. О том, как работает с расчетами low-code платформа GreenData, рассказывает в своей статье для CNews Генеральный директор ООО «Гриндата» – Андрей Архипов.

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

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

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

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

Какие инструменты решения обозначенных задач может предложить платформа GreenData?

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

Поддержка многопоточности в рамках одного сервера приложений GreenData.

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

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

Поддержка многопоточности в рамках одного сервера приложений GreenData

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

  • startThread — функция, которая запускает поток, выполняя указанный в нем код алгоритма;
  • waitAllThreads — функция, которая дожидается завершения выполнения всех потоков, запущенных в данном алгоритме.

Все потоки запускаются сразу, асинхронно.

Пример использования многопоточности

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

Рекомендуется планировать число потоков по формуле “Два потока на одно ядро процессора”:

Кол-во потоков = Кол-во ядер * 2.

Таким образом, если у нас, например, используется 6-ядерный процессор, то количество потоков будет равно 12.

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

Ниже представлен фрагмент кода алгоритма, в котором выделены:

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

На сам расчет и сохранение полученных данных потребовалось 3 минуты 20 секунд. Было проанализировано и обновлено 1 500 000 кредитных требований.

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

Организация параллельных расчетов на разных нодах кластера, на котором развернута GreenData

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

Ноды – серверы приложений, которые участвуют в расчетах, как правило, несут большую нагрузку. Важно, чтобы параллельный расчет не распространился на пользовательские ноды, которые обслуживают бизнес-операции клиентов. Для разрешения данной ситуации в конфигурации ноды предусмотрен специальный параметр greendata-core: features: algorithm-distributed-execution. Нагрузка будет делиться только между нодами, для которых данный параметр установлен в true.

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

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

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

Соответствующий код представлен ниже:

В заключении

Для «самых тяжелых» случаев следует использовать сочетание двух подходов — многопоточности и распределения расчетов по разным нодам. Это позволит достичь максимального быстродействия и выполнить даже самую ресурсоемкую задачу за приемлемое время.

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

Читают сейчас

Low-code

Импортозамещение

Автоматизация

Цифровая трансформация

Low-code технологии как ответ на вызовы импортозамещения

04.07.2022

7 мин.

Читать

Low-code

Решения для бизнеса

Автоматизация

Кредитование

Банки и финансы

GreenData разработала для банка ДОМ.РФ систему мониторинга выполнения условий кредитования

04.07.2022

7 мин.

Читать
01
03
К списку статей

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