我可以在同一个App Engine项目上同时拥有两个实例 - Java servlet和端点并排吗?

时间:2016-04-18 11:16:10

标签: google-app-engine servlets google-cloud-endpoints endpoints

我们在GAE上启动并运行Java servlet,使用blobstore,数据存储和其他云服务。

目前,我们正在开始迁移到云终端的过程,我们遇到了一个问题:如果我们使用不同的GAE项目,我们就无法查询当前的数据存储实体(最好的)据我所知,Google并不希望你这样做 - 请参阅 this questionGAE terms of service - 第3.3d节),所以我们需要为两者使用相同的项目。

我查看是否可以让一个运行Java servlet的GAE实例和一个运行Endpoints的实例,但我在任何地方都找不到确定的答案。

如果我们尝试实施并出现问题,我们会为用户查看潜在的主要问题,因此我们需要事先确定。

有没有人尝试过类似的东西,可以向我们保证这个有效吗?

1 个答案:

答案 0 :(得分:1)

您有2个选项可以在同一个应用程序中运行旧代码和新代码(因此没有问题共享对数据存储的访问权限),但作为单独的引擎实例,因此可以独立开发/部署/管理它们:

  • 作为相同应用/模块的different versions

    • 旧版本仍然是默认版本,在开发过程中可以在不同的URL访问新版本(可能通过URL路由)
    • 您可以使用traffic splitting对新代码进行实时A / B测试,并逐步进行最终迁移,直到您将新版本设为默认值
  • 作为相同应用的different modules

    • 两者可以无限期地并行运行(功能齐全),但在开发过程中需要更加小心
    • 流量routed to the modules有几种可能的方式
    • 最终迁移是通过发布新网址完成的,最终重定向旧网址并最终删除旧模块代码

如果需要,这两种方法甚至可以组合成OP在这个类似的问题中描述的最终解决方案(对于python环境,但存在java等价物):Google App Engine upgrading part by part