gpt4 book ai didi

google-app-engine - "default"提供的 App Engine 版本似乎不一致,并且在更改默认版本后会出现一段时间的抖动

转载 作者:太空宇宙 更新时间:2023-11-03 15:22:27 24 4
gpt4 key购买 nike

我们的应用程序提供一个端点,它只报告 os.environ['CURRENT_VERSION_ID']。我们将其用于一种监视类型,它跟踪当前设置为“默认版本”的版本。

从 3 月 5 日下午开始,我们注意到在向此端点发出请求时出现奇怪的行为。在我们更改默认版本后不久(通过“appcfg.py set_default_version”),对该端点的重复请求将在先前的默认值和新的默认值之间切换。这会持续大约 10 分钟,之后所有后续请求将始终报告新的、正确的默认版本。因此,似乎在这 10 分钟的窗口中,对我们正常的默认 URL 的请求将不一致地报告旧版本或新版本。

这似乎是行为的改变。我们的应用程序默认版本的先前更改发生在 3 月 1 日,并且该日期之前的所有其他版本更改都没有表现出这种翻转行为。

(从 my teammatebug report 窃取的问题)

最佳答案

首先介绍一下背景:

  • App Engine 在分布式基础架构中运行您的应用程序:您的应用程序接收到的流量越多,在任何给定时间运行您的代码的实例(应用程序服务器)就越多
  • 出于可扩展性/简单性和许多其他原因,App Engine 不实现客户端 <-> 应用服务器粘性;因此,对默认应用版本的任何请求都可以由任何应用服务器处理

更改应用程序的默认版本后,通过管理控制台更改标记为默认的版本,或部署与当前默认版本相同的主要版本,有关此更改的信息将通过 App Engine 传播基础设施。当应用服务器知道新版本时,他们开始加载新版本的应用程序代码。一旦给定的应用服务器准备就绪,它将开始为您的新版本代码提供服务。

在一段时间内,一些应用服务器将提供以前的默认版本,而其他应用服务器已经提供新的默认版本。因此,预计任何具有大量流量的应用都会看到您描述的行为。

我们一直在努力减少这些版本更改所花费的时间,但我们最关心的是确保过渡顺利进行。如果应用程序有大量实例服务于以前的版本,App Engine 需要确保始终有足够的容量(结合新旧应用程序服务器)来服务所有当前流量。应用程序的旧版本和新版本可能需要不同数量的应用程序服务器(由于版本之间的性能差异),这是无法“立即”安全执行转换的另一个原因。

如果您想更好地控制流程,可以使用 App Engine 的 Traffic Splitting特征。您可以逐步增加您希望引导至新版本的用户流量的百分比。然后,App Engine 将根据客户端 IP 地址或 cookie(对于网络应用程序)提供版本粘性。您还可以使用流量拆分在一定比例(比如 1%)的客户端上“金丝雀”应用程序的新版本。

关于google-app-engine - "default"提供的 App Engine 版本似乎不一致,并且在更改默认版本后会出现一段时间的抖动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15416938/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com