FW:12亿次月访问流量网站服务器架构探秘
今天我们的主角,是年净利润达到600万美金的网站: Plentyoffish.com Free Online Dating Service & Dating Site
(有人对其评估达上亿美金)。神奇的地方并不是这家网站有多么值钱,也不是这家网站有多么好的服务器架构——最令人惊奇的地方是,这么一家估值上亿美金的网站,全部员工只有1个人,现年30岁的Markus Frind。Plentyoffish.com Free Online Dating Service & Dating Site
是一家怎样的网站呢?可能很多国内的读者对PlentyOfFish(以下简称POF)还不太熟悉,POF是一家在美国广受欢迎的婚介交友网站,平均每月有4千5百万的访问者,每天有3千万的访问量。POF对网友是100%免费的,所有的收入来自于Google广告点击,不像中国有的婚介交友网站广告纷乱,POF只有一个广告通栏,此外没有任何弹出广告,感觉非常的简洁。
文章到了这里,一定已经有很多读者出于好奇登入了Plentyoffish.com Free Online Dating Service & Dating Site,想看看这家网站到底有什么诱人之处。很多看了这家网站的朋友一定更加惊讶,因为这家网站实在很朴素,完全没有任何美工的概念,不过如果你免费注册了一个账号,就会发现通过POF交友的人是如此之多,美国、澳大利亚、英国、加拿大、甚至是中国都有大量的用户填写了交友信息,同时在线的人多达数万。该网站站名Plenty of fish,很多鱼,源于谚语“很多鱼在海里:Plenty of fish in the sea。”意思就是我们所说的“天涯何处无芳草”,与婚介主题也蛮符合的。下面,我们看一下POF的具体资料。
目前,POF的月访问量(PV)达到了每月12亿次,每月有4千5百万用户访问,每天有3千余万次访问,(每秒500~600个页面访问)。依照compete公司的统计,POF在各个英语国家的网站排名都名列前茅:美国进入了前30位,加拿大前10位,英国前30位。
既然访问量如此之高,那么该网站是以怎样的架构应对的呢?
●Microsoft Windows:
该网站采用的是Windows x64 Server 2003。采用Windows的原因是并不是站长认为Windows适合POF,而是因为站长本人建站时候的技术很差,完全不会使用Linux和Unix。他办这个网站的初衷其实是学习ASP。也因为如此,整个网站的标准就是简单、简单、再简单。对于大流量负载均衡的处理,站长目前没有使用Windows 的负载均衡Network Load Balancing (NLB),他认为NLB不能保持sessions状态。对于不能保持sessions状态,倒也可以存储session状态到数据库,或者共享文件系统。8-12个NLB服务器可以共同放入一个farm,而且farm的数量也是没有限制的。然后将一个 DNS轮转调度策略(round-robin scheme)用在farm之间。其实这样的架构,也曾经一度被用在POF——总计70个前端Web服务器(front end web servers),可以支持30万人的并发访问。NLB也是一个不错的选择。但是这样的软件解决方案显得有点贵,而且很麻烦,最终站长选择了硬件来完成负载均衡任务。
●ASP.NET:
ASP.NET中的缓存功能完全没有启用。因为该网站的动态特性,往往还没等缓存储存,数据就已经改变或消失了。另外,该站点也没有用ASP.NET开发什么组件,所有的组件都是现成的,一切都以简单出发。
●IIS:
由于IIS限制了最大64000的连接数,所以POF不得不添加负载均衡器来处理为数众多的并发连接。站长曾经考虑过添加第二IP,并采用轮转调度(Round-Robin)来解决访问量过大的问题,但是这样太过复杂,有悖于一个人的简单管理,最后被放弃了。其实用多个Web服务器就可以简单解决。
●Akamai CDN:
该站点部署了Akamai CDN(网页缓存加速),每天处理大约1亿幅图片的缓存加速。CDN的原理是将你站点部分的内容,分发到CDN服务商的服务器上,因为CDN服务商广泛分布的服务器可以更加接近最终用户的地域,这样速度就会更快。假如你当前的POF页面有8幅图片,每幅图片的下载需要100毫秒,那么光下载这些图片就需要花上一秒钟。所以分配这些图片到离用户更近的区域是非常必要的,而且CDN也一定程度缓解了不同网络服务商之间的线路差异。当然,也不是所有的图片都采用了CDN,一些小于2KB的图片还是缓存于本地内存。可能因为部署了CDN,POF虽然是国外网站,但速度却非常快,与国内网站无二。
●Foundry ServerIron 负载均衡:
POF采用了网捷网络公司的Web交换器ServerIron,ServerIron 能够有效地处理超过 16,000,000个并发连接,而且能够改善服务器负载均衡和缓冲转换。正如上文所述,最终站长放弃了NLB而采用了ServerIron 负载均衡,经过详细计算之后,他发现部署ServerIron要比NLB便宜。其实也不只是POF,很多大网站都采用ServerIron来处理TCP 连接pooling和bot自动监察。ServerIron除了负载均衡还能做很多事情,因此还是值得的考虑的。
●数据库:
POF 有一个主要的数据库,两个搜索数据库。监测使用任务管理器来完成。过去,有些问题会将数据库堵塞,其实这都是数据库自己的问题,好在POF没用.net的library,找出问题相对容易一些。不过假如你使用了framework的很多层级,找出问题就可能很困难了。对于POF而言,数据库不仅仅是不出问题,还需要稳定和快速。由于POF网站的动态特性,基本用不到缓存,所以站长几年来花了很大功夫,在很多细节上优化了数据库,让数据库的相应更加迅速。
●服务器硬件:
2台Web服务器,都有2个Intel CPU Quad [...]
Read the rest of FW:12亿次月访问流量网站服务器架构探秘