【问题标题】:How to best deploy a single Google App Engine application to multiple region-specific subdomains?如何最好地将单个 Google App Engine 应用程序部署到多个特定于区域的子域?
【发布时间】:2009-09-29 17:01:58
【问题描述】:

我正在尝试找出跨多个区域部署单个 Google App Engine 应用程序的最佳方式。

将使用相同的代码,但存储的数据特定于每个区域。鼓舞人心的例子是超本地化的评论网站,如 yelp.com 或 urbanspoon,其中餐馆和其他要评论的企业是特定于某个地区的(例如 boston.app.com、seatle.app.com)。

几个选项包括:

  1. 创建多个 GAE 应用程序, 并在它们之间复制代码。

  2. 创建单个 GAE 应用程序,并存储所有区域的所有数据 在同一个数据存储中,具有一个区域 每个模型的标识符字段 划定相关区域。

一些取舍:

  1. 选项 2 似乎效率越来越低(空间:为每个模型的每个记录复制一个区域标识符;时间:对每个查询的标识符进行过滤/索引)。

  2. 选项 1 要求每个区域都有一个应用 ID,而 GAE 只允许每个帐户 10 个应用。此外,在每个区域部署代码以及数据存储迁移,似乎都很难管理。

在理想的世界中,我应该只有一个应用程序实例。从那个实例开始,我可以在子域之间进行路由(例如here),并为每个子域设置一个单独的数据存储区。但我相信 GAE 只允许每个应用程序使用一个数据存储。

是否有人对解决此问题的最佳方法有想法?或者我没有考虑的选项?

感谢您的宝贵时间!

【问题讨论】:

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


    【解决方案1】:

    我会推荐您的方法 #2。与大多数数据库不同,存储空间很便宜(并且区域代码很短),并且数据存储性能不会随着大小而降低。使用单个应用程序还可以更轻松地管理和升级,并避免 TOS 的任何问题(禁止对您的应用程序进行分片以避免计费)。

    【讨论】:

    • 谢谢尼克。我什至没有考虑分片问题。我采用了方法#2,到目前为止效果很好。
    【解决方案2】:

    如果您使用源代码修订控制,那么将相同的代码推送到多个应用程序中也不错。您可以设置一个策略,只允许将成熟的标签推送到 GAE。另一种选择是使您的应用程序版本与修订号相同。

    使用 App Engine,我(我相信大多数其他人)总是从我的模型代码中迁移数据。您无法在 GAE 中轻松进行批量迁移,通常的解决方案是在代码中遇到数据时迁移数据。通过这种方式,您可以使您的模型在各个应用程序中几乎完全相同。

    话虽如此,我可能仍会使用统一的应用程序。它更具前瞻性。如果用户想要加入他们的洛杉矶身份和纽约身份怎么办?或者,如果广告商为您提供了一笔不错的交易,让您根据自己的数据生成一些营销报告?

    最后,几个字节的数据在 App Engine 上并不重要。随着您网站的发展,您会非常很快发现自己总是会碰到天花板。与传统的 Web 服务器相比,GAE 限制非常小,因此无论如何您都必须在这些限制范围内工作。例如,您一次只能获取 1,000 条记录。因此,您的架构已经支持零碎的分页解决方案。所以不要太担心记录中的一两个额外字段。

    【讨论】:

    • 我同意 - 在仔细考虑并阅读上面尼克的回答之后,似乎#2 是一个更好的解决方案。您关于跨地区身份的观点也是一个重要因素。
    猜你喜欢
    • 2012-05-09
    • 2016-10-17
    • 1970-01-01
    • 2014-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多