Как запустить несколько исполняемых файлов с помощью облачных служб Azure - Функциональные приложения? - PullRequest
0 голосов
/ 14 апреля 2019

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

  • Запустить Software1

  • Software1 создает некоторые вспомогательные файлы, которые будут использоваться Software2

  • Программное обеспечение 2 запускается и генерирует файл результатов

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

В качестве возможного решения я думаю:

  • Запустите виртуальную машину, на которой работает Software1

  • Software1 создает несколько папок.Каждая папка содержит все необходимые файлы для выполнения одного моделирования.

  • Каждая папка загружается в папку хранилища BLOB-объектов

  • Приложение-функция запускается при создании папки хранилища BLOB-объектов и выполняется запуск длязапустив Software2

  • после того, как Software2 выполнит симуляцию, приложение-функция скопирует файл результатов обратно в хранилище BLOB-объектов, в ту же папку соответствующего прогона.

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

Заранее благодарю за помощь, Гвидо

Ответы [ 2 ]

0 голосов
/ 15 апреля 2019

Если вы используете триггер BLOB-объекта, ваша функция будет запускаться каждый раз, когда вы будете выполнять операцию в контейнере BLOB-объектов. Если 1 файл = 1 запущен для Software2, триггер BLOB-объекта в порядке, а Azure будет масштабироваться и выполнять вашу функцию параллельно. Проблема заключается в том, что Software2 необходимо записать результаты обратно в BLOB-объект, создав новые триггеры.

Другим способом было бы, если бы Software1 отправлял сообщение в очередь хранения или служебную шину или событие с сеткой событий, и ваша функция могла бы быть вызвана этим. Затем вы написали бы функцию Durable, используя шаблон «Fan out / fan in» для параллельного запуска Software2.

Вы также можете посмотреть на создание параллельных ветвей в приложении логики.

0 голосов
/ 14 апреля 2019

Если я правильно понял, вы хотите запустить это приложение-функцию несколько раз параллельно, чтобы «симулировать» параллельное выполнение. Я думаю, вам нужно взглянуть на Event Grid и переосмыслить свою архитектуру.

...