最近的新闻中我们得知雅虎11亿美元收购了Tumblr: Yahoo bought Tumblr for $1.1 billion. 你也许会发现Instagram也被Facebook重金收购的介绍. 这是一个巧合吗?这就由你来判断吧
为什么雅虎会收购Tumblr? 这场交易中的商业价值我可能无法判断,但是如果你对Tumblr的技术方面有所了解,你一定会为Tumblr竖起大拇指. 为什么这么说呢,请接着读...
Tumblr每月页面浏览量超过150亿次,已经成为火爆的博客社区。用户也许喜欢它的简约、漂亮,并且它对用户体验强烈的关注,或是友好而忙碌的沟通方式,总之,它深得人们的喜爱。
每月超过30%的增长当然不可能没有挑战,其中可靠性问题尤为艰巨。每天5亿次浏览量,峰值每秒4万次请求,每天3TB新的数据存储,并运行于超过1000台服务器上,所有这些帮助Tumblr实现巨大的经营规模。
创业公司迈向成功,都要迈过危险的迅速发展期这道门槛。寻找人才,不断改造基础架构,维护旧的架构,同时要面对逐月大增的流量,而且曾经只有4位工程师。 这意味着必须艰难地选择应该做什么,不该做什么。这就是Tumblr的状况。好在现在已经有20位工程师了,可以有精力解决问题,并开发一些有意思的解决 方案。
Tumblr最开始是非常典型的LAMP应用。目前正在向分布式服务模型演进,该模型基于Scala、HBase、Redis、Kafka、Finagle,此外还有一个有趣的基于Cell的架构,用于支持Dashboard .现在的重点被放在了解决他们PHP程序中的短期问题,找出问题,并正确的使用服务化去解决他们.
Tumblr目前的最大问题是如何改造为一个大规模网站。系统架构正在从LAMP演进为最先进的技术组合,同时团队也要从小的创业型发展为全副武装、随时待命的正规开发团队,不断创造出新的功能和基础设施。下面就是Blake对Tumblr系统架构情况的介绍。
Tumblr网址: http://www.tumblr.com/
统计
- 每天 5 亿页面浏览量
- 每月超过 150亿 页面浏览量
- 约 20 名工程师
- 峰值每秒大约 4 万请求
- 每天有超过 1TB 的数据进入 Hadoop 集群
- 每天有几个 TB 的数据进入 MySQL/HBase/Redis/Memcache
- 每月增长 30%
- 产品环境有大约 1000 个硬件节点
- 平均每个工程师每月处理10亿页面访问
- 每天大约 50GB 的文章,关注者列表更新大约每天 2.7TB
- Dashboard 每秒百万次写,每秒 5w 读
软件
- OS X 用于开发,产品环境用 Linux (CentOS, Scientific)
- Apache
- PHP, Scala, Ruby
- Redis, HBase, MySQL
- Varnish, HA-Proxy, nginx,
- Memcache, Gearman, Kafka,Kestrel, Finagle
- Thrift, HTTP
-
Func - 一个安全的、脚本化的远程控制框架和 API
- Git, Capistrano, Puppet, Jenkins
硬件
- 500 台 Web 服务器
- 200 数据库服务器 (大多数是备用池)
- 30 台 memcache 服务器
- 22 台 redis 服务器
- 15 台 varnish 服务器
- 25 个 haproxy 节点
- 8 个 nginx
- 14 个作业队列服务器 (kestrel + gearman)
构架
- 与其他社交网站不同的是,Tumblr有其独特的使用模式。
- 每天有超过5千万篇文章更新,平均每篇文章的跟帖又数以百计。用户一般只有数百个粉丝。这与其他社会化网站里少数用户有几百万粉丝非常不同,使得Tumblr的扩展性极具挑战性。
- 按用户使用时间衡量,Tumblr已经是排名第二的社会化网站。内容的吸引力很强,有很多图片和视频,文章往往不短,一般也不会太长,但允许写得很长。文章内容往往比较深入,用户会花费更长的时间来阅读。
- 用户与其他用户建立联系后,可能会在Dashboard上往回翻几百页逐篇阅读,这与其他网站基本上只是部分信息流不同。
- 用户的数量庞大,用户的平均到达范围更广,用户较频繁的发帖,这些都意味着有巨量的更新需要处理。
- Tumblr目前运行在一个托管数据中心中,已在考虑地域上的分布式构架。
- Tumblr平台由两个组件构成:公共Tumblelogs和Dashboard
- 公共Tumblelogs与博客类似,并非动态,易于缓存
- Dashboard是类似于Twitter的时间轴,用户由此可以看到自己关注的所有用户的实时更新。
- 与博客的扩展性不同,缓存作用不大,因为每次请求都不同,尤其是活跃的关注者。
- 而且需要实时而且一致,文章每天仅更新50GB,跟帖每天更新2.7TB,所有的多媒体数据都存储在S3上面。
- 大多数用户以Tumblr作为内容浏览工具,每天浏览超过5亿个页面,70%的浏览来自Dashboard。
- Dashboard的可用性已经不错,但Tumblelog一直不够好,因为基础设施是老的,而且很难迁移。由于人手不足,一时半会儿还顾不上。