基于 Django 的 Disqus,如何支持每月 80 亿 PV 已翻译 100%

红薯干 投递于 2013/09/25 12:18 (共 8 段, 翻译完成于 09-26)
阅读 7768
收藏 125
5
加载中
当我们每月的PV接近80亿次、每秒的请求达到45K时,我们研究了一些关于”如何将评论发送给很多不同用户“的方法。 Disqus非常出名的一点是采用 Django来完成几乎所有的网络传输,这种方式在今天还在持续。像任何Web框架一样,Django本身进行了一些取舍:快速开发VS性能、新用户的熟知程度VS个性化等等。相比性能而言,Disqus更倾向于是否便于快速开发和用户的熟悉程度,以及对于我们某些特殊需求是否做出了很好的优化。
sdzzboy
翻译于 2013/09/25 16:57
2

Web框架为什么很慢?

表面上看,web框架速度缓慢的主要原因在于存在大量的模板以及我们程序中不需要的代码;这其实是非常正确的。实际上,速度缓慢不是因为框架的代码量大或者语言选择造成的。速度缓慢很有可能是需要在网络上跟其他服务交互的结果。在我们公司,这些服务包括 PostgreSQL, Redis, Cassandra, Memcached等,这仅仅是举例的一小部分。缓慢的数据库查询和网络延迟比一个健壮的网络框架(例如Django)的性能开销更严重。

sdzzboy
翻译于 2013/09/25 17:10
1

为了避免这些延迟,人们采用各种方式的缓存技术。最显而易见的方法是采用Django本身自带的Django 缓存库

程序级别常用的缓存模式如下:

data = cache.get('stuff')
if data is None:
    data = list(Stuff.objects.all())
    cache.set('stuff', data)
return data

如果你非常熟悉Django,那么你对这种方式就不会感到陌生。这种缓存方式简单明了,在多数情况下非常有效。结合使用Memcached就已经足够快了,但是为了应答一个请求还需要很多其他的工作。

sdzzboy
翻译于 2013/09/25 17:18
1

每秒处理45K个请求

我们已经将很多缓慢的东西进行了缓存。但是,还有一些不必要的工作以每秒45000次的频率执行。我们很可能需要渲染JSON、渲染HTML模板,或者对HTML进行解析以及执行我们Django中间件。关键是,我们想缩短这些工作的执行,以便Django执行其最擅长的工作:提供数据。

每秒45000个请求,这些请求究竟有多少是不同的呢?当结果都是一样的时候,我们是否还需要一遍遍重复相同的工作?我们非常想能够缓存整个反馈(response)以便省略其他所有的工作。

sdzzboy
翻译于 2013/09/25 17:32
1

Varnish介绍

Varnish究竟是什么?Varnish是一个位于负载均衡和后端Django之间的软件,是一个Http缓存层。这意味着:在知道Http请求不是唯一的情况下,它可以在不接触Djang服务器的情况,缓存整个Http反馈(http response)。

从前,Varnish对我们来说有点像黑盒。老实来说,安装完成后,只需要很少的配置它就能很好的工作。但是认为我们还可以做的更多。

sdzzboy
翻译于 2013/09/25 18:45
1

我花了一些时间去研究Varnish以及可以使用的小技巧。随着时间的增长,我们可以在不接触Django服务器的情况下,每秒响应几千个请求。现在,在每秒进入的45000个请求中,只有大约15000个会实际发送到Web服务器。其他的请求会非常快速和有效的被Varnish处理。

因为这对我们来说非常有用且是一个非常美好的学习经历,所以该话题已成为我们最近几个讨论的主题。

sdzzboy
翻译于 2013/09/25 18:56
1

最近,我在芝加哥举行的 Django美国大会上进行了演讲。该演讲的目标是那些对Varnish不太熟悉的人,希望并鼓励他们学习更多。对于我而言,我非常兴奋做这个演讲,因为该话题很少对应用开发者们演讲。这个话题是我几年前就想听到的,并且希望在HTTP的工作原理与如何利用诸如Varnish之类的工具来进行HTTP管理之间构建一个桥梁。

在这之前,我还出席了在纽约举行的VUG7 (Varnish User Group),并且详细介绍了一些用来解决我们实际问题的方法和技巧。那个演讲非常详细的介绍了VCL,VCL在每一个端点用来传输嵌入内容。

sdzzboy
翻译于 2013/09/25 19:15
1

tl;dr

有机会体验一下Varnish。Varnish虽不能解决我们所有的问题,但是却非常值得我们花时间去研究和使用。

如果你对这些材料非常感兴趣,并且喜欢在电脑上与我交流(每周至少5天),欢迎浏览我们的招聘网站

sdzzboy
翻译于 2013/09/25 19:26
1
本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接。
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。
加载中

评论(28)

南湖船老大
南湖船老大

引用来自“出水小葱”的评论

引用来自“李惟”的评论

我觉得夸大了,拿80亿pv/月来说,那么就是26.7亿pv/天,如果一个用户能产生5-6个,那么就是4.45亿ip用户,按照重复回返率在40%左右(这个算是相当优秀的数据了),那么就是每天有1.1亿的绝对用户。能有这样的网站不多

你数学老师死的早啊

哈哈哈
巨葱
巨葱

引用来自“李惟”的评论

我觉得夸大了,拿80亿pv/月来说,那么就是26.7亿pv/天,如果一个用户能产生5-6个,那么就是4.45亿ip用户,按照重复回返率在40%左右(这个算是相当优秀的数据了),那么就是每天有1.1亿的绝对用户。能有这样的网站不多

你数学老师死的早啊
哈哈__哈哈
哈哈__哈哈
你以为google全站用django不然哪来80亿
hillshills
hillshills
学习
笨蛋0007
笨蛋0007

引用来自“lanybass”的评论

我裤子都脱了,你就给我看这个?

我是来看回复的
小白薯
小白薯
等于什么都没说
吐槽的达达仔
吐槽的达达仔
标题党啊,和Pythong Django没啥关系啊。完全就是个反向代理的推广文嘛。。
johnzhang68
johnzhang68
http://en.wikipedia.org/wiki/Disqus

The Disqus comment widget is written in JavaScript and is powered by a back end primarily written in Django.
MangoKingX
MangoKingX
能吹大点么
海上添翼
海上添翼

引用来自“李惟”的评论

我觉得夸大了,拿80亿pv/月来说,那么就是26.7亿pv/天,如果一个用户能产生5-6个,那么就是4.45亿ip用户,按照重复回返率在40%左右(这个算是相当优秀的数据了),那么就是每天有1.1亿的绝对用户。能有这样的网站不多

这帐怎么算的?
返回顶部
顶部