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

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

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

我的问题:

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


当前回答

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

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

其他回答

看看这个叫做EveryBlock的微型新闻聚合器。

它完全是用Django编写的。事实上,正是他们开发了Django框架本身。

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

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

平均分配任务,简而言之,优化每个方面,包括db,文件,图像,CSS等,并平衡其他资源的负载,一旦你的网站/应用程序开始增长是必要的。或者你给它更多的生长空间。大型网站必须采用CDN、Cloud等最新技术。仅仅开发和调整一个应用程序不会给你百分之百的满意度,其他组件也发挥着重要作用。

问题是不知道django是否可以伸缩。

正确的方法是理解和知道哪些网络设计模式和工具应该放在django/symfony/rails项目下,以实现良好的扩展性。

一些想法可以是:

多路复用。 反向代理。例如:Nginx,清漆 Memcache会话。例如:Redis 在项目和数据库上进行集群化,以实现负载平衡和容错:例如:Docker 使用第三方存储资产。例子:Amazon S3

希望它能有所帮助。这是我的小石头。

是的,它可以。它可以是Django with Python或Ruby on Rails。它仍然会缩放。

有几种不同的技术。首先,缓存不是可伸缩性。除了硬件平衡器之外,还可以有多个应用服务器以nginx作为前端平衡。 为了在数据库端扩展,如果你走RDBMS的路,你可以在MySQL / PostgreSQL中使用读从。

Django中一些大流量网站的例子如下:

当他们还在那里的时候。 通用共享评论管理器 所有与报纸相关的网站:《华盛顿邮报》等。

你会有安全感。