【问题标题】:Parallel Module Deployment using App Engine SDK使用 App Engine SDK 进行并行模块部署
【发布时间】:2015-01-11 19:33:35
【问题描述】:

TL;DR 有没有办法并行部署 App Engine 模块?

我使用 Google 的 App Engine SDK for Go 构建了一个 go 应用程序。此应用程序定义了多个modules。这些模块是自包含的,不需要跨其他模块的任何类型的依赖。

当我尝试 deploy the modules 到 Google Cloud 时,我不禁注意到模块是按顺序上传的。如果部署相对较快,这会很好,但是每个模块都需要它自己的 Go 二进制文件的冗余编译。因此,除了常规的上传时间之外,每次我想要部署时,我都必须等待我的应用编译 [模块计数] x [编译时间]。

明显(快速)的解决方案是并行部署,因此我创建了一个简单的 bash 脚本来独立部署每个模块。我立即使用这个“解决方案”遇到的问题是来自 App Engine API 的 HTTP 500 响应。跨越所有模块的整个伞式应用程序似乎在任何单个模块更新时都会“锁定”。这种情况会产生竞争条件,在这种情况下,只有第一个触发部署的模块成功,其他模块失败。

我担心这是 App Engine 中遗留语言的遗留问题。由于每个模块都使用相同的 Go 二进制文件,因此实际上不需要多次编译相同的代码。重复编译是多余的,没有办法绕过锁。

一种假设的解决方案,我只是模糊理解,是并行编译和串行部署。我想这种方法将涉及拆开the configuration tool 并对其进行重新设计以按照上述方式执行——尽管我不能肯定地说(目前)。

我们非常感激这里的任何帮助。谢谢!

【问题讨论】:

    标签: google-app-engine deployment go appcfg


    【解决方案1】:

    您可以部署到您的 App Engine 应用的另一个“版本”,然后在部署所有模块后,进行非常快速的版本切换?

    如果您需要/想要那种东西,版本还允许流量拆分。

    【讨论】:

      猜你喜欢
      • 2016-01-18
      • 2014-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-23
      • 1970-01-01
      • 1970-01-01
      • 2016-11-06
      相关资源
      最近更新 更多