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

Can I have two instances on same App Engine project - Java servlet and Endpoints side by side?

我们在 GAE 上有 Java 个 servlet 和 运行,使用 blobstore、datastore 和其他云服务。

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

我查了一下是否可以有一个 GAE 实例 运行 Java servlet 和一个实例 运行 端点,但我在任何地方都找不到结论性的答案。

如果我们尝试实施但出现问题,我们正在为我们的用户寻找一个潜在的重大问题,因此我们需要事先确定。

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

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

  • different versions 相同 app/module(s):

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

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

如果需要,这两种方法甚至可以结合使用,作为 OP 在这个类似问题中描述的最终解决方案(对于 python 环境,但存在 java 等价物):