数据API 案例 开发者 关于
掌握聚合最新动态了解行业最新趋势
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

掌握聚合最新动态了解行业最新趋势
API接口,开发服务,免费咨询服务
新闻动态 > 媒体报道
使用 Django 达到每个月 80 亿PV
发布:2016-11-28

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

电话 0512-88869195