最终期望的结果是性能更高的系统,资源利用率更低。我想将一个sql数据库连接到云函数并托管一组pf api&#39。s。
以下是两种选择......
替代方案: 我们将每个api作为单独的云功能托管。
const functions = require('firebase-functions');
exports.helloFunc1 = functions.https.onRequest(function (request, response){
response.send("Hello from Func1!");
});
exports.helloFunc2 = functions.https.onRequest(function (request, response){
response.send("Hello from Func2!");
});
备选方案二: 我们拥有一个内部路由的云功能。
const functions = require('firebase-functions');
const express = require('express');
const router = new express.Router();
var app = express();
var helloFunc1 = function (request, response){
// After some DB OPS
response.send("Hello from Func1!");
};
var helloFunc2 = function (request, response){
// After some DB OPS
response.send("Hello from Func2!");
};
router.get('/helloFunc1',helloFunc1);
router.get('/helloFunc2',helloFunc2);
exports.root = functions.https.onRequest(router);
帮助我理解两种方法之间的权衡和任何优点/缺点之间的权衡。
另外,请将数据库连接池视为分析的一部分。如果我们使用firebase或数据存储区,这不会是决定因素,但对于本机SQL数据库,我假设在自动缩放时,大量连接会影响性能。
编辑#1
这是一个基本的例子,但实际上其含义可能更多。正在使用提供其他功能的框架,如ORM和共享模型,AUTH中间件,一般约定优于配置方法,是无服务器环境中的真正选项吗? 因为我们知道这些框架设计为在一个永远在线的服务器上运行。 ORM& amp;框架一般涉及被抢占和它将如何影响绩效?
PS。我是Node和Express的新手。
答案 0 :(得分:1)
暂时我可能会建议部署Express应用程序,主要是为了获得冷启动减少的优势。但是,如果您的某些端点具有非常不同的内存/ CPU配置文件,则将它们分离到自己的云功能中可能是有意义的(特别是一旦调整通过Firebase部署的功能的CPU /内存配置文件变得更容易)。