firebase - Firebase Functions 是否会因 Express 而遭受性能损失?
问题描述
我是 Express 和 Firebase 的新手,但我的印象是函数的主要好处是负载平衡,并为每个函数提供所需的带宽。
同时,每当我寻找将 Firebase 功能与 Express 相结合的方法时,总是将单个 Express 应用程序绑定到单个功能。
由于单个函数正在处理您的所有 api 请求,这难道不是一个主要的性能问题吗?为每个端点或至少一组端点创建一个函数会更好吗?还是创建这么多 Express 实例是一个更糟糕的主意?
解决方案
每个函数调用在其自己的服务器实例中完全隔离运行。您在项目中定义了多少函数并不重要,因为每个函数的每次调用都是完全相互独立的。此外,在一个服务器实例中,每个函数调用(无论调用哪个路由)都是串行处理的,正如您对 node.js 所期望的那样。在这种情况下,性能永远不是问题,除非您的代码效率低下。由于您没有说明您的代码在做什么,因此无法就其在 Cloud Functions 中的实际性能做出任何陈述。
唯一真正的限制是缩放。每个函数最多可以扩展到 1000 个并发实例。因此,如果您在单个函数后面有一个快速应用程序来服务您的所有请求,那么该应用程序将扩展到 1000。如果您在两个函数后面有两个应用程序,那么这两个函数中的每一个都可以扩展到 1000,总共2000 年。
如果您认为 1000 个并发实例的限制有问题,那么您可能高估了项目的负载。或者,您可能在一个函数调用中做了太多工作。如果确实如此,Cloud Functions 并不是最适合您的工具,您应该使用 App Engine 或 Compute Engine 对您的环境施加更多控制。
推荐阅读
- python-3.x - “取消捆绑” Pyinstaller exe
- html - Svg 图标在本地查看时显示,但在部署时不显示
- azure - 向 Azure 事件中心中的特定使用者组发送和接收消息
- c# - 查找两个对象列表的对称差异
- python - Django CRUD 模板未显示
- c# - 什么接口类型适合实现不同签名的策略?
- python-3.x - 使用 domain-wide-delegation 获取转发电子邮件的原始电子邮件标头
- vue.js - 如何使用vue js使模态从一端移动到另一端
- javascript - 如何在警报确定按钮上重新呈现页面
- snowflake-cloud-data-platform - Big-Endian 平台上的雪花驱动程序问题