【问题标题】:GCP cloud run send a request to all running instancesGCP 云运行向所有正在运行的实例发送请求
【发布时间】:2021-08-15 07:34:57
【问题描述】:

我有一个在云运行上运行的实现缓存的 REST API,当我更新数据库中的某个属性时,可能需要每周清除一次缓存。有没有办法向我的应用程序的所有正在运行的实例发送 HTTP 请求?现在我的理解是,即使我发送多个请求并且有 5 个实例,它也可以全部转到一个实例。那么有没有办法做到这一点?

【问题讨论】:

    标签: google-cloud-platform google-cloud-functions google-cloud-run


    【解决方案1】:

    让我们回到基础:

    Cloud Run 实例基于修订/图像启动。

    如果您有上述用例,假设您有 5 个实例正在运行并且您突然需要重新启动它们,因为重新启动实例可以解决您的用例,例如清除/重建缓存,您需要做的是:

    触发服务/配置中的更改,因此获得新修订 已创建。

    这将自动替换,因此会立即停止并重新启动您的所有实例。

    这里有几个选项,选择适合你的:

    1. 如果您将服务定义为 yaml 文件,最简单的方法是运行 replace service 命令:

      gcloud beta run services replace myservice.yaml

    2. 否则添加一个Environmental 变量,如您增加的date,这将产生一个新修订版(因为Env 中的更改意味着新配置,新修订版)read more

      gcloud run services update SERVICE --update-env-vars KEY1=VALUE1,KEY2=VALUE2

    在执行这些操作时,您将看到创建了一个新修订版,并且您的活动实例将在下一次请求时被新的实例替换,这些实例将构建新的缓存。

    【讨论】:

      【解决方案2】:

      您无法直接访问所有活动实例,这是无服务器的魔力(也是权衡):您真的不知道正在运行什么!如果您在 Cloud Run 上实现缓存,则需要一种方法来使其无效。

      • 基于持续时间;过期后刷新
      • 或通过失效。 但您不能使用 Cloud Run。

      查看此用例的另一种方式是,您在所有实例之间共享一个缓存,因此您需要一个共享缓存,例如memory store。您只能拥有 1 个 Cloud Run 实例,使其无效并重新创建它,并且所有其他实例都将使用它。

      【讨论】:

        猜你喜欢
        • 2020-09-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-05-03
        • 2014-07-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多