代码改变世界

艾伟:.Net架构网站又一传奇:PlentyOfFish.com

2011-08-29 00:09  狼人:-)  阅读(302)  评论(0编辑  收藏  举报

这个叫PlentyOfFish的网站,  它只有一个员工,每天只干两小时活,但是却被估值$1000000000。

PlentyOfFish在山姆大叔家里算是一个很火的online dating网站,网站取名字来自这句话:There is plenty of fish in the sea. 对应的中文意思是“天涯何处无芳草”。 Fish的意境虽然差了一点,但是却更加形象地表达了“遍地撒网,中心钓鱼”的泡妞的法则。 PlentyOfFish每个月有4500多万的访问用户,每天3000多万点击率。这个流量实际上并不夸张,平均算下来大概也就是500-600 request/s,峰值可能会更加高一点。在国内,我们可以发现douban.com就和它有的一拼,流量可能也差不了多少了。但是网站价值差多少倍偶就不知道了。通过和一般的互联网公司比较,大家可能认为这么流量也不小的公司怎么也要上百人左右,但它的确是只有一个干活的,这人就是Markus Frind。还有个非正式的好像是他女朋友,有时候帮他回回用户来信。当网站每个月能够收入4000块钱时候这个家伙就辞掉了全职工作,开始学着做SEO和竞价排名等等了。当我第一次访问这个网站的时候,第一感觉就是这也太土了把。但是或许正是因为它的土,它的默默无闻,使得没有人愿意去抄袭,去hack它。但有点我们得承认,Markus在网站内容和广告方面的确处理的很好,的确有不少值得我们学习的地方。

PlentyOfFish作为一个交友网站,我们或许并没有发现它有什么特殊的地方,也没有发现让人想尖叫的feature,但或许真是细节往往决定成败。它的成功的关键因素可能就是在基本功能方面能很符合用户的需要,在UE方面做的也比较贴心,同时也让用户能够坦然接受这个免费网站的UI的丑陋和服务的不稳定性,而更为愿意通过这个平台来发布一些内容,share一些个人图片,通过这个网站来找靓妞或者帅哥dating了。 PlentyOfFish允许它的用户上传很多照片,据统计已达到了6TB,然后允许每个用户可以对其它用户的照片进行打分,这中间的交互过程可能是给了用户带来很多自我表达的机会,使得他们开始沉迷于这个网站。PlentyOfFish在用户资料真实性方面做了很多工作,提供了各种举报和打假功能,估计站长每天就是在删除这些捣乱用户了。然而它的流行并不能阻止我们对那个1后面加很多0的估值的疑问?它凭什么值那么多美元?PlentyOfFish并没有收取任何注册用户的费用,而是宣称100% Free。那他到底怎么挣钱的呢?难道他有什么绝佳的盈利模式idea?实际上和我们很多人一样,就是仅仅靠网站打点广告,收点广告费。而我们加上阿里妈妈广告条,每个月只能给自己增加点零花钱,但是他现在一年可以从google Adsense混到1000万美元还多。TMD,眼红,口水直流…..而且这个数据应该已经过时了。一个站长能把一个网站推到如此规模,我不知道这个星球上还有没有一个可以和他比肩的人。有的话你让他站出来,偶马上跪拜在地……师傅,教我J……

Markus,他和我一样,不是我和他,呵呵,只会使用.Net,所以想做个网站,也只好从用asp.net开始了。正是这个网站的简单想法,使得一个具有传奇意义的互联网产品诞生了。至于Markus当时怎么bootstrap这个网站,以及怎么一步一步做大,我就不得而知了。PlentyOfFish的后台采用的技术和产品可能和我们大部分使用.Net的网站一样,下面我们就来一起简单分析一下它的后台架构。

  • Web框架和服务器:Asp.net+IIS+ Windows x64 Server 2003
  • Web Server: 2 个做负载均衡的web servers , 基本配置是 2 Quad Core Intel    Xeon X5355 @ 2.66Ghz), 8 G RAM (使用了大约800 MBs), 2 hard drives
  • DB Server:  3台SQL Server,采用master-slave架构,两台负责read操作,master那台负责写操作。这个和myspace早期的后台数据库架构是一样,看来这种架构很流行嘛。
  • Internet connection: 1Gbps 使用了大概200Mbps。
  • CDN: 使用了Akamai的服务,每天要传输1.7亿张图片
  • 图片规模:6TB左右,数亿张图片
  • 资源状态:Everything is dynamic. Nothing is static。没有使用asp.net内部cache机制,资源很快就Expire了。
  • 压缩: 所有的request数据都使用了gzip压缩,大概耗费了30%的CPU,但是降低了带宽成本。欧美的带宽不便宜。
  • Load Balance: 使用了ServerIron ,而不是NLB(windows负载均衡解决方案)。 ServerIron 比NLB便宜而且简单很多。
  • Performance Monitor: Windows Task Manager,够牛
  • I/O操作: 因为内容很难cache,所以花了很多功夫在db performance tuning上。
  • Memory和CPU: 把最近常使用的图片直接放在内存中,所以内存会那么大;CPU配置也挺好,gzip是相当耗费CPU计算的。

Markus说他碰到问题基本上是IO操作方面的瓶颈,很少是被.Net block住。Markus在Session,Farm,以及数据库反范式等很多方面都有很不错的经验,很值得我们学习和借鉴,更多的细节大家可以参考后面的链接的几篇文章。

Markus最近也有了新的计划,他做了一些让POF进一步发展的计划:

  • 盈利模式发生一些改变,不仅仅依靠google ads。希望从所有用户身上榨取更多的美元出来。
  • 打算打造一个营销团队
  • 观察竞争对手然后加入新的功能
  • 考虑使用Amazon S3存储来达到地域分布式load balanced。就像建立多个data centers一样。主要可能是S3价格相当便宜。

作者:shawnliu

出处:http://www.cnblogs.com/liushouzhao

参考文章:

PlentyOfFish Architecture

PlentyOfFish 网站架构学习

About PlentyofFish