GCP 云 运行 向所有 运行ning 实例发送请求

GCP cloud run send a request to all running instances

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

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

  • 或者基于持续时间;过期了,刷新一下
  • 或者通过失效。 但是你不能在云端 运行.

查看此用例的另一种方式是您有一个在所有实例之间共享的缓存,因此您需要一个共享缓存,类似于 memory store。您只能有 1 个 Cloud 运行 实例,它会使它失效并重新创建它,所有其他实例都将使用它。

让我们回到基础:

Cloud Run instances start based on a revision/image.

如果您有上述用例,假设您有 5 个实例 运行ning,您突然需要重新启动它们,因为重新启动实例可以解决您的用例,例如 clearing/rebuilding缓存,你需要做的是:

Trigger a change in the service/config, so a new revision gets created.

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

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

  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

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