PlentyOfFish(以下简称POF)是一家在美国广受欢迎的婚介交友网站,平均每月有4千5百万的访问者,每天有3千万的访问量(这是前一段时间的数据了),但你万万想不到的是,这个被估值$1000000000的网站却只有一个人每天只干两小时活。

POF对网友是100%免费的,所有的收入来自于Google广告点击,不像中国有的婚介交友网站广告纷乱,POF只有一个广告通栏,此外没有任何弹出广告,感觉非常的简洁。 它的成功的关键因素可能就是在基本功能方面能很符合用户的需要,在UE方面做的也比较贴心,同时也让用户能够坦然接受这个免费网站的UI的丑陋和服务的不稳定性,而更为愿意通过这个平台来发布一些内容,share一些个人图片,通过这个网站来找靓妞或者帅哥dating了。

我们先暂且不谈他在用户体验上是如何胜出的,光是系统架构上就值得我们好好体味一下了,毕竟一个人花那么少点时间就可以维护如此庞大的系统,由此可见其架构是如此的简单、灵活、高效。那我们就简单来分析他的架构吧。

  1. 用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也是一个不错的选择。但是这样的软件解决方案显得有点贵,而且很麻烦,最终站长选择了硬件来完成负载均衡任务。
  2. 使用ASP.NET技术
    ASP.NET中的缓存功能完全没有启用。因为该网站的动态特性,往往还没等缓存储存,数据就已经改变或消失了。另外,该站点也没有用ASP.NET开发什么组件,所有的组件都是现成的,一切都以简单出发。
  3. 使用IIS作为Web容器
    由于IIS限制了最大64000的连接数,所以POF不得不添加负载均衡器来处理为数众多的并发连接。站长曾经考虑过添加第二IP,并采用轮转调度(Round-Robin)来解决访问量过大的问题,但是这样太过复杂,有悖于一个人的简单管理,最后被放弃了。其实用多个Web服务器就可以简单解决。
  4. 用Akamai CDN来缓存网页
    该站点部署了Akamai CDN(网页缓存加速),每天处理大约1亿幅图片的缓存加速。CDN的原理是将你站点部分的内容,分发到CDN服务商的服务器上,因为CDN服务商广泛分布的服务器可以更加接近最终用户的地域,这样速度就会更快。假如你当前的POF页面有8幅图片,每幅图片的下载需要100毫秒,那么光下载这些图片就需要花上一秒钟。所以分配这些图片到离用户更近的区域是非常必要的,而且CDN也一定程度缓解了不同网络服务商之间的线路差异。当然,也不是所有的图片都采用了CDN,一些小于2KB的图片还是缓存于本地内存。可能因为部署了CDN,POF虽然是国外网站,但速度却非常快,与国内网站无二。有关CDN技术,可以参考http://baike.baidu.com/view/21895.htm
  5. 用Foundry ServerIron 来做负载均衡
    POF采用了网捷网络公司的Web交换器ServerIron,ServerIron 能够有效地处理超过 16,000,000个并发连接,而且能够改善服务器负载均衡和缓冲转换。正如上文所述,最终站长放弃了NLB而采用了ServerIron 负载均衡,经过详细计算之后,他发现部署ServerIron要比NLB便宜。其实也不只是POF,很多大网站都采用ServerIron来处理TCP 连接pooling和bot自动监察。ServerIron除了负载均衡还能做很多事情,因此还是值得的考虑的。
  6. 数据库优化
    3台SQL Server,采用master-slave架构,两台负责read操作,master那台负责写操作。这个和myspace早期的后台数据库架构是一样,看来这种架构很流行嘛。POF 有一个主要的数据库,两个搜索数据库。监测使用任务管理器来完成。过去,有些问题会将数据库堵塞,其实这都是数据库自己的问题,好在POF没用.net的 library,找出问题相对容易一些。不过假如你使用了framework的很多层级,找出问题就可能很困难了。对于POF而言,数据库不仅仅是不出问题,还需要稳定和快速。由于POF网站的动态特性,基本用不到缓存,所以站长几年来花了很大功夫,在很多细节上优化了数据库,让数据库的相应更加迅速。
  7. Memory和CPU
    把最近常使用的图片直接放在内存中,所以内存会那么大;CPU配置也挺好,gzip是相当耗费CPU计算的。

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

  8. 压缩
    所有的request数据都使用了gzip压缩,大概耗费了30%的CPU,但是降低了带宽成本。欧美的带宽不便宜。

中国的经济环境持续向好,所以很多公司的IT部门都得到了更多的预算,但这些预算被合理的使用了吗?这些预算往往被用来采购更好的服务器硬件,更新的操作系统和数据库软件,还有各式各样的行业应用。倒不是说这些部署不好,只是说我们的IT部署一定要以实用为出发点,少做一些可有可无的投资。我们要多向 POF学习,其实稳定、快速、便捷才是制胜的关键。正如POF站长一再强调的简单哲学,所有复杂的东西都尽量不去使用。

虽然站长一开始的技术一般,但是随着建站时间的加长,他现在也已经是一个网站架构专家,他花了很多力气来优化数据库和维护系统,而且他也采用了CDN来加快不同地域的用户访问网站空间。不过其实该网站的搭建可以更加合理,比如可以采用S3来外包其图片存储,采用更轻质化的操作系统或者Web服务器等等。这些年来,类似于这样的建议非常多,但是站长还是坚持了他的简单策略,而且也拒绝对主页面进行美工优化,因为他认为多余的工作只会引来他人反感,实用才是关键。可见,保持简单性,和持续勤劳的维护是服务器运行良好的法宝。

