【问题标题】:Google App Engine, Two apps running from same datastoreGoogle App Engine,两个应用程序从同一个数据存储区运行
【发布时间】:2017-03-02 22:24:47
【问题描述】:

我有一个带有 GWT 2.6.1 的 Google App Engine 系统。系统设计要求如下:

  1. 服务器组件的单个实例,其任务只是 从外部数据馈送更新数据存储。可扩展性 这种情况肯定是不可取的。
  2. 使用相同数据存储为客户端提供服务的 Web 应用程序。这必须是可扩展的设计。

我有两个组件分别开发和运行,具有正确的实例配置等。
我的问题很简单:如何配置 2 个服务器应用程序以使用相同的数据存储?

提前致谢。

【问题讨论】:

    标签: google-app-engine google-cloud-datastore


    【解决方案1】:

    恕我直言,最简单(从性能角度来看可能更好)是将 2 个服务器实现为 相同 GAE 应用程序的 2 个独立服务/模块,完全共享数据存储。见Service isolation

    但是,如果您还想拥有完整的数据隔离,您可以拥有 2 个单独的 GAE 应用程序并配置其中一个以允许访问另一个(甚至任何其他应用程序,甚至在 Google 托管网络之外),请参阅How do I use Google datastore for my web app which is NOT hosted in google app engine?

    【讨论】:

    • 谢谢 Dan,我会在下班后尝试这个解决方案并报告我的发现。
    • 好的,丹,这个解决方案效果很好。在本地,我必须物理复制 local_db.bin 文件(似乎没有等效于 yaml --datastore_path 的 Java 选项)。在云中,它使用在 appengine-web.xml 中声明的相同应用名称和不同服务。伟大的。谢谢...
    • 标准还是弹性环境?
    • 标准环境。
    • 最终使用 -Ddatastore.backing_store=path/to/local_db.bin 进行本地测试。像魅力一样工作。
    【解决方案2】:

    最简单且可行的解决方案是创建单个服务的 2 个版本,因为它们将共享同一个数据存储区 memcache。

    因此,您将两个组件部署在具有不同版本的同一服务中以共享相同的数据存储实体。

    【讨论】:

    • 版本控制是为了方便开发周期。使用它们的方式(以及许多其他类似的 SO 答案,我知道)建议有效地注销对这些“应用程序”进行版本控制的能力。并且在部署期间会出现(可能延长的)中断,请参阅stackoverflow.com/questions/40192557/…
    • 版本控制在部署期间不会延长中断,它是运行多个版本的应用程序的最佳方式,您可以通过拆分流量轻松对其执行 A/B 测试,多个版本的服务使用相同共享资源
    • 是的,但如果您使用这些版本来实现应该独立运行的不同“应用程序”,则不是。每当您想要更新其中一个应用程序时,您都必须覆盖相同版本 - 您用于实现该特定应用程序的版本。
    • 谢谢 Risen 和 Dan。有趣的点。实际上,我们正在讨论具有 2 个 appengine-web.xml 配置的两个独立项目。每个都有相同的应用程序 ID,但每个版本都有不同的版本。
      我将不得不在云中尝试这个并回复你们。我还需要通过服务调查 Dan 的以下解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-16
    • 2013-12-03
    相关资源
    最近更新 更多