蜻蜓
站标 提示 登录 忘了密码 注册 提示 10年3月17日 周三 23点47分
正五品下:朝议大夫|宁远将军级别 头像 积分:10498 乐善:586 声望:359
西电鲁丁 离线/隐身 家园 短信 加友 屏蔽
注册:2009-05-05 23:49:03

典藏版:信息技术 讨论区 大类:科技经济→版面:信息技术/入选/候选

10727/65 转发回复分页全看树展 850宝推收藏:70统计更多工具
o【半原创】Flickr 网站架构研究(1) [ 西电鲁丁 ] 于:2009-08-10 00:07:39 主题帖
引言

  Flickr.com 是网上最受欢迎的照片共享网站之一,还记得那位给Windows Vista拍摄壁纸的Hamad Darwish吗?他就是将照片上传到Flickr,后而被微软看中成为Vista壁纸御用摄影师。
  Flickr.com 是最初由位于温哥华的Ludicorp公司开发设计并于2004年2月正式发布的,由于大量应用了WEB 2.0技术,注重用户体验,使得其迅速获得了大量的用户,2007年11月,Flickr迎来了第20亿张照片,一年后,这个数字就达到了30亿,并且还在以加速度增长。
  2005年3月,雅虎公司以3千500万美元收购了Ludicorp公司和Flickr.com。虽然Flickr并不是最大的照片共享网站(Facebook以超过100亿张照片排名第一),但这笔收购仍然被认为是WEB 2.0浪潮中最精明的收购,因为仅仅一年后,Google就以16亿美元的高价收购了YouTube,而2007年10月,微软斥资2.4亿美元收购Facebook 1.6%股份,此举使Facebook估值高达150亿美元。估计Ludicorp公司的创始人Stewart Butterfield和Caterina Fake夫妇现在还在后悔吧。F
  在2005年温哥华PHP协会的简报以及随后的一系列会议上,Flickr的架构师Cal Henderson公开了大部分Flickr所使用的后台技术,使得我们能有机会来分享和研究其在构建可扩展Web站点的经验。F 本文大部分资料来自互联网和自己的一点点心得,欢迎大家参与讨论,要是能够起到抛砖引玉的作用,本人将不胜荣幸。

Flickr 网站架构综述


  在讨论Flickr 网站架构之前,让我们先来看一组统计数据(数据来源:April 2007 MySQL Conf and Expo和Flickr网站)

。每天多达40亿次的查询请求
。squid总计约有3500万张照片(硬盘+内存)
。squid内存中约有200万张照片
。总计有大约4亿7000万张照片,每张图片又生成不同尺寸大小的4-5份图片
。每秒38,000次Memcached请求 (Memcached总共存储了1200万对象)
。超过2 PB 存储,其中数据库12TB
。每天新增图片超过 40万(周日峰值超过200万,约1.5TB)
。超过8百50万注册用户
。超过1千万的唯一标签(tags)

  你如果觉得这些过时的数据都已经很惊人了,那么让我们来看看Cal Henderson在2008年9月的一次会议上公布的另一组数据,在短短的一秒钟内:

。响应4万个照片访问请求
。处理10万个缓存操作
。运行13万个数据库查询

  这张是Flickr的网站架构图,我们这里只作一些简要的描述,具体的分析请静待后续文章。
点看全图
。Pair of ServerIron's
  - Load Balancer
。Squid Caches
  - 反向代理,用于缓存静态的HTML和照片
。Net App'
  - NetApp 公司的Filer, NAS存储设备,用于存储照片
。PHP App Servers
  - 运行REDHAT LINUX,Apache上的PHP应用,Flickr网站的主体是大约6万行PHP代码
  - 没有使用PHP session, 应用是stateless,便于扩展,并避免PHP Server故障所带来的Session失效。
  - 每个页面有大约27~35个查询(不知道为什么这么设计,个人觉得没有必要F
  - 另有专门的Apache Web Farm 服务于静态文件(HTML和照片)的访问
。Storage Manager
  - 运行私有的,适用于海量文件存储的Flickr File System
。Dual Tree Central Database
  - MySQL 数据库,存放用户表,记录的信息是用户主键以及此用户对以的数据库Shard区,从中心用户表中查出用户数据所在位置,然后直接从目标Shard中取出数据。
  - “Dual Tree"架构是”Master-Master"和“Master-Slave"的有效结合,双Master 避免了“单点故障”,Master-Slave又提高了读取速度,因为用户表的操作90%以上是读。
。Master-master shards
  - MySQL 数据库,存储实际的用户数据和照片的元数据(Meta Data),每个Shard 大约40万个用户,120GB 数据。每个用户的所有数据存放在同一个shard中。
  - Shard中的每一个server的负载只是其可最大负载的50%,这样在需要的时候可以Online停掉一半的server进行升级或维护而不影响系统性能。
  - 为了避免跨Shard查询所带来的性能影响,一些数据有在不同的Shard有两份拷贝,比如用户对照片的评论,通过事务来保证其同步。
。Memcached Cluster
  - 中间层缓存服务器,用于缓存数据库的SQL查询结果等。
。Big Search Engine  
  - 复制部分Shard数据(Owner’s single tag)到Search Engine Farm以响应实时的全文检索。
  - 其他全文检索请求利用Yahoo的搜索引擎处理(Flickr是Yahoo旗下的公司F

服务器的硬件配置:
- Intel或AMD 64位CPU,16GB RAM
- 6-disk 15K RPM RAID-10.
- 2U boxes.

服务器数量:(数据来源:April 2008 MySQL Conference & Expo)
166 DB servers, 244 web servers(不知道是否包括 squid server?), 14 Memcached servers


关键词(Tags): 信息技术实用研究Flickr网站架构管理推:晨枫, 通宝推:邓侃,然后203,
铁手 入典。牛铃 选转。
10727/65 转发回复分页全看树展 850宝推收藏:70统计更多工具
被引用(5) 请拷贝:
※※※ 相关(回复)帖 ※※※
O 【半原创】Flickr 网站架构研究(1) 花85 O 西电鲁丁 字3856 阅10727 2009-08-10 00:07:39
O 【原创】Flickr 网站架构研究(7) 花16 西电鲁丁 字8498 阅818 2010-02-12 02:02:27
..O 用UDP来更新计数器那个 铁手 字466 阅302 2010-02-17 21:30:26
...O UDP肯定比数据库快,但不是总比TCP快 花2 西电鲁丁 字802 阅319 2010-02-17 22:28:14
O 【原创】Flickr 网站架构研究(6) 花17 西电鲁丁 字7053 阅1098 2010-01-24 18:54:32
O 什么时候写完?写完后搞个PDF合集,方便反复阅读。 邓侃 字70 阅511 2009-12-30 20:55:49
..O 抱歉,还有两篇,春节前一定写完。 花2 西电鲁丁 字0 阅493 2009-12-30 21:21:12
...O 花等好文 邓侃 字98 阅467 2009-12-31 01:49:12
... 共 》65《跟帖
Amazonɳ

Copyright © cchere 西西河 feed 西西河规 版主规范 帮西西河 帮助(FAQ) 版面介绍 发帖特殊效果 网站地图 关于西西河