我有以下常见情况,我不确定哪种Google云端工具最适合。我是谷歌云的新手。
我有一个进程(收集器),它每隔N分钟从生产者收集数据并将其合并到数据库中。数据已发布,但在某种意义上是暂时的,如果收集器在几个时间段内没有收集它,则会丢失数据。收集器是一个全天候运行的后台进程,并具有用于诊断的终端日志记录接口。目前,收集器作为python脚本在服务器/ PC上运行,但我想将其移至云端。但是,我不确定是否需要将此脚本部署为Google App Engine上的Google应用程序或Container Engine上的docker容器,或者只是在计算引擎节点上运行它。
编辑:
我完成了我的研究,并在Google App Engine上部署了该脚本。但是,我的理解是,App Engine可能会运行应用程序的多个实例来扩展每次使用,它肯定已经这样做了。但是,如果我碰巧在笔记本电脑上启动了几个脚本实例,那么我最终不会在数据库中出现重复的条目。
答案 0 :(得分:1)
有很多方法可以给这只猫打铃。
使用kubenaties显然很容易,但是你不需要使用容器引擎(可能过于昂贵),只为此。
如果你有一个包含监听pub-sub的脚本的compute-instance,你可以通过创建instance template来水平扩展它。 并选择根据处理器使用情况自动扩展。
无论你选择这样做,记录的重复性都与发布者有关,而不是订阅者(你的python脚本)
我永远不会将appengine用于这样的任务,即使你很容易在GAE中做到这一点,人们应该尝试只在前端有点角色使用它恕我直言
答案 1 :(得分:0)
以GAE为导向的答案。
理论上,缺少重复的DB条目可能是由于:
您可以通过使用max_instances
配置设置为1的基本缩放来阻止多个GAE实例并行执行。来自Scaling types and instance classes:
基本缩放
具有基本缩放的服务将在创建实例时创建 应用程序收到请求。该实例将被拒绝 应用程序变得闲置。基本缩放是理想的工作 间歇性或由用户活动驱动。
和表格中的Scaling行:
缩放
通过设置最大值来配置具有基本缩放的服务 。的 max_instances 参数中的实例数 basic_scaling 设置。实时实例的数量与 处理量。