我可以将 Firebase Cloud Functions 用于搜索引擎吗?

Posted

技术标签:

【中文标题】我可以将 Firebase Cloud Functions 用于搜索引擎吗?【英文标题】:Can I use Firebase Cloud Functions for search engine? 【发布时间】:2017-07-31 22:07:46 【问题描述】:

Firebase 最近发布了与 Cloud Functions 的集成,允许我们上传 javascript 函数以运行,而无需我们自己的服务器。

是否可以使用这些功能构建搜索引擎?我的想法是使用本地磁盘(tmpfs 卷)将索引数据保存在内存中,并且对于每个写入事件,我都会索引新数据。 tmpfs 是否在函数调用(实例)之间保留数据?

是否可以为此目的使用云功能,或者我应该使用专用服务器来索引数据?

与此相关的另一个问题是:当云函数从 Firebase 实时数据库获取数据时,它会消耗网络还是仅读取磁盘? princing是怎么计算的?

谢谢

【问题讨论】:

@downvoter:你能解释一下原因吗? 您的搜索问题和定价问题对我来说似乎都有效。但是你可以单独发布它们吗?我尝试回答有关搜索的问题,因此最好单独提出一个有关定价的问题。 @FrankvanPuffelen 我可以就 *** 中的价格提出问题吗? 这不是很大的限制吗?我觉得“为什么使用 Firebase?”应该有一个大标题。页面特别说,是的,它是一个实时数据库,但我们实际上并没有让你做任何像样的查询,去每月支付 50 美元的钞票将数据库的那一侧支付给第三方?? Firebase 确实需要自己的搜索引擎,或者应该允许使用 Cloud Functions for Firebase 来实现。我不想每个月花 59 美元只使用 Algolia 作为搜索选项。 【参考方案1】:

你当然可以试试。 Cloud Functions 有一个本地文件系统,通常用于在运行期间维护状态。有关更多信息,请参阅此答案:Write temporary files from Google Cloud Function

但是(据我所知)无法保证在您的函数运行之间保持状态。甚至下次该函数将在同一个容器上运行。下次您可能会在新创建的容器上运行。或者当调用出现高峰时,您的函数可能同时在多个容器上运行。因此,您可能必须为函数的每次运行重新构建搜索索引。

我会考虑集成一个外部专用搜索引擎,例如本例中的 Algolia:https://github.com/firebase/functions-samples/tree/master/fulltext-search。看看代码:即使使用 cmets 和 license,它也只有 55 行!

或者,您可以找到一个持久性存储服务(Firebase 数据库和 Firebase 存储是两个示例)并使用它来持久化搜索索引。因此,您需要运行代码来更新 Cloud Functions 中的搜索索引,但会将生成的索引文件存储在更持久的位置。

【讨论】:

So.. 1)如何无法保证保持状态我可以尝试运行一个永远不会结束的无限函数(这样我不需要 tmpfs,可能是一个数组),2)我不喜欢在我的项目中添加第三部分搜索引擎(如 Algolia 或 Elasticsearch)的想法,3)将索引数据保存在数据库或存储中会产生很大的网络足迹。我介于 (1) 之间并且拥有自己的服务器【参考方案2】:

GCF 团队成员 + 前谷歌搜索成员。由于某些原因,Cloud Functions 不适合内存搜索引擎。

    搜索引擎将其索引机器和服务机器分开是非常明智的。在规模上,您需要担心读写热点不同。

    正如 Frank 所暗示的,您不能保证在多个请求中获得相同的实例。我想强调他的担忧:您将永远跨两个不同的 Cloud Functions 获得相同的实例。每个云函数都有自己的后端基础架构,可以独立配置和扩展。

我知道削减依赖项很诱人,但削减持久性存储不是办法。您的服务层可以使用缓存来加速请求,但持久存储可确保您在云函数崩溃或部署更新时不必重新索引整个语料库(每个都保证整个实例被废弃并重新创建)。

【讨论】:

以上是关于我可以将 Firebase Cloud Functions 用于搜索引擎吗?的主要内容,如果未能解决你的问题,请参考以下文章

Firebase Cloud Functions HTTPS 中的参数

Firebase:将嵌套文件夹和文件批量上传到 Google Cloud Bucket

如何将我的 Firebase 实时数据库转移到 Firebase Cloud Firestore

如何将我的 Firebase 实时数据库转移到 Firebase Cloud Firestore

如何将 CSV 或 JSON 导入到 Firebase Cloud Firestore

链接现有的Firebase和Google Cloud项目