如何在谷歌云中保存一些规则或配置,然后调用它来处理云函数中的pubsub主题数据?



我正在使用谷歌云函数。我来自基于服务器的应用程序,所以我对无服务器世界知之甚少。

我有一个场景,我在谷歌数据存储中有两种,即iot_kind和config_kind。一种具有类似于查找表的配置,而另一种具有正常的有效载荷值。

我正在将数据从物联网设备发布到 pubsub 主题中,并将该数据放入云函数中。

例如,物联网有效载荷是

{"id":"213213", 'price': 20, 'name':"some_name"}

然后我正在查询配置 KIND 并从中提取一些数据,例如价格乘数

select * 
from config_kind 
where id = "213213" #lets say output is 2

然后我将价格*2相乘并将其保存为IoT_kind例如值= 40

现在以这种方式,每次将数据放入云功能时,我都必须进行读取,我认为这非常昂贵并且还需要处理。

有没有更好的方法?就像我将最新的配置保存在某个地方,然后每当有效负载出现时,它都会看到配置并根据配置进行处理,然后将其保存到数据库中?

我可以做一些事情,比如创建一个云函数并在那里存储最新的值,然后从另一个云函数调用这个云函数来从中获取值吗? 它会更便宜还是更便宜?多谢!

Cloud Function是一种无服务器和无状态的服务。创建实例时,它存在了一段时间,并且已停止。没有磁盘挂载,全部在内存中工作。这意味着您无法永久保存其中的任何值。

无论如何,您有 3 种解决方案来减少读入数据存储的配置数量

  • 即使无法持久存储数据,您仍然可以将它们存储在内存中(最多 2Gb 内存,包括您的应用程序基础(。因此,您必须对数据存储执行第一个请求,然后,您可以将配置数据存储到定义为全局变量的映射中。由于云函数只能同时处理 1 个请求,因此您没有争用条件。(例如,Cloud Run不是一回事(
  • 如果您的配置不经常更改,您可以将其存储到文件中并存储到云存储中。在函数的开头,您加载文件(并像以前一样将其存储到全局变量中,仅读取一次(,然后执行搜索文件。仅当配置文件大小低于函数内存限制时,这才有效。
  • 如果读取成本高于每月 50 美元,则可以使用 Cloud SQL 数据库而不是数据存储。

这对你有意义吗?

最新更新