我正在构建一个 Lifestreaming 应用程序,该应用程序将涉及为大量用户提取大量提要,并对结果执行数据挖掘和机器学习算法。GAE 的负载平衡和可扩展托管听起来很适合最终可能会围绕大量数据移动的系统,但它缺少 cron 作业是一件麻烦事。在 co-loc 上使用 Django 并处理我自己的数据库扩展会更好吗?
7 回答
当他们提供付费计划时它可能会改变,但就目前而言,App Engine 不适合 CPU 密集型应用程序。它旨在扩展以处理大量请求,而不一定是每个请求的大量计算。我用相当小的计算遇到了这个问题,我担心随着数据集的增长,我可能不得不开始寻找其他地方。
虽然我无法直接回答您的问题,但我构建Microupdater(一个在 AppEngine 上收集数百个订阅源的新闻聚合器)的经验可能会给您一些见解。
获取提要。通过 cron 作业获取大量提要(这是 SDK 1.2.5 之前的唯一解决方案)效率不高且可扩展,作业频率的限制较低(例如 1 分钟,因此您每小时最多只能获取 60 个提要)。使用最新的 SDK 1.2.5,还有XMPP API,我还没有实现。最有前途的方法是PubSubHubbub,您提供一个回调 url,HubBub 会实时通知您新条目。AppEngine 上有一个演示实现,您可以尝试一下。
解析提要。您可能已经知道解析提要是 CPU 密集型的。我使用Mark Pilgrim 的Universal Feed Parser,在解析大型提要(例如公共 google 阅读器主题)时,AppEngine 可能无法处理所有条目。我的仪表板有很多这些 CPU 限制警告。但这可能会导致我无法优化代码。
总而言之,AppEngine 还不是生活流应用程序的理想平台,但未来可能会改变。
(这显然已经很老了,只是因为它在相关的谷歌查询中仍然很高......)
我刚开始使用 AppEngine 并没有将它用于大量的外部请求。但我确实知道上面的信息现在可能不那么有效了,甚至可能不再有效。自 9 月 8 日以来,他们大大放宽了限制 -查看 Aral Balkan 的博客,了解他对上述情况的最初抱怨以及后来的发展。
如果您的应用完全依赖于 Django,那么 App Engine 是一个不错的选择。但是,如果您需要添加 C 增强型库,那您就麻烦了。App Engine 不支持 PIL 或 ReportLab 之类的东西,它们使用 C 来加快处理时间。我之所以提到这一点,是因为从长远来看,您可能希望使用 C 来加速您的一些例程。
如果您决定使用 co-loc,请查看 WebFaction.com。他们有很好的 Django/Python 支持,并且他们对您使用上述库没有任何问题。
看看Slice Host:他们以每月 20.00 美元的价格出售基于 xen 的虚拟化服务器实例......
我们和你一样。厌倦了超卖、表现不佳、古老的托管公司。我们把事情掌握在自己手中。我们为了解自己的东西的人建立了一家托管公司。给我们一个盒子,给我们带宽,给我们性能,我们开始工作。快速机器、RAID-10 驱动器、Tier-1 带宽和 root 访问。使用定制的 Xen VPS 后端进行管理,以确保您的资源得到保护和保障。
它非常适合在不产生托管提供商或托管成本的情况下启动和扩展项目。
不。如果你需要做很多事情,App Engine 就不能很好地工作。您可以通过在进行离线预处理后将数据放入他们的存储中来将其用作前端,但是如果不做一些非常疯狂的事情,您将无法在每个请求的约 1 秒时间内做太多事情。
您的应用在您自己的主机上可能会更好。
提取提要或进行计算不会有问题。但是您很快就必须为您的帐户付款。应用引擎包括 Django,但您需要为模型部分使用一些适配器。它肯定会让您免于维护难题。