2012-02-17 14:27:24来源:武汉北大青鸟光谷校区作者:北大青鸟宏鹏光谷校区
北大青鸟武汉宏鹏光谷校区:Tumblr150亿月浏览量背后的架构
主要数据
每天5亿次PV(页面访问量)
每月超过150亿PV
约20名工程师
峰值请求每秒近4万次
每天超过1TB数据进入Hadoop集群
MySQL/HBase/Redis/memcache每天生成若干TB数据
每月增长30%
近1000硬件节点用于生产环境
平均每位工程师每月负责数以亿计的页面访问
每天上传大约50GB的文章,每天跟帖更新数据大约2.7TB(CSDN注:这两个数据的比例看上去不太合理,据Tumblr数据科学家Adam Laiacano在Twitter上解释,前一个数据应该指的是文章的文本内容和元数据,不包括存储在S3上的多媒体内容)
软件环境
开发使用OS X,生产环境使用Linux(CentOS/Scientific)
Apache
PHP, Scala, Ruby
Redis, HBase, MySQL
Varnish, HAProxy, nginx
memcache, Gearman(支持多语言的任务分发应用框架), Kafka, Kestrel(Twitter开源的分布式消息队列系统), Finagle
Thrift, HTTP
Func——一个安、支持脚本的远程控制框架和API
Git, Capistrano(多服务器脚本部署工具), Puppet, Jenkins
硬件环境
500台Web服务器
200台数据库服务器(47 pool,20 shard)
30台memcache服务器
22台Redis服务器
15台Varnish服务器
25台HAproxy节点
8台nginx服务器
14台工作队列服务器(Kestrel + Gearman)
架构
1. 相对其他社交网站而言,Tumblr有其独特的使用模式:
每天有超过5千万篇文章更新,平均每篇文章的跟帖又数以百计。用户一般只有数百个粉丝。这与其他社会化网站里少数用户有几百万粉丝非常不同,使得Tumblr的扩展性具挑战性。
按用户使用时间衡量,Tumblr已经是排名第二的社会化网站。内容的吸引力很强,有很多图片和视频,文章往往不短,一般也不会太长,但允许写得很长。文章内容往往比较深入,用户会花费更长的时间来阅读。
用户与其他用户建立联系后,可能会在Dashboard上往回翻几百页逐篇阅读,这与其他网站基本上只是部分信息流不同。
用户的数量庞大,用户的平均到达范围更广,用户较频繁的发帖,这些都意味着有巨量的更新需要处理。
2. Tumblr目前运行在一个托管数据中心中,已在考虑地域上的分布性。
3. Tumblr作为一个平台,由两个组件构成:公共Tumblelogs和Dashboard
公共Tumblelogs与博客类似(此句请Tumblr用户校正),并非动态,易于缓存
Dashboard是类似于Twitter的时间轴,用户由此可以看到自己关注的所有用户的实时更新。与博客的扩展性不同,缓存作用不大,因为每次请求都不同,尤其是活跃的关注者。而且需要实时而且一致,文章每天更新50GB,跟帖每天更新2.7TB,所有的多媒体数据都存储在S3上面。
大多数用户以Tumblr作为内容浏览工具,每天浏览超过5亿个页面,70%的浏览来自Dashboard。
Dashboard的可用性已经不错,但Tumblelog一直不够好,因为基础设施是老的,而且很难迁移。由于人手不足,一时半会儿还顾不上。
Copyright (c) 2006-2024 武汉宏鹏教育咨询有限公司 版权所有 All Rights Reserved.