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

时间:2017-03-10 14:15:59

标签: firebase firebase-realtime-database google-cloud-functions

Firebase最近发布了与云功能的集成,允许我们在不需要自己的服务器的情况下上传Javascript函数。

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

云功能可以用于此目的,还是应该使用专用服务器来索引数据?

与此相关的另一个问题是:当云功能从Firebase实时数据库获取数据时,它是消耗网络还是只读取磁盘?如何在计算中计算?

由于

2 个答案:

答案 0 :(得分:10)

你当然可以试试。云功能具有本地文件系统,通常用于在运行期间维护状态。有关详情,请参阅此答案:Write temporary files from Google Cloud Function

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

我会考虑在此示例中集成外部专用搜索引擎,例如Algolia:https://github.com/firebase/functions-samples/tree/master/fulltext-search。看看代码:即使有评论和许可,它只有55行!

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

答案 1 :(得分:4)

GCF团队成员+前谷歌搜索会员。由于某些原因,云功能不适合内存中的搜索引擎。

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

  2. 正如弗兰克提到的那样,您无法保证在多个请求中获得相同的实例。我想加强他的关注:你将从不在两个不同的云功能中获得相同的实例。每个云功能都有自己的后端基础架构,可以独立配置和扩展。

  3. 我知道削减依赖关系很诱人,但是切断持久存储并不是这样。您的服务层可以使用缓存来加速请求,但是如果您的云功能崩溃或部署更新(每个都保证整个实例被废弃并重新创建),持久存储可确保您不必重新索引整个语料库。