首页 > 解决方案 > Firebase Functions 是否会因 Express 而遭受性能损失?

问题描述

我是 Express 和 Firebase 的新手,但我的印象是函数的主要好处是负载平衡,并为每个函数提供所需的带宽。

同时,每当我寻找将 Firebase 功能与 Express 相结合的方法时,总是将单个 Express 应用程序绑定到单个功能。

由于单个函数正在处理您的所有 api 请求,这难道不是一个主要的性能问题吗?为每个端点或至少一组端点创建一个函数会更好吗?还是创建这么多 Express 实例是一个更糟糕的主意?

标签: firebaseexpressgoogle-cloud-functions

解决方案


每个函数调用在其自己的服务器实例中完全隔离运行。您在项目中定义了多少函数并不重要,因为每个函数的每次调用都是完全相互独立的。此外,在一个服务器实例中,每个函数调用(无论调用哪个路由)都是串行处理的,正如您对 node.js 所期望的那样。在这种情况下,性能永远不是问题,除非您的代码效率低下。由于您没有说明您的代码在做什么,因此无法就其在 Cloud Functions 中的实际性能做出任何陈述。

唯一真正的限制是缩放。每个函数最多可以扩展到 1000 个并发实例。因此,如果您在单个函数后面有一个快速应用程序来服务您的所有请求,那么该应用程序将扩展到 1000。如果您在两个函数后面有两个应用程序,那么这两个函数中的每一个都可以扩展到 1000,总共2000 年。

如果您认为 1000 个并发实例的限制有问题,那么您可能高估了项目的负载。或者,您可能在一个函数调用中做了太多工作。如果确实如此,Cloud Functions 并不是最适合您的工具,您应该使用 App Engine 或 Compute Engine 对您的环境施加更多控制。


推荐阅读