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

本文涉及的产品
网络型负载均衡 NLB,每月750个小时 15LCU
传统型负载均衡 CLB,每月750个小时 15LCU
应用型负载均衡 ALB,每月750个小时 15LCU
简介: 这个叫PlentyOfFish的网站,  它只有一个员工,每天只干两小时活,但是却被估值$1000000000。PlentyOfFish在山姆大叔家里算是一个很火的online dating网站,网站取名字来自这句话:There is plenty of fish in the sea. 对应的中文意思是“天涯何处无芳草”。

这个叫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

相关实践学习
SLB负载均衡实践
本场景通过使用阿里云负载均衡 SLB 以及对负载均衡 SLB 后端服务器 ECS 的权重进行修改,快速解决服务器响应速度慢的问题
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
目录
相关文章
|
7月前
|
存储 开发框架 前端开发
前端框架EXT.NET Dotnet 3.5开发的实验室信息管理系统(LIMS)成品源码 B/S架构
发展历史:实验室信息管理系统(LIMS),就是指通过计算机网络技术对实验的各种信息进行管理的计算机软、硬件系统。也就是将计算机网络技术与现代的管理思想有机结合,利用数据处理技术、海量数据存储技术、宽带传输网络技术、自动化仪器分析技术,来对实验室的信息管理和质量控制等进行全方位管理的计算机软、硬件系统,以满足实验室管理上的各种目标(计划、控制、执行)。
71 1
|
1月前
|
敏捷开发 缓存 中间件
.NET技术的高效开发模式,涵盖面向对象编程、良好架构设计及高效代码编写与管理三大关键要素
本文深入探讨了.NET技术的高效开发模式,涵盖面向对象编程、良好架构设计及高效代码编写与管理三大关键要素,并通过企业级应用和Web应用开发的实践案例,展示了如何在实际项目中应用这些模式,旨在为开发者提供有益的参考和指导。
24 3
|
2月前
|
存储 消息中间件 前端开发
.NET常见的几种项目架构模式,你知道几种?
.NET常见的几种项目架构模式,你知道几种?
103 0
|
4月前
|
设计模式 存储 前端开发
揭秘.NET架构设计模式:如何构建坚不可摧的系统?掌握这些,让你的项目无懈可击!
【8月更文挑战第28天】在软件开发中,设计模式是解决常见问题的经典方案,助力构建可维护、可扩展的系统。本文探讨了.NET中三种关键架构设计模式:MVC、依赖注入与仓储模式,并提供了示例代码。MVC通过模型、视图和控制器分离关注点;依赖注入则通过外部管理组件依赖提升复用性和可测性;仓储模式则统一数据访问接口,分离数据逻辑与业务逻辑。掌握这些模式有助于开发者优化系统架构,提升软件质量。
61 5
|
4月前
|
XML 开发框架 .NET
.NET框架:软件开发领域的瑞士军刀,如何让初学者变身代码艺术家——从基础架构到独特优势,一篇不可错过的深度解读。
【8月更文挑战第28天】.NET框架是由微软推出的统一开发平台,支持多种编程语言,简化应用程序的开发与部署。其核心组件包括公共语言运行库(CLR)和类库(FCL)。CLR负责内存管理、线程管理和异常处理等任务,确保代码稳定运行;FCL则提供了丰富的类和接口,涵盖网络、数据访问、安全性等多个领域,提高开发效率。此外,.NET框架还支持跨语言互操作,允许开发者使用C#、VB.NET等语言编写代码并无缝集成。这一框架凭借其强大的功能和广泛的社区支持,已成为软件开发领域的重要工具,适合初学者深入学习以奠定职业生涯基础。
114 1
|
4月前
|
机器学习/深度学习 架构师 数据库
20年老架构师,劝我多看看这几个网站
20年老架构师,劝我多看看这几个网站
|
5月前
|
弹性计算 负载均衡 关系型数据库
使用资源编排 ROS 轻松部署高可用架构网站——以 WordPress 为例
WordPress 是流行的开源 CMS,阿里云的资源编排服务 (ROS) 提供 IaC 功能,简化云上资源自动化部署,如创建 VPC、ECS、SLB、RDS 和弹性伸缩等。通过 ROS 模板(JSON/YAML),用户能快速部署高可用的 WordPress 环境,包括负载均衡、多可用区的 ECS 服务器集群、高可用 RDS 数据库等。模板定义了资源、参数和输出,用户在 ROS 控制台配置参数后一键部署。ROS 提升了部署效率,便于跨地域复制相同架构。
使用资源编排 ROS 轻松部署高可用架构网站——以 WordPress 为例
|
5月前
|
C#
效率提升利器:一个在线的.NET源码查询网站
效率提升利器:一个在线的.NET源码查询网站
|
7月前
|
消息中间件 存储 缓存
性能基础之大型网站技术架构模式
【2月更文挑战第15天】性能基础之大型网站技术架构模式
114 3
性能基础之大型网站技术架构模式
|
7月前
|
数据安全/隐私保护 Windows
.net三层架构开发步骤
.net三层架构开发步骤