google-cloud-platform - 如何在谷歌云中保存一些规则或配置,然后调用它来处理云函数中的 pubsub 主题数据?
问题描述
我正在使用谷歌云功能。我来自基于服务器的应用程序,所以我对无服务器世界了解不多。
我有一个场景,我在谷歌数据存储中有两种类型,即 iot_kind 和 config_kind。一种具有类似于查找表的配置,另一种具有正常的有效负载值。
我正在将 IoT 设备中的数据发布到 pubsub 主题中,并将该数据获取到云函数中。
例如,物联网有效载荷是
{"id":"213213", 'price': 20, 'name':"some_name"}
然后我正在查询配置类型并从中提取一些数据,例如价格乘数
select *
from config_kind
where id = "213213" #lets say output is 2
然后我将价格乘以 *2 并将其保存到 IoT_kind 例如 value=40
现在以这种方式,每次我将数据输入云功能时,我都必须进行读取,我认为这非常昂贵并且有点处理。
有没有更好的方法呢?就像我将最新的配置保存在某处,然后每当有效负载出现时,它会看到配置并根据配置进行处理,然后将其保存到数据库中?
我可以做一些事情,比如制作一个云函数并在那里存储最新的值,然后从另一个云函数调用这个云函数来从中获取值吗?它会更便宜还是更贵?非常感谢!
解决方案
Cloud Function 是一种无服务器和无状态的服务。当一个实例被创建时,它会存在一段时间并且它已经停止。没有磁盘被挂载,所有工作都在内存中。这意味着您无法在其中持久保存任何价值。
无论如何,您有 3 个解决方案来减少读入数据存储的配置数量
- 即使您不能持久存储数据,您仍然可以将它们存储在内存中(高达 2Gb 的内存,包括您的应用程序足迹)。因此,您必须对 Datastore 执行第一个请求,然后,您可以将配置数据存储到定义为全局变量的映射中。因为 Cloud Functions 在您没有竞争条件的同时只能处理 1 个请求。(例如,这与 Cloud Run 不同)
- 如果您的配置不经常更改,您可以将其存储到文件中并存储到云存储中。在函数的开头加载文件(并像以前一样将其存储到全局变量中,只读取一次),然后执行搜索文件。仅当配置文件大小低于函数内存限制时,这才有效。
- 如果读取成本在每月 50 美元以上,您可以使用 Cloud SQL 数据库而不是 Datastore。
这对你有意义吗?
推荐阅读
- react-native - 我们可以在 wix RNN v2 中同时使用两种布局吗?
- python - 如何在 Eclipse 中同时使用 py2 和 py3 运行 python?
- php - Laravel 5.7 升级,Uncaught ReflectionException: Class cache does not exist Container.php:779
- python - 在python中将double转换为时间
- google-cloud-speech - 谷歌云语音非常不准确,并且在干净的音频上遗漏了单词
- javascript - 砌体js奇怪的行为
- python - 在 ubuntu18.04 中导入错误 tensorflow-gpu
- sql - 整数表示的 MSSQL Case 返回字符串
- pyomo - 将 Pyomo 数据命令文件直接加载到 Python 数据结构中
- java - 将浏览器时区传递给后端 springboot 应用程序以根据浏览器时区生成带有日期的报告