掌握聚合最新动态了解行业最新趋势
API接口,开发服务,免费咨询服务

使用 Django 达到每个月 80 亿PV

Disqus如今已经获得了每月80亿次PV,每秒4.5万次请求。在这个过程中,我们收获了一些有关让人们进行评论的经验。

Disqus几乎所有的web流量都是使用Django获得的,从开始到如今一直都是如此。任何一种web框架,都有好的地方,也有坏的地方:快速开发vs性能、对新开发者友好vs自定义等。Disqus选择了优化开发速度和对新开发者友好,为了满足自身的需要,我们也进行了一些微调。

  • 一种web框架为何会速度如此之慢?

从表面上看,我们会觉得一种web框架速度慢是因为它有着太多的模板和你的程序并不需要的代码。而实际上,某个产品的速度慢,与你所选择的框架与语言无关。造成速度慢的原因,很可能是由于你的请求正在和你的网络中其他的服务进行通讯。那我们举例,这些其他的服务包括PostgreSQLRedisCassnadraMemcached等等。缓慢的数据库请求和网络延迟加在一起,影响了程序的运行速度,这种影响要远远大于Django等框架对运行速度造成的影响。

为了解决这样的延迟,我们会使用各种各样的缓存。其中最简单的方法,应该是使用内置的 Django cache library

程序level缓存的一般情况是这样的:

data = cache.get('stuff')

if data is None:

    data = list(Stuff.objects.all())

    cache.set('stuff', data)

return data

如果你熟悉Django的话,上面这个情况你肯定不会陌生。这种形式的缓存非常简单明了,而且大多数情况下都能起到很好的效果。和Memcached搭配的时候,它的速度足够快,但是要想处理好大量的请求,你还是要做很多调整。

  • 每秒处理4.5万次请求

虽然我们可以把那些运行速度慢的东西放进缓存,但是我们还有很多事情要做。在每秒4.5万次请求的情况下,我们可能需要渲染一些JSON、或是HTML模板,或是分析HTML并且执行Django中间件。重点是,我们要缩短这些工作,让Django只做它最擅长的东西:处理独特数据。

在每秒4.5万次的请求中,有多少是独特请求呢?当结果总是相同的情况下,我们真的需要一遍又一遍的重复相同的工作吗?其实我们真正想要做的,是将整个响应都进行缓存处理,并且跳过其他的工作。

  • Varnish

Varnish是什么?它是一个处于load balancerDjango后端之间,扮演了一个HTTP缓存层的软件。这意味着,如果我们知道一个请求并非独特请求,那么它能够在不接触Django服务器的情况下,就对整个HTTP响应进行缓存。

此前,我们对Varnish也不甚了解。在安装了之后,我们只是用了它的基本功能。老实说,它给我们带来了很好的效果。因此我决定对它进行更加深入的了解。

我用了很长时间来学习Varnish。一段时间之后,我们终于达成了目的,在不接触Django服务器的情况下处理每秒成千上万次的请求。今天,我们发现在每秒4.5万次的请求中,只有1.5万个独特请求,也只有它们会接触到我们的服务器。其余的,都交给Varnish来处理,通过这个方式我们提高了处理速度和效率。

自此之后,我一直在大力推广这个方法。

不久前,我曾在芝加哥举行的 DjangoCon US大会上进行演讲。这个演讲面对的正是那些对Varnish并不熟悉、而又希望对它进行学习的人。

还有一次,我在纽约的 VUG7 (Varnish User Group) 大会上进行了一次演讲,由于这一次的听众都已经对Varnish非常熟悉,因此这一次我讲述了很多具体的细节。

qrcode_for_gh_9de197bcc61b_258.jpg

原文来自:SDK.cn

声明:所有来源为“聚合数据”的内容信息,未经本网许可,不得转载!如对内容有异议或投诉,请与我们联系。邮箱:marketing@think-land.com

  • 行驶证查询

    根据车牌号码、姓名、车牌类型,返回行驶证详情信息。

    根据车牌号码、姓名、车牌类型,返回行驶证详情信息。

  • 行驶证查询简版

    输入车牌号码,返回:车牌号、品牌、车辆型号、发动机号、车辆识别码、车辆类型、营运性质、初次登记日期

    输入车牌号码,返回:车牌号、品牌、车辆型号、发动机号、车辆识别码、车辆类型、营运性质、初次登记日期

  • 车辆投保日期查询

    输入车牌号码、车辆类型或车架号,返回初次投保日期、上次交强险投保年月、最近交强险投保期启、最近交强险投保期止。

    输入车牌号码、车辆类型或车架号,返回初次投保日期、上次交强险投保年月、最近交强险投保期启、最近交强险投保期止。

  • 行驶证信息详情查询

    输入车牌号码、姓名、车牌类型,返回行驶证详情信息。

    输入车牌号码、姓名、车牌类型,返回行驶证详情信息。

  • VIN码查车五项

    调用车管所全量数据,通过输入车辆的VIN码,可直接查询车辆的车架号、发动机号、 品牌名称、初次登记日期、品牌型号等信息。

    调用车管所全量数据,通过输入车辆的VIN码,可直接查询车辆的车架号、发动机号、 品牌名称、初次登记日期、品牌型号等信息。

0512-88869195
数 据 驱 动 未 来
Data Drives The Future