Несут ли функции Firebase потери производительности в Express? - PullRequest
0 голосов
/ 27 декабря 2018

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

Между тем, когда я смотрюДля того, чтобы объединить функции Firebase с Express, это всегда одно приложение Express, связанное с одной функцией.

Не будет ли это серьезной проблемой производительности, поскольку одна функция обрабатывает все ваши запросы API?Было бы лучше создать функцию для каждой конечной точки или хотя бы их группы?Или создание такого количества экземпляров Express - еще худшая идея?

1 Ответ

0 голосов
/ 27 декабря 2018

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

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

Если вы считаете, что ограничение в 1000 одновременных экземпляров проблематично, возможно, вы переоцениваете нагрузку на ваш проект.Или, возможно, вы выполняете слишком много работы за один вызов функции.Если это действительно так, то облачные функции - не лучший инструмент для вас, и вам следует лучше контролировать свою среду с помощью App Engine или Compute Engine.

...