У меня есть тысячи файлов журналов в облачном хранилище, которые мне нужно обработать и агрегировать с помощью функции HTTP, запускаемой облаком, и я ищу подход для максимально быстрого вычисления задачи с использованием распараллеливания.
На данный момент у меня есть две облачные функции (nodejs 8):
«Основная» функция, которую пользователь вызывает напрямую, передавая список файлов журнала, которые необходимо обработать;функция вызывает «дочернюю» функцию для каждого предоставленного файла журнала, который я также запускаю с помощью HTTP-запроса, выполняемого параллельно с использованием async.each.«Дочерняя» функция обрабатывает один файл журнала и возвращает данные в «основную» функцию, которая объединяет результаты и после обработки всех файлов отправляет результаты обратно пользователю.
Если я вызываюнепосредственно дочерняя функция, для завершения одного файла требуется около 1 секунды.Я надеюсь, что если я вызову основную функцию для параллельной обработки 100 файлов, время все равно будет больше или меньше 1 секунды.Первый файл в пакете действительно возвращается через 1 секунду, но время увеличивается с каждым отдельным файлом, а 100-й файл возвращается через 7 секунд.
Наиболее вероятным виновником является тот факт, что я запускаюдочерняя функция, использующая HTTP-запрос, но я не нашел способа вызвать их «внутри».Есть ли другой подход, специфичный для облачных функций Google, или я могу каким-то образом оптимизировать распараллеливание HTTP-запросов?