我正在使用Django构建Web应用程序。 我选择Django的原因是:
- 我想使用免费/开源工具。
- 我喜欢Python,并认为它是一种长期的语言,而对于Ruby,我不确定,PHP似乎是一个学习上的麻烦。
- 我正在为一个想法构建原型,并且对未来没有太多考虑。 开发速度是主要因素,我已经了解Python。
- 我知道,如果将来我选择迁移到Google App Engine,将会更容易。
- 我听说Django很“不错”。
现在,我开始考虑发布作品了,我开始担心规模。 我发现的有关Django扩展功能的唯一信息是Django团队提供的(我并不是说要忽略它们,但这显然不是客观信息...)。
我的问题:
- 今天在Django上构建的“最大”网站是什么? (我主要通过用户流量来衡量规模)
- Django可以每天处理100,000个用户 ,每个用户访问几个小时吗?
- 像Stack Overflow这样的网站可以在Django上运行吗?
#1楼
如果您的网站上有一些静态内容,那么将Varnish服务器放在最前面将大大提高性能。 即使是一个盒子,也可以轻松吐出100 Mbit / s的流量。
请注意,对于动态内容,使用Varnish之类的东西会变得更加棘手。
#2楼
我已经使用Django一年多了,它对组合模块化,可扩展性和开发速度的管理方式印象深刻。 像任何技术一样,它也带有学习曲线。 但是,Django社区提供的出色文档使学习曲线的难度大大降低。 Django能够很好地处理我提出的所有问题。 看起来它将能够很好地扩展到未来。
BidRodeo Penny Auctions是一个中等规模的Django支持的网站。 这是一个非常动态的网站,每天确实处理大量的网页浏览。
#3楼
今天在Django上构建的“最大”网站是什么? (我主要通过用户流量来衡量规模)
在美国,是玛哈洛(Mahalo) 。 有人告诉我他们每个月处理大约1000万个唯一身份。 现在,在2019年,Mahalo由Ruby on Rails提供支持。
国外, Globo网络(巴西新闻,体育和娱乐网站的网络); Alexa将其排在全球前100名(目前排名第80位)。
其他著名的Django用户包括PBS,国家地理,探索,NASA(实际上是NASA内的许多不同部门)和国会图书馆。
Django每天可以处理10万个用户,每个用户访问该网站几个小时吗?
是的-但前提是您正确编写了应用程序,并且拥有足够的硬件。 Django不是万能的子弹。
像StackOverflow这样的网站可以在Django上运行吗?
是的(但见上文)。
从技术角度出发 ,轻而易举:尝试一下soclone 。 在流量方面,每月以不超过一百万的唯一身份竞争钉住StackOverflow。 我可以命名至少十个Django网站,其流量比SO多。
#4楼
以下是Django中一些比较引人注目的内容的列表:
监护人的“ 调查议员的费用 ”应用程序
Politifact.com(这是一篇有关(正面)体验的博客文章 。该网站赢得了普利策奖)。
纽约时报的代表应用
WaPo的一名程序员Peter Harkins在他的博客中列出了他们用Django构建的所有内容
它有些旧,但是《洛杉矶时报》的某人对他们为什么选择Django 进行了基本概述 。
洋葱的AV俱乐部最近从(我认为Drupal)转移到了Django。
我想象这些网站中的许多网站每天的点击量可能超过10万次。 Django当然可以每天点击10万次甚至更多。 但是YMMV会根据您所构建的内容将您的特定网站放到那里。
在Django级别上,有一些缓存选项(例如,在memcached中缓存查询集和视图可以解决奇迹)以及其他方面(如Squid之类的上游缓存)。 数据库服务器规范也将是一个因素(通常是挥霍的地方),以及您对其进行的优化程度。 例如,不要以为Django会正确设置索引。 不要以为默认的PostgreSQL或MySQL配置是正确的配置。
此外,如果这是很慢的话,您总是可以选择让多个应用程序服务器运行Django,并在其前面安装软件或硬件负载平衡器。
最后,您是否要在与Django相同的服务器上提供静态内容? 您使用的是Apache还是nginx或lighttpd之类的东西? 您能负担得起将CDN用于静态内容吗? 这些都是要考虑的事情,但这都是非常投机的。 每天10万次点击不是唯一的变量:您要花费多少? 您拥有多少专业知识来管理所有这些组件? 您需要花费多少时间将它们整合在一起?
#5楼
查看这个名为EveryBlock的微型新闻聚合器 。
它完全用Django编写。 实际上,他们是开发Django框架本身的人。
#6楼
YouTube的开发者拥护者在PyCon 2012上发表了有关缩放Python的话题 ,这也与缩放Django有关。
YouTube拥有超过十亿的用户 ,并且YouTube基于Python构建。
#7楼
我使用Django为爱尔兰的国家广播公司开发高流量站点。 它对我们很好。 开发高性能站点不仅仅只是选择一个框架。 框架将只是与最弱的链接一样强大的系统的一部分。 如果问题是数据库查询速度慢或服务器或网络配置错误,则使用最新的框架“ X”不能解决您的性能问题。
#8楼
问题不在于django是否可以扩展。
正确的方法是了解并了解在django / symfony / rails项目下可以很好地扩展的网络设计模式和工具。
一些想法可以是:
- 多路复用。
- 反向代理。 例如:Nginx,光油
- Memcache会话。 例如:Redis
- 在项目和数据库上进行集群化以实现负载平衡和容错:例如:Docker
- 使用第三方存储资产。 例如:Amazon S3
希望对您有所帮助。 这是我到山上的小石头。
#9楼
我不认为问题确实与Django缩放有关。
我真的建议您研究一下可以帮助您满足扩展需求的体系结构,如果您出错了,那么Django的性能将毫无意义。 性能!=规模。 您可以拥有一个性能惊人但不能扩展的系统,反之亦然。
您的应用程序数据库绑定了吗? 如果是这样,那么您的规模问题也就在那里。 您如何计划与Django中的数据库进行交互? 当您的数据库无法以Django接受请求的速度处理请求时,会发生什么情况? 当数据超过一台物理计算机时,会发生什么。 您需要考虑如何计划应对这些情况。
此外,当您的流量超过一台应用服务器时会发生什么? 在这种情况下,如何处理会话可能会很棘手,通常您可能需要无共享架构。 同样,这取决于您的应用程序。
简而言之, 语言不是决定规模的因素,语言是决定性能的因素(再次取决于您的应用程序,不同的语言表现不同)。 是您的设计和体系结构使扩展成为现实。
希望对您有所帮助,如果您有任何疑问,将很乐意为您提供进一步的帮助。
#10楼
不确定每天的访问次数,但以下是一些大型Django网站的示例:
- disqus.com ( djangocon的讲话 )
- bitbucket.org ( 写 )
- lanyrd.com ( 来源 )
- support.mozilla.com ( 源代码 )
- addons.mozilla.org ( 源代码 )( djangocon的讲话 )
- theonion.com ( 写 )
- guardian.co.uk注释系统使用Django( 源代码 )
- 迪奥
这是Quora上高流量Django站点列表的链接。
#11楼
如高性能Django书中所述,并通过本Cal Henderson
请参阅下面提到的更多详细信息:
听到人们说“ Django无法扩展”的情况并不少见。 根据您的看法,该陈述是完全正确的,也可能是完全错误的。 Django本身无法扩展。
Ruby on Rails,Flask,PHP或数据库驱动的动态网站使用的任何其他语言也可以这样说。
不过,好消息是Django与一套缓存和负载平衡工具进行了精美的交互,这使它可以扩展到可以提供的最大流量。
与您在网上阅读的内容相反,它可以这样做,而无需替换通常标为“过慢”的核心组件,例如数据库ORM或模板层。
Disqus每月提供超过80亿的页面浏览量。 那些数字很大。
这些团队已经证明Django确实可以扩展。 我们在林肯环路的经验对此提供了支持。
我们已经建立了大型的Django网站,这些网站可以在Reddit主页上度过一天而又不费吹灰之力。
到目前为止,Django的扩展成功案例几乎不胜枚举。
它支持Disqus,Instagram和Pinterest。 需要更多证据吗? Instagram仅3位工程师(其中2位没有后端开发)就能在Django上维持超过3000万用户
#12楼
如果您想使用开源,那么有很多选择。 但是python是其中最好的,因为它有许多库和一个超棒的社区。 这些是可能会改变您想法的一些原因:
Python非常好,但是它是一种解释型语言,因此速度很慢。 但是有许多加速器和缓存服务可以部分解决此问题。
如果您正在考虑快速发展,那么Ruby on Rails是最好的选择。 此(ROR)框架的主要座右铭是为开发人员提供舒适的体验。 如果您比较一下,Ruby和Python的语法几乎相同。
Google App Engine是一项非常好的服务,但是它将在您的范围内束缚您,您没有机会尝试新事物。 取而代之的是,您可以使用Digital Ocean云,因为它最简单的液滴仅需每月支付5美元 。 Heroku是另一项免费服务,您可以在其中部署产品。
是! 是! 您所听到的是完全正确的,但这是一些使用其他技术的示例
- Rails:Github,Twitter(以前),Shopify,Airbnb,Slideshare,Heroku等
- PHP:Facebook,Wikipedia,Flickr,Yahoo,Tumbler,Mailchimp等。
结论是一种框架或语言无法为您做任何事情。 更好的架构,设计和策略将为您提供可扩展的网站。 Instagram是最大的例子,这个小团队正在管理如此庞大的数据。 这是一个有关其架构必须阅读的博客 。
#13楼
尽管这里有很多不错的答案,但我只是想指出一点,没有人强调。
取决于应用
如果您的应用程序写时很少,那么从DB中读取的数据要比编写的要多得多。 然后缩放django应该相当简单,哎呀,它带有一些相当不错的输出/视图缓存,可以直接使用。 充分利用这一点,例如说redis作为缓存提供者,在它前面放置一个负载均衡器,启动n个实例,您应该能够处理非常大的流量。
现在,如果您必须每秒进行数千次复杂的写操作? 不同的故事。 Django将是一个错误的选择吗? 好吧,不一定要取决于您如何真正设计解决方案,以及您的要求是什么。
只是我的两分钱:-)
#14楼
今天,我们使用许多Web应用程序和网站来满足我们的需求。 它们中的大多数非常有用。 我将向您展示python或django使用的其中一些。
《华盛顿邮报》的网站是伴随他们的每日报纸而广为流行的在线新闻来源。 Django Web框架可以轻松地处理其大量的视图和流量。 Washington Post - 52.2 million unique visitors (March, 2015)
国家航空航天局的官方网站是查找有关其正在进行的太空探索的新闻,图片和视频的地方。 这个Django网站可以轻松处理大量的视图和流量。 2 million visitors monthly
《卫报》是英国《卫报》媒体集团所有的新闻和媒体网站。 它几乎包含了《卫报》和《观察家》报纸的所有内容。 这些巨大的数据由Django处理。 The Guardian (commenting system) - 41,6 million unique visitors (October, 2014)
我们都知道YouTube是上传猫视频的地方,但失败了。 作为现有的最受欢迎的网站之一,它为我们提供了无尽的视频娱乐时间。 Python编程语言为其提供了强大支持,并为我们所喜爱的功能提供了支持。
DropBox引发了在线文档存储革命,这已成为日常生活的一部分。 现在,我们几乎将所有内容都存储在云中。 Dropbox使我们能够使用Python的功能存储,同步和共享几乎所有内容。
Survey Monkey是最大的在线调查公司。 他们每天可以在重写的Python网站上处理超过一百万个响应。
Quora是在线提问和接收社区答案的第一人。 这些社区成员在他们的Python网站上回答,编辑和组织了相关结果。
Bitly URL缩短服务和分析的大多数代码都是使用Python构建的。 他们的服务每天可以处理数亿个事件。
Reddit被称为互联网的首页。 这是一个在线查找基于数千种不同类别的信息或娱乐的地方。 帖子和链接由用户生成,并通过投票提升到顶部。 Reddit的许多功能都依靠Python来实现。
Hipmunk是一个在线消费者旅游网站,它比较热门旅游网站以找到最优惠的价格。 这个Python网站的工具可让您找到目的地的最便宜的酒店和机票。
单击此处以了解更多: 25个最受欢迎的python和django网站 , 什么是在Django上运行的知名站点
#15楼
今天在Django上构建的“最大”网站是什么? (我衡量大多是由用户流量的大小), Pinterest的
disqus.com
此处更多内容: https : //www.shuup.com/zh-CN/blog/25-of-the-most-popular-python-and-django-websites/
Django是否可以每天处理100,000个用户,每个用户访问几个小时?
是的,但是使用适当的体系结构,数据库设计,缓存,负载平衡以及多个服务器或节点
像Stack Overflow这样的网站可以在Django上运行吗?
是的,只需要按照第二个问题中提到的答案
#16楼
一旦您的站点/应用程序开始增长,就必须平均地分散任务,简而言之,优化各个方面,包括数据库,文件,图像,CSS等,并平衡负载与其他多种资源。 或者,您为其腾出更多空间。 大型站点必须实施CDN,云等最新技术。 仅仅开发和调整应用程序并不能使您满意,其他组件也起着重要的作用。
#17楼
我认为我们不妨将2011年苹果年度最佳应用程序Instagram(Instagram )添加到大量使用django的列表中。
#18楼
我对Django的经验很少,但我确实记得《 Django书》中有一章,他们采访了运行某些较大Django应用程序的人员。 这是一个链接。 我想它可以提供一些见解。
它说curse.com是最大的Django应用程序之一,每月浏览量约为60-9000万。
#19楼
我知道的最大的django网站是《 华盛顿邮报》 ,这肯定表明它可以很好地扩展。
好的设计决策可能会对性能产生更大的影响。 Twitter通常被认为是一个网站,它通过另一个基于动态解释语言的Web框架Ruby on Rails来体现性能问题-但Twitter工程师表示,该框架并没有像他们早先做出的某些数据库设计选择那样重要上。
Django与memcached配合得很好,并提供了一些用于管理缓存的类,您可以在其中解决大部分性能问题。 在线交付的内容实际上比后端要重要的多-使用yslow之类的工具对于高性能Web应用程序至关重要。 您始终可以在后端投入更多的硬件,但不能更改用户带宽。
#20楼
我确定您正在寻找一个更可靠的答案,但是我能想到的最明显的客观验证是Google推动Django与它的App Engine框架一起使用。 如果有人定期了解并处理可扩展性,那就是Google。 根据我的阅读,最大的限制因素似乎是数据库后端,这就是Google使用自己的数据库的原因...
#21楼
是的,它可以。 可以是带Python的Django或Ruby on Rails。 它仍然会扩展。
有几种不同的技术。 首先,缓存无法扩展。 除了硬件平衡器之外,您还可以将几台应用程序服务器与nginx进行平衡。 为了扩展数据库方面,如果您采用RDBMS方式,则可以在MySQL / PostgreSQL中使用读取从属进行相当大的扩展。
Django中的高流量网站的一些很好的例子可能是:
- 当他们还在那儿的时候就穿衣服 。
- 铁饼(通用共享评论管理器)
- 所有与报纸相关的网站:《华盛顿邮报》等。
您可以放心。
#22楼
请注意,如果您希望每天有10万名用户,并且一次处于活动状态数小时(这意味着最多有2万名并发用户),那么您将需要大量服务器。 SO拥有约15,000个注册用户,其中大多数人可能每天都不活跃。 尽管大部分流量来自未注册的用户,但我猜想他们中很少有人会停留在网站上超过几分钟(即,他们遵循Google搜索结果然后离开)。
对于该数量,预计至少要有30台服务器……每台服务器仍然有1000个并发用户。
#23楼
我上周参加了EuroDjangoCon会议,这是几场讲座的主题-包括最大的基于Django的网站Pownce的创建者( 这里的一个演讲的幻灯片)。 主要信息是您不必担心Django,而是诸如适当的缓存,负载平衡,数据库优化等。
Django实际上对大多数这些东西都有钩子-特别是缓存非常容易。
#24楼
扮演恶魔的拥护者:
您应该查看Cal Henderson提供的DjangoCon 2008主题演讲 ,题目为“为什么我讨厌Django”,其中他几乎涵盖了您可能想要在高流量网站中执行的Django缺少的所有事项。 在这一天结束时,你有,因为它是完全可以编写Django的应用包含的规模借此所有以开放的心态,但我认为这是一个很好的介绍和有关你的问题。
#25楼
“当今在Django上最大的网站是什么?”
没有一个地方可以收集有关Django建站流量的信息,所以我不得不使用来自各个位置的数据来刺探它。 首先, 在Django项目主页的首页上有Django站点列表,然后在djangosites.org上有Django构建的站点列表。 浏览列表并挑选一些我知道流量不错的网站,我们看到:
Pinterest :2013年Alexa排名37(21.4.2015)和7000万用户
Disqus : 用Python为4亿人服务 。
tabblo.com : 每天访问量为44k ,请参见Ned Batchelder的帖子现代网站的基础结构 。
chesspark.com : Alexa的约179K排名。
pownce.com (不再活动): alexa排名约65k。 Pownce的Mike Malone在EuroDjangoCon上关于缩放Django Web Apps的演讲中说:“每秒数百次点击”。 这是有关如何扩展Django的很好的演示,并提出了一些优点,包括Django可扩展性的(当前)缺点。
惠普有一个使用Django 1.5: ePrint center构建的网站。 但是,对于novemer / 2015,整个网站已迁移,此链接只是重定向。 该网站是一项全球性服务,正在订阅HP提供的Instant Ink和相关服务(*)。
“ Django每天可以处理100,000个用户,每个用户访问网站几个小时吗?”
是的,请参见上文。
“像Stack Overflow这样的网站可以在Django上运行吗?”
我的直觉是肯定的,但是正如其他人回答并且Mike Malone在演讲中提到的那样,数据库设计至关重要。 如果我们可以找到任何可靠的流量统计信息,也可以在www.cnprog.com上找到有力的证明。 无论如何,将一堆Django模型放在一起不仅仅是发生的事情:)
当然,还有更多感兴趣的网站和博客作者,但是我必须在某个地方停下来!
关于使用Django构建高流量网站michaelmoore.com的博客文章, 被描述为前10,000个网站 。 Quantcast统计信息和Competition.com统计数据 。
(*)编辑的作者,包括此类参考文献,曾在该项目中担任外包开发人员。
#26楼
我们正在进行负载测试。 我们认为我们可以支持240个并发请求(持续24x7的每秒120次命中),而服务器性能没有任何显着降低。 那将是每小时432,000次点击。 响应时间并不短(我们的交易量很大),但是随着负载的增加,我们的基准性能不会降低。
我们正在使用Apache前端Django和MySQL。 操作系统是Red Hat Enterprise Linux(RHEL)。 64位。 对于Django,我们在守护程序模式下使用mod_wsgi。 除了接受默认值外,我们没有进行任何缓存或数据库优化。
我们全都位于具有(我认为)32Gb RAM的64位Dell上的一个VM中。
由于20个或200个并发用户的性能几乎相同,因此我们不需要花费大量时间“调整”。 相反,我们只需要通过常规SSL性能改进,常规数据库设计和实现(索引等),常规防火墙性能改进等来保持基本性能。
我们要衡量的是我们的负载测试笔记本电脑在15个运行16个请求并发线程的进程的疯狂工作量下苦苦挣扎。
#27楼
另一个示例是rasp.yandex.ru,俄罗斯的运输时间表服务。 出席人数可以满足您的要求。
#28楼
扩展Web应用程序与Web框架或语言无关,而与您的体系结构有关。 它涉及到如何处理浏览器缓存,数据库缓存,如何使用非标准持久性提供程序(例如CouchDB ),数据库的调整方式以及许多其他内容。
#29楼
您绝对可以在Django中运行高流量站点。 在Django 1.0之前的版本中查看该版本,但仍在此处相关: http : //menendez.com/blog/launching-high-performance-django-site/