【问题标题】:Where should lookup tables be stored for serverless functions? [closed]无服务器功能的查找表应该存储在哪里? [关闭]
【发布时间】:2020-11-05 22:40:37
【问题描述】:

我正在使用 Google Cloud Functions 构建我的应用程序,并且目前有一个数据库。每个云功能将使用不同的查询来查询此表,以在将其信息添加到数据库之前对其进行标准化。这感觉不太好,因为表总是静态的(有时我可能会手动更改),所以数据库查找感觉很慢而且资源很重。此外,每个云功能都使用连接,因此连接限制将很快耗尽,但我不确定这是否能解决任何问题,因为它仍然需要连接才能将数据输入数据库。它所要做的就是删除额外的 1-3 次调用以标准化数据。

将这张表存储在数据库中是最好的方法吗?还是将其存储在 javascript 数组文件或其他地方更好?

【问题讨论】:

    标签: node.js database google-cloud-platform google-cloud-functions lookup


    【解决方案1】:

    如果您想缓存数据,您可以在首次加载数据时将数据写入本地tmp 目录中的文件。如果同一个容器实例用于运行您的 Cloud Function 的另一个实例,该文件仍将存在并且您可以读取它。但是:这与将数据保存在内存中是一样的,因为/tmp 实际上是作为 RAM/内存磁盘实现的。因此,您也可以简单地在数据周围保留一个变量。

    除此之外,您可以在 Cloud Functions 中缓存的内容并不多。您可以考虑将数据包含在部署中的文件中,或者包含在部署中的本地 sqlite 数据库中。但这意味着您必须在数据库更改时再次部署 Cloud Functions,因此这完全取决于数据更改的频率以及发生这种情况时您愿意做什么。

    【讨论】:

    • 谢谢!我可能会将它作为变量保存在内存中。数据不应该经常更改,并且肯定会比我在它自己的功能中进行功能更新更频繁地更改,因此我可能只在部署功能更改时包含数据更改。
    • 听起来像是一个计划。请记住,Cloud Functions 管理容器,并且可能不会将它们保留很长时间。如果您想对此进行更多控制,请考虑使用 Cloud Run 并设置 minimum number of instances。但是,当然,您将为这些实例付费,即使它们上没有调用云函数。总是这样的权衡。
    • 是的,这就是我使用它们的原因。它有助于显着降低成本,因为在我的大部分时间里,我缩减到 0,但是当用户使用该软件时,它会扩展到大量实例。 Cloud run 看起来也很不错,但是当我开始开发时,我一定是错过了它,所以我选择了云功能,它在高层次上似乎更容易管理。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-15
    • 2016-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-06
    相关资源
    最近更新 更多