我正在用Django构建一个web应用程序。我选择Django的原因是:

我想使用免费/开源工具。 我喜欢Python,觉得它是一种长期的语言,而对于Ruby,我不确定,而PHP似乎是一个巨大的麻烦。 我正在为一个想法构建一个原型,并没有过多地考虑未来。开发速度是主要因素,而且我已经了解Python。 我知道迁移到谷歌应用程序引擎将更容易,如果我选择这样做在未来。 我听说Django很“不错”。

现在我越来越接近于考虑出版我的作品,我开始担心规模问题。我找到的关于Django伸缩能力的唯一信息是Django团队提供的(我不是说什么要忽略它们,但这显然不是客观的信息…)

我的问题:

目前在Django上构建的“最大”站点是什么?(我主要通过用户流量来衡量规模) Django能每天处理10万名用户,每个用户访问站点几个小时吗? 像Stack Overflow这样的站点可以在Django上运行吗?


当前回答

我认为问题并不在于Django的伸缩性。

我真的建议你研究一下你的架构,这将有助于你的扩展需求。如果你弄错了,Django的性能就没有意义了。性能=规模。你可以拥有一个具有惊人性能但无法扩展的系统,反之亦然。

您的应用程序是否绑定了数据库?如果是,那么你的规模问题也存在。你打算如何与Django中的数据库交互?如果数据库处理请求的速度不及Django接收请求的速度,会发生什么?当您的数据超出一台物理机器时会发生什么。你需要考虑如何应对这些情况。

此外,当你的流量超过一个应用服务器时会发生什么?在这种情况下,如何处理会话是很棘手的,通常情况下,您可能需要一个共享的“无”架构。这取决于你的应用。

简而言之,决定规模的不是语言,而是语言的性能(同样取决于您的应用程序,不同的语言表现不同)。正是您的设计和架构使扩展成为现实。

我希望它能有所帮助,如果你有问题,我很高兴能进一步帮助你。

其他回答

请注意,如果您希望每天有10万用户,并且一次活跃数小时(意味着最多有2万+并发用户),那么您将需要大量的服务器。SO有大约1.5万名注册用户,其中大多数人可能不是每天都活跃。虽然大部分流量来自未注册用户,但我猜他们中很少有人在网站上停留超过几分钟(即他们关注谷歌搜索结果后离开)。

对于这样的容量,预计至少需要30台服务器……这仍然是相当沉重的,每台服务器有1000个并发用户。

我有点唱反调:

你应该看看calhenderson在Django con 2008的主题演讲,标题是“为什么我讨厌Django”,他在演讲中详细介绍了Django在高流量网站中所缺少的所有功能。最后,你必须以开放的心态看待这一切,因为编写可伸缩的Django应用程序是完全可能的,但我认为这是一个很好的演示,与你的问题相关。

我已经使用Django一年多了,它是如何将模块化、可伸缩性和开发速度结合在一起的,这让我印象深刻。与任何技术一样,它也有一个学习曲线。然而,Django社区提供的优秀文档使这条学习曲线变得不那么陡峭。Django能够很好地处理我交给它的所有事情。看起来它将能够很好地扩展到未来。

BidRodeo Penny Auctions是一个中等大小的Django支持的网站。这是一个非常有活力的网站,每天的访问量也不错。

你完全可以用Django运行一个高流量的站点。看看这篇在django 1.0之前但仍然相关的文章:http://menendez.com/blog/launching-high-performance-django-site/

我使用Django的经验很少,但我记得在Django书中有一章他们采访了运行一些大型Django应用程序的人。这里有一个链接。我想这能提供一些启示。

它说curse.com是最大的Django应用程序之一,每月有6000万到9000万的页面浏览量。