Как оптимизировать параллельный вызов «sub» облачных функций из функции, запускаемой по HTTP - PullRequest
0 голосов
/ 05 мая 2019

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

На данный момент у меня есть две облачные функции (nodejs 8):

«Основная» функция, которую пользователь вызывает напрямую, передавая список файлов журнала, которые необходимо обработать;функция вызывает «дочернюю» функцию для каждого предоставленного файла журнала, который я также запускаю с помощью HTTP-запроса, выполняемого параллельно с использованием async.each.«Дочерняя» функция обрабатывает один файл журнала и возвращает данные в «основную» функцию, которая объединяет результаты и после обработки всех файлов отправляет результаты обратно пользователю.

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

Наиболее вероятным виновником является тот факт, что я запускаюдочерняя функция, использующая HTTP-запрос, но я не нашел способа вызвать их «внутри».Есть ли другой подход, специфичный для облачных функций Google, или я могу каким-то образом оптимизировать распараллеливание HTTP-запросов?

1 Ответ

1 голос
/ 05 мая 2019

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

См. Также: Вызов облачной функции из другой облачной функции

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