Fotolog 的 Solaris/MySQL 架构
2011-09-14 09:24 周国选 阅读(454) 评论(0) 编辑 收藏 举报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 集群的架构:
GB 扩展后的架构:
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 从不同块读取数据:
后来改成 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 产品的主要技术是:分布式多态集群、虚拟化、自动精简配置、精简备份以及高性能 RAID 5,其中最突出的优势是自动精简配置。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 actual data is written, the system tells us when it needs more capacity—which is added simply and non-disruptively. With 3PAR, we’ve cut our monthly storage 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 了。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?