首页 文章

Django会扩展吗? [关闭]

提问于
浏览
960

我正在使用 Django 构建一个Web应用程序 . 我选择 Django 的原因是:

  • 我想使用免费/开源工具 .

  • 我喜欢 Python 并觉得它是 long-term 语言,而关于 Ruby 我不确定, PHP 似乎是一个很难学的麻烦 .

  • 我对未来的思考太多了 . 发展速度是主要因素,我已经知道 Python .

  • 我知道如果我将来选择迁移到 Google App Engine 会更容易 .

  • 我听说 Django 是"nice" .

现在我正在考虑发表我的作品,我开始关注规模 . 我发现的关于 Django 扩展能力的唯一信息是由 Django 团队提供的(我没有说什么可以忽视它们,但这显然不是客观信息......) .

My questions:

  • 今天在 Django 上 Build 了什么's the 99572 site that'? (我主要通过用户流量测量大小)

  • Django 每天可以处理100,000个用户,每个用户访问该网站几个小时?

  • StackOverflow 这样的网站可以在Django上运行吗?

29 回答

  • 14

    扩展Web应用程序与Web框架或语言无关,与您的体系结构有关 . 这是关于如何处理浏览器缓存,数据库缓存,如何使用非标准持久性提供程序(如CouchDB),如何调整您的数据库以及许多其他内容......

  • 160

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

    对于该卷,预计至少有30台服务器......每台服务器仍然是一个相当重的1,000个并发用户 .

  • 3
    • "What are the largest sites built on Django today?"

    没有必要使用来自不同地点的数据来刺伤它 . 首先,我们在the main Django project page的首页上有一个Django站点列表,然后是djangosites.org的Django站点列表 . 通过列表并选择一些我知道的流量,我们看到:

    是的,见上文 .

    • "Could a site like Stack Overflow run on Django?"

    我的直觉是肯定的,但正如其他人的回答和Mike Malone在他的演讲中提到的那样,数据库设计至关重要 . 如果我们能找到任何可靠的流量统计数据,也可以在www.cnprog.com找到强有力的证据 . 无论如何,它不只是通过抛出一堆Django模型而发生的事情:)

    当然,有更多的网站和博主感兴趣,但我必须停在某个地方!


    关于Using Django to build high-traffic site michaelmoore.com的博客帖子描述为top 10,000 website . Quantcast statscompete.com stats .


    (*)编辑的作者,包括这样的参考,曾经在该项目中担任外包开发人员 .

  • 27

    我们现在正在进行负载测试 . 我们认为我们可以支持240个并发请求(持续速率为每秒120次点击24x7),服务器性能没有任何显着降低 . 那将是每小时432,000次点击 . 响应时间不小(我们的事务很大)但随着负载的增加,我们的基准性能没有下降 .

    我们正在使用Apache前端Django和MySQL . 操作系统是Red Hat Enterprise Linux(RHEL) . 64位 . 我们在Django的守护进程模式下使用mod_wsgi . 除了接受默认值之外,我们没有进行缓存或数据库优化 .

    我们在64位戴尔的一个虚拟机中使用(我认为)32Gb RAM .

    由于20或200个并发用户的性能几乎相同,因此我们不需要花费大量时间来“调整” . 相反,我们只需要通过普通的SSL性能改进,普通的数据库设计和实现(索引等),普通的防火墙性能改进等来保持我们的基本性能 .

    我们测量的是我们的负载测试笔记本电脑在运行16个并发请求线程的15个进程的疯狂工作负载下挣扎 .

  • 237

    是的,它可以 . 它可能是使用Python或Ruby on Rails的Django . 它仍将扩大规模 .

    几种不同的技术 . 首先,缓存不是缩放 . 除了硬件 balancer 器之外,您还可以将多个应用程序服务器与nginx作为前端进行 balancer . 要在数据库方面进行扩展,您可以进行相当远的操作如果你采用RDBMS方式,在MySQL / PostgreSQL中读取slave .

    Django中交通繁忙的网站的一些很好的例子可能是:

    • Pownce当他们还在那里的时候 .

    • 铁饼(通用共享评论管理员)

    • 所有报纸相关网站:华盛顿邮报等 .

    你可以感到安全 .

  • 66

    看看这个名为EveryBlock的微型新闻聚合器 .

    它完全用Django编写 . 事实上,他们是开发Django框架的人 .

  • 5

    以下是Django中构建的一些相对高调的内容列表:

    我想这些网站中的一些可能每天点击量超过10万次 . Django当然可以达到每天100k次点击次数 . 但YMMV根据您正在构建的内容获取您的特定网站 .

    Django级别有缓存选项(例如缓存查询集和memcached中的视图可以创建奇迹)以及(像Squid这样的上游缓存) . 数据库服务器规范也将是一个因素(并且通常是挥霍的地方),例如,你应该假设Django 's going set up indexes properly. Don' t假设默认的PostgreSQLMySQL配置是正确的 .

    此外,如果这是慢点,您可以选择让多个应用程序服务器运行Django,前面有软件或硬件负载 balancer 器 .

    最后,您是否在与Django相同的服务器上提供静态内容?您使用的是Apache还是nginxlighttpd?你能负担得起CDN用于静态内容吗?这些是要考虑的事情,但它是唯一的变量:你想花多少钱?您管理所有这些组件有多少专业知识?你需要花多少时间把它们拉到一起?

  • 94

    玩魔鬼的拥护者一点点:

    你应该检查由Cal Henderson发送的DjangoCon 2008 Keynote, Headers 为"Why I hate Django",他几乎可以查看Django遗漏的所有内容,你可能想在高流量网站上做 . 在一天结束时,你必须以开放的心态采取这一切,因为完全可以编写可扩展的Django应用程序,但我认为这是一个很好的演示文稿,与你的问题相关 .

  • 6

    你绝对可以在Django运行一个高流量的网站 . 看看这个前Django 1.0但仍然相关的帖子:http://menendez.com/blog/launching-high-performance-django-site/

  • 75

    我所知道的最大的django网站是Washington Post,这肯定表明它的规模很好 .

    好的设计决策可能比其他任何东西都有更大的性能影响 . Twitter经常被引用作为一个网站,它体现了另一个基于动态解释语言的Web框架Ruby on Rails的性能问题 - 但Twitter工程师已经声明该框架不像他们早期做出的一些数据库设计选择那么多问题上 .

    Django与memcached非常合作,并提供了一些用于管理缓存的类,您可以在这里解决大多数性能问题 . 实际上,您在线上传送的内容几乎比后端更重要 - 使用像yslow这样的工具对于高性能Web应用程序至关重要 . 您可以随时在后端投入更多硬件,但无法更改用户带宽 .

  • 2

    我使用Django为爱尔兰的国家广播公司开发高流量站点 . 它对我们很有用 . 开发高性能站点不仅仅是选择框架 . 框架只是系统的一部分,它与最薄弱的环节一样强大 . 如果问题是数据库查询速度慢或服务器或网络配置错误,使用最新的框架“X”将无法解决您的性能问题 .

  • 9

    今天在Django上构建的“最大”网站是什么? (我主要通过用户流量测量大小)

    在美国,Mahalo . 我被告知他们每月处理大约1000万个唯一身份用户 .

    国外,Globo网络(巴西的新闻,体育和娱乐网站); Alexa将他们排在全球前100位(目前约为80位) .

    其他着名的Django用户包括PBS,国家地理,发现,NASA(实际上是NASA内部的许多不同部门)和国会图书馆 .

    Django可以每天处理10万用户,每次访问该网站几个小时?

    是的 - 但前提是你已经正确编写了应用程序,并且你有足够的硬件 . Django不是一个神奇的子弹 .

    像StackOverflow这样的网站可以在Django上运行吗?

    是(但见上文) .

    技术方面,轻松:一次尝试见soclone . 交通方面,竞争钉桩StackOverflow每月不到100万独立 . 我可以说至少有十几个Django网站的流量超过SO .

  • 5

    问题是不知道django是否可以扩展 .

    正确的方法是了解并了解哪些是django / symfony / rails项目下的网络设计模式和工具可以很好地扩展 .

    一些想法可以是:

    • 多路复用 .

    • 反向代理 . 例如:Nginx,Varnish

    • Memcache Session . 例如:Redis

    • 项目上的群集和db以实现负载 balancer 和容错:例如:Docker

    • 使用第三方存储资产 . 例如:亚马逊S3

    希望它有所帮助 . 这是我到山上的小石头 .

  • 13

    另一个例子是rasp.yandex.ru,俄罗斯运输时刻表服务 . 它的出勤率满足您的要求 .

  • 3

    我在另一周参加了EuroDjangoCon Session ,这是几次会谈的主题 - 包括最大的基于Django的网站Pownce的创始人(从一次谈话中滑出来) . 主要的信息是,你不必担心Django,但需要适当的缓存,负载 balancer ,数据库优化等 .

    Django实际上已经为大多数事情提供了钩子 - 特别是缓存非常容易 .

  • 3

    虽然这里有很多很棒的答案,但我只想指出,没有人强调......

    It depends on the application

    如果您的应用程序在写入时很轻松,就像您从DB中读取的数据要多于您编写的数据 . 然后缩放django应该是相当微不足道的,哎呀,它带有一些相当不错的输出/视图缓存,开箱即用 . 利用它,并说,redis作为缓存提供者,在它前面放置一个负载均衡器,启动n个实例,你应该能够处理非常大量的流量 .

    现在,如果你必须每秒进行数千次复杂的写入操作?不同的故事 . Django会是一个糟糕的选择吗?嗯,不一定,取决于您如何构建您的解决方案,以及您的要求是什么 .

    只是我的两分钱:-)

  • 45

    今天,我们根据需要使用许多网络应用和网站 . 其中大多数非常有用 . 我将向您展示python或django使用的一些内容 .

    Washington Post

    华盛顿邮报的网站是一个非常受欢迎的在线新闻来源,与他们的日报相关 . Django Web框架可以轻松处理大量的视图和流量 . Washington Post - 52.2 million unique visitors (March, 2015)

    NASA

    美国国家航空航天局的官方网站是查找有关其正在进行的太空探索的新闻,图片和视频的地方 . 这个Django网站可以轻松处理大量的视图和流量 . 2 million visitors monthly

    The Guardian

    卫报是卫报传媒集团旗下的英国新闻和媒体网站 . 它几乎包含了报纸“卫报”和“观察家报”的所有内容 . 这些巨大的数据由Django处理 . The Guardian (commenting system) - 41,6 million unique visitors (October, 2014)

    YouTube

    我们都知道YouTube是上传猫视频的地方而且失败了 . 作为现存最受欢迎的网站之一,它为我们提供了无尽的视频娱乐时间 . Python编程语言支持它和我们喜欢的功能 .

    DropBox

    DropBox启动了存储革命的在线文档,该革命已成为日常生活的一部分 . 我们现在几乎将所有内容存储在 Cloud 中 . Dropbox允许我们使用Python的强大功能存储,同步和共享几乎任何东西 .

    Survey Monkey

    Survey Monkey是最大的在线调查公司 . 他们每天可以在重写的Python网站上处理超过一百万条回复 .

    Quora

    Quora是在线提问和从个人社区获得答案的第一名 . 在他们的Python网站上,相关结果由这些社区成员回答,编辑和组织 .

    Bitly

    Bitly URL缩短服务和分析的大部分代码都是用Python构建的 . 他们的服务每天可以处理数亿个事件 .

    Reddit

    Reddit被称为互联网的头版 . 它是在线查找基于数千个不同类别的信息或娱乐的地方 . 帖子和链接是用户生成的,并通过投票提升到顶部 . Reddit的许多功能都依赖于Python的功能 .

    Hipmunk

    Hipmunk是一个在线消费者旅游网站,比较热门旅游网站,为您找到最优惠的价格 . 这个Python网站的工具允许您找到最便宜的酒店和航班 .

    点击这里了解更多:25-of-the-most-popular-python-and-django-websitesWhat-are-some-well-known-sites-running-on-Django

  • 760

    如高性能Django Book中所述并通过此Cal Henderson

    查看下面提到的更多细节:

    听到人们说“Django不能扩展”并不罕见 . 根据您的观察方式,该陈述完全正确或明显错误 . Django本身并没有扩展 .

    Ruby on Rails,Flask,PHP或数据库驱动的动态网站使用的任何其他语言也是如此 .

    好消息,然而,Django与一套缓存和负载 balancer 工具进行了精美的交互,这些工具可以扩展到可以投入的流量 .

    与您在线阅读的内容相反,它可以在不更换通常标记为“太慢”的核心组件(如数据库ORM或模板层)的情况下执行此操作 .

    Disqus每月提供超过80亿的页面浏览量 . 这些是一些巨大的数字 .

    这些团队已经证明Django肯定会扩展 . 我们在林肯环路的经验支持它 .

    我们已经 Build 了大型Django网站,可以在Reddit主页上度过这一天而不会出汗 .

    Django的扩展成功故事几乎无法在此列出 .

    它支持Disqus,Instagram和Pinterest . 想要更多证明吗? Instagram能够在Django上维持超过3000万用户,只有3名工程师(其中2名没有后端开发

  • 5

    我正在寻找一个更加可靠的答案,但我能想到的最明显的客观验证是Google推动Django与其App Engine框架一起使用 . 如果有人经常了解和处理可扩展性,那么,最重要的因素似乎是数据库后端,这就是Google使用自己的...

  • 3

    不确定每日访问次数,但这里有一些大型Django网站的例子:

    这是high traffic Django sites on Quora列表的链接 .

  • 2

    一旦您的站点/应用程序开始增长,就必须均匀地分散任务,简而言之,优化每个方面,包括DB,文件,图像,CSS等,并 balancer 负载与其他几个资源 . 或者你为它的成长腾出更多空间 . 必须在大型网站上实施CDN,Cloud等最新技术 . 只是开发和调整应用程序不会给你百分之百的满足感,其他组件也起着重要的作用 .

  • 19

    What's the "largest" site that's built on Django today? (I measure size mostly by user traffic) Pinterest
    disqus.com
    更多https://www.shuup.com/en/blog/25-of-the-most-popular-python-and-django-websites/

    Can Django deal with 100,000 users daily, each visiting the site for a couple of hours?
    是的,但使用适当的架构,数据库设计,使用缓存,使用负载 balancer 和多个服务器/点头

    Could a site like Stack Overflow run on Django?
    是的,只需要按照第二个问题中提到的答案

  • 7

    如果您的网站包含一些静态内容,那么将Varnish服务器放在前面将大大提高您的性能 . 即使是一个盒子也可以轻松吐出100 Mbit / s的流量 .

    请注意,对于动态内容,使用像Varnish这样的东西变得更加棘手 .

  • 6

    我想我们不妨将2011年的Apple年度应用程序Instagram添加到使用django密集的列表中 .

  • 5

    我已经使用Django超过一年了,对于如何将模块化,可扩展性和开发速度结合起来,我印象非常深刻 . 与任何技术一样,它带有学习曲线 . 然而,Django社区的优秀文档使这种学习曲线变得更加陡峭 . Django能够很好地处理我所做的一切 . 看起来它能够很好地适应未来 .

    BidRodeo Penny Auctions是一个中等大小的Django支持的网站 . 这是一个非常动态的网站,每天处理大量的页面浏览量 .

  • 4

    YouTube的开发者倡导者提供了talk about scaling Python at PyCon 2012,这也与缩放Django有关 .

    YouTube不仅仅是billion users,YouTube也是基于Python构建的 .

  • 3

    我对Django的体验很小但我记得在Django Book中他们有一章他们采访了一些运行一些较大的Django应用程序的人 . Here is a link.我想它可以提供一些见解 .

    它说curse.com是最大的Django应用程序之一,一个月内页面浏览量约为600-9000万 .

  • 4

    我认为问题不在于Django扩展 .

    我真的建议你研究一下你的架构是什么,这将帮助你扩展需求 . 如果你弄错了,那就不能指出Django的表现如何 . 表现!=规模 . 您可以拥有一个具有惊人性能但不能扩展的系统,反之亦然 .

    您的应用程序数据库绑定了如果是,那么你的规模问题就在那里 . 你打算如何与Django的数据库进行交互?当数据库无法像Django接受请求那样快速处理请求时会发生什么?当您的数据超过一台物理机器时会发生什么 . 您需要说明您打算如何处理这些问题情况 .

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

    简而言之,语言不是决定规模的因素,语言负责绩效(同样取决于您的应用程序,不同的语言表现不同) . 您的设计和架构使扩展成为现实 .

    我希望它有所帮助,如果您有疑问,我们将很乐意为您提供帮助 .

  • 11

    如果您想使用开源,那么有很多选择 . 但是python是最好的,它有很多库和一个超级棒的社区 . 这些原因可能会改变你的想法:

    • Python非常好,但它是一种解释性语言,使它变慢 . 但是许多加速器和缓存服务都可以解决这个问题 .

    • 如果您正在考虑快速开发,那么Ruby on Rails是最好的 . 这个(ROR)框架的主要座右铭是为开发人员提供舒适的体验 . 如果你比较Ruby和Python都有几乎相同的语法 .

    • Google App Engine是一项非常好的服务,但它会在你的范围内绑定你,你没有机会尝试新事物 . 而不是它你可以使用Digital Ocean Cloud ,它只需要 $5/Month 充电最简单的液滴 . Heroku是另一项免费服务,您可以在其中部署产品 .

    • 是的!是!你听到的是完全正确的,但这里有一些使用其他技术的例子

    • Rails:Github,Twitter(之前),Shopify,Airbnb,Slideshare,Heroku等 .

    • PHP:Facebook,维基百科,Flickr,雅虎,不倒翁,Mailchimp等

    结论是一个框架或语言不会为你做所有事情 . 更好的架构,设计和策略将为您提供可扩展的网站 . Instagram是最大的例子,这个小团队正在管理如此庞大的数据 . 这是一个blog关于它的架构必须阅读它 .

相关问题