【问题标题】:Can I have two instances on same App Engine project - Java servlet and Endpoints side by side?我可以在同一个 App Engine 项目上有两个实例 - Java servlet 和 Endpoints 并排吗?
【发布时间】:2016-08-10 02:21:49
【问题描述】:

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

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

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

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

有没有人尝试过类似的方法,并且可以向我们保证这是可行的?

【问题讨论】:

  • 我不清楚你在问什么。您可以将多个域转发到单个应用引擎应用吗?你当然可以。您可以将相同的域名转发到两个不同的应用程序吗?不,但这完全独立于应用引擎。您可以在同一个应用程序中拥有 servlet 和端点(实际上端点也是 servlet),并且您可以将它们分隔在模块中。
  • 你说得对,我指的是 GAE 项目,而不是域。编辑我的问题以澄清。

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


【解决方案1】:

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

  • 作为同一应用程序/模块的different versions

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

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

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

【讨论】:

    猜你喜欢
    • 2012-09-05
    • 1970-01-01
    • 1970-01-01
    • 2016-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多