在短短的三个月时间内,朋友买卖成为facebook前十名的应用,它每秒钟处理200个请求,每月产生300 000 000个page view。在技术上,选择了Ruby on Rails框架,两个兼职程序员,一打服务器,和优秀的架构。
架构
l Ruby on Rails
l CentOS 5(64bit)
l Capistrano 升级和重启应用服务器
l Memcached
l Mysql
l Nginx
l Starling 分布式队列服务
l Softlayer 堡垒主机
l Pingdom 站点监视器
l LVM 逻辑卷管理器
l Dr.Nics Magic Multi-Connections Gem 数据库读写分离
当前情况
l Facebook十大热门应用
l 将近600 000活跃用户
l 每天500000独立用户访问量并保持持续增长
l 300 000 000 page view 每月
l 每月300%的稳定增长率
l 上个月2100 000 000的独立用户
l 每秒处理200次请求
l 每月5TB的流量
l 两个兼职开发者(目前一个全职),一个远程DBA支持
l 4台数据库服务器,6台应用服务器,a staging server, a front end server
六台 4核 8G内存 应用服务器
每个应用服务器建立16个mongrels一共是96个mongrels
系统设计目标:
支撑facebook应用-买卖朋友。
它基于一个波动的金融市场。
目前它是facebook排名前十的热门应用。
Tips:像买卖宠物一样买卖好友!你可以玩弄他,送礼物,或者用来炫耀。精明的投资者会把他的朋友发展成人们的货物,其实这只是满足
为什么做这个系统:
做这个系统更多的是为了测试和了解facebook这个系统
设计系统的时候,在设计,架构和实现方面有什么挑战和创新?
因为作为facebook的应用,每个请求都不能使用缓存页面,因此,它是一个时实行,并且写操作频繁的系统,对数据库优化要求比较高。
如何应付这些挑战?
我们采用memcached作为中间层,每个请求都不直接访问数据库。使用Rail's fragment caching缓存表现层。
系统目前是什么规模?
昨日访问量是500 000个独立用户并且访问量一直在增长。根据统计反馈,本月有 300 000 000 的page view。
带宽使用状况
上月产生了3T的流量,这月最少5T,内容仅仅是一些图标和xhtml/css。
文件数目,图片数目,和数据情况