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响应。跨越所有模块的整个伞形应用程序似乎已经锁定了#34;每当更新任何单个模块时。此方案创建竞争条件,在该条件下,仅触发部署的第一个模块成功,而其他模块失败。
我担心这是App Engine中遗留语言的延续。由于每个模块使用相同的Go二进制文件,因此它不需要对同一代码进行多次编译。重复编译是多余的,并且无法绕过锁定。
一个假设的解决方案,我只是模糊地理解,是并行编译并串行部署。我想这种方法将涉及拆分the configuration tool并重新处理它以前述方式执行 - 尽管我无法肯定地说(还)。
这里的任何帮助都是非常有必要的。谢谢!
答案 0 :(得分:1)
您可以部署到另一个"版本"您的App Engine应用程序,然后在部署所有模块时,执行非常快速的版本切换?
如果您需要/想要那种东西,版本也允许分流。