相信我们可以从POF上学习的东西还有很多,毕竟该网站以一己之力,达到了史无前例的高度,净利润竟然逼近了500多人的大型IT网站。POF的成功必然有它的深刻理由,不仅是网站的整体的服务器和软件架构、很多细节的处理也同样值得我们借鉴。

狼族营销:http://www.wolves69.com  助你的网站腾飞

转载于:https://www.cnblogs.com/Wolves/archive/2011/08/17/2143011.html

PlentyOfFish.com .NET网站的又一传奇相关推荐

  1. PlentyOfFish.com .NET网站的又一传奇(转)

    原文:http://www.itivy.com/ivy/archive/2011/3/5/634349627089221280.html PlentyOfFish(以下简称POF)是一家在美国广受欢迎 ...

  2. 传奇开服方法教程:传奇开服在哪些网站打广告?传奇发布站打广告技巧

    传奇开服方法教程:传奇开服在哪些网站打广告?传奇发布站打广告技巧 纯分享经验以及方法:开传奇sf,成本最高的就是广告费用了,为了让服人气更高,主播和发布站相信你们都已经尝试了,上人效果如何你们比我更清 ...

  3. 各大网站架构总结笔记

     各大网站架构总结笔记 记得在大学里不止一次关注网站架构方面的东西了,但每次都是泛泛了解,也没有着重记录,一段时间后对各种架构的思想也就模糊了.这几天不知怎么的又心血来潮(可能是快毕业了冲动了)想 ...

  4. 开传奇技术去哪学?如何架设传奇?

    许多热爱传奇这款游戏的兄弟,都似曾幻想有一天开一个属于自己的服,但是奈何在没有技术没有任何硬性条件的情况下,只能望而止步那么许多老哥就会联想到,我想学习相关的专业技术我该如何做呢 又该到哪里学习这个技 ...

  5. Match.com被逼做DownToEarth免费交友社群,社群网站也可转战男女交友!

    最近才刚传出Yahoo!印度分公司准备推出属于印度人的SpotM交友网站 ,但昨天在Mashable又有一篇关于交友网站更有趣的文章 ,它喊出:「男女交友网站付费时代已经过去 !」 你说,不对啊,这件 ...

  6. [资料整理]魔法师传奇 MagicMayhem

    魔法师传奇 Magic&Mayhem 魔法师传奇中文站网站 魔法师传奇2023版介绍 魔法师传奇中文站网站 网站地址:魔法师传奇中文站 http://zb.my.to:1983/magic 论 ...

  7. 学习架设传奇入门必读的好文章

    很高兴今天能有时间给大家来说说一些事情,相信不少传奇爱好者都想自己开一个单机传奇,但是总认为自己思维没别人好,总感觉传奇技术这些是天赋的!站长现在可以告诉大家,人的成功与天赋无关,但和努力是很相连. ...

  8. Tailwind CSS

    Tailwind CSS Tailwind CSS是一个实用程序优先的 CSS 框架,用于快速构建自定义用户界面. Useful Links 传奇:官方资源 Website - 官方 Tailwind ...

  9. [回顾]2007年木马病毒“英雄榜”,你中过几个

    相信点击本帖的朋友每位都中过可恶的木马病毒,而且有几次还记忆犹新或者心有余悸.哪个木马最让你痛彻心扉?正好这里有一份榜单,大家可以"旧梦重温",对号入座一下,欢迎补充 ***200 ...

最新文章

  1. HDU 2206 IP的计算(字符串处理)
  2. LeanCloud数据更新不同步问题
  3. 配置zentaophp
  4. Android-Universal-Image-Loader学习笔记(3)--内存缓存
  5. call,apply学习笔记
  6. 计算机可以按用户观点分吗,2016-2017杭州师范大学操作系统期末考试选择题
  7. 配色方案为您的下一个设计项目准备,照着配准没错!
  8. mysql的int最大值_MySQL中int最大值深入讲解
  9. 使用 Intel HAXM 为 Android 模拟器加速,媲美真机
  10. 容灾服务器作用,存储容灾服务
  11. 用Visual Studio写PHP代码
  12. bpmn js 生成json_js处理的8种跨域方法
  13. windows驱动开发4:WDM、WDF等驱动基本概念
  14. 好用的医药管理软件都有哪些特点
  15. Xutils使用详解(二)
  16. Android-节日短信送祝福(功能篇:1-数据库操作类与自定义ContentProvider)
  17. 孕妇能吃哪些水果?三种水果帮你补充高营养
  18. C++实现gotoxy函数
  19. GitLab 邮件发送不成功原因
  20. 科大讯飞踩过的“坑”,还有多少AI企业要踩?

热门文章

  1. [LeetCode]题解(python):072-Edit Distance
  2. 计算图片的宽和高 动态设置图片的位置
  3. Linux Shell常用技巧(六)
  4. Java方法 signature
  5. EditText 输入类型 android:inputType=quot;参数类型quot;
  6. 【weex开发】环境配置流程
  7. 关于CATALINA_BASE
  8. java.lang.NoClassDefFoundError: org/springframework/boot/context/embedded/FilterRegistrationBean
  9. iOS基础知识点总结
  10. hdu 3501 欧拉函数