我是Express和Firebase的新手,但给我的印象是,功能的主要好处是负载平衡并为每个功能提供所需的带宽。
每当我想将Firebase功能与Express结合使用时,它总是将单个Express应用程序绑定到单个功能。
那不是主要的性能问题,因为单个函数可以处理您的所有api请求?为每个端点或至少每个端点创建一个函数会更好吗?还是创建那么多Express实例更糟糕?
答案 0 :(得分:0)
每个函数调用完全在其自己的服务器实例中运行。在项目中定义多少个函数都没有关系,因为每个函数的每次调用都完全相互独立。同样,在一个服务器实例中,每个函数调用(无论正在调用哪个路由)都是串行处理的,就像您希望从节点上进行的那样。在这种情况下,性能永远不是问题,除非您的代码效率低下。由于您尚未说出代码在做什么,因此无法对其在Cloud Functions中的实际性能做任何陈述。
唯一真正的限制是缩放。每个功能最多可扩展到1000个并发实例。因此,如果在单个功能后面有一个快速应用程序可以满足您的所有请求,则该应用程序可以扩展到1000个。如果两个功能后面有两个应用程序,则这两个功能中的每个功能都可以扩展到1000个,总共2000。
如果您认为1000个并发实例的限制存在问题,则可能是高估了项目的负载。或者,您可能在一个函数调用中做了太多工作。如果确实如此,那么Cloud Functions并不是您的最佳工具,您应该使用App Engine或Compute Engine对您的环境进行更多控制。