Fotolog

Fotolog 是一个以图片为主的 SNS 网站,让 VPSee 好奇的是用 Solaris 的 Web 2.0 站点不多,看看 Fotolog 有没有什么新东西。
数据

数据和图片来源(2007):Fotolog: Scaling the World’s Largest Photo Blogging Community


超过1100万用户
超过24亿条评论
每个月超过35亿 PV 和 2000万独立访问,Alexa Top 20
总共有超过2亿张的图片,每天还有超过50万张照片上传
20%用户每天在 Fotolog 停留 24分钟
32台 MySQL 服务器和一个由30台 memcached 服务器组成的集群

技术平台

Solaris 10
MySQL
Apache
Java / Hibernate
PHP
Memcached
3PAR
IBRIX
CDN

MySQL

32台 MySQL 服务器被分成4个集群:User, GB (guest book), PH (photos), FF (friends and favorites lists)。每个集群又被分成一个 shard 集,并由一个应用服务器集做前端。每个 shard 集包括若干个 MySQL 服务器,一个只写的 Master-Master 配几个只读的 Slaves,应用服务器把读请求发给 Slaves,把写请求发给 Master。MySQL 只存储图像的 metadata,没人想要把图像存到数据库里吧?什么是 metadata?metadata 是 “data about other data”,如一张照片的 metadata 就是一些包括:作者,年份,照片说明,摄影设备等信息就是这张照片的 metadata。

GB 集群的架构

下载 (26.19 KB)
2010-3-11 12:09


GB 扩展后的架构:

 

下载 (39.3 KB)
2010-3-11 12:10



Fotolog 开始用的是 MyISAM 引擎,表结构:


CREATE TABLE `guestbook_v3` (
   `identifier` bigint(20) unsigned NOT NULL auto_increment,
   `user_name` varchar(16) NOT NULL default ”,
   `photo_identifier` bigint(20) unsigned NOT NULL default ‘0′,
   `posted` datetime NOT NULL default ‘0000-00-00 00:00:00′,
   …
   PRIMARY KEY   (`identifier`),
   KEY `guestbook_photo_id_posted_idx` (`photo_identifier`,`posted`)
) ENGINE=MyISAM


执行数据库查询的时候,需要6次磁盘 IO 从不同块读取数据:

下载 (28.88 KB)
2010-3-11 12:11



后来改成 InnoDB,表结构改成:


CREATE TABLE `guestbook_v4` (
   `identifier` int(9) unsigned NOT NULL auto_increment,
   `user_name` varchar(16) NOT NULL default ”,
   `photo_identifier` int(9) unsigned NOT NULL default ‘0′,
   `posted` timestamp NOT NULL default ‘0000-00-00 00:00:00′,

   PRIMARY KEY (`photo_identifier`,`posted`,`identifier`),
   KEY `identifier` (`identifier`)
) ENGINE=InnoDB 1 row in set (7.64 sec)


改成 InnoDB 后,只需要2次磁盘 IO 读取,大大减少了磁盘操作:


InnoDB 是以 primary key 来存放数据到磁盘上的,而 MyISAM 是以插入数据的顺序来存放数据的,这样 InnoDB有个潜在的好处就是如果以 primary key 来查询数据的话,磁盘 IO 操作就可以一次读取需要的数据(因为它们都在一起),不必像MyISAM 那样从磁盘的不同位置执行多个 IO 操作来得到数据。简单的说就是 InnoDB 在查询的时候减少了磁盘 IO操作的次数,从而获得了潜在的性能提升。Fotolog 正是利用了 InnoDB 的 这个优点。
3PAR 和 IBRIX
在DELL、EMC、日立、HP、IBM、NetApp、Sun等公司把持的存储市场,还能冒出个 3PAR 出来,显示了 3PAR的特别和技术特色。3PAR 产品的主要技术是:分布式多态集群、虚拟化、自动精简配置、精简备份以及高性能 RAID5,其中最突出的优势是自动精简配置。3PAR 在 Internet/Web 2.0 行业有几个重量级客户:myspace.com,ask.com, fotolog.com, shopzilla.com 等。
Fotolog CTO 解释了为什么用 3PAR:


With 3PAR Thin Provisioning, you set it up and walk away. As actualdata is written, the system tells us when it needs more capacity—whichis added simply and non-disruptively. With 3PAR, we’ve cut our monthlystorage administration time from 40 hours to 30 minutes.
-Nathan Boeger
Director of Network Operations, Fotolog


IBRIX 是一家做文件服务器集群的存储公司,最近刚被 HP 收购,重量级客户有:AOL, Fotolog, RealNetworks, Disney, DreamWorks, 等。

Memcached Cluster
Fotolog 用50台 memcached 服务器连成一个集群,总共 cache 加起来差不多 150GB,能应付每个月40亿左右的PV。使用 memcached 后,高峰时期网站 load 时间从 10秒降到2秒。Memcached 已经是动态网站的标配,LAMP 的 M现在应该包括 MySQL 和 Memcached 了。

来源:http://www.vpsee.com/2009/07/fotolog-solaris-mysql-arch/

你可能感兴趣的:(职场,休闲,Fotolog)