2

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

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

几个选项包括:

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

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

一些取舍:

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

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

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

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

谢谢你的时间!

4

2 回答 2

2

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

于 2009-09-29T21:29:31.167 回答
1

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

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

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

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

于 2009-09-30T11:50:13.740 回答