找回密码
 骑士注册

QQ登录

微博登录

搜索
❏ 站外平台:

Linux中国开源社区 技术 查看内容

Tumblr 架构设计

| 2013-05-26 21:58      

  最近的新闻中我们得知雅虎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应用。目前正在向分布式服务模型演进,该模型基于ScalaHBaseRedisKafkaFinagle,此外还有一个有趣的基于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 数据库服务器 (大多数是备用池)
    • 47 个池
    • 30 个分区
  • 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一直不够好,因为基础设施是老的,而且很难迁移。由于人手不足,一时半会儿还顾不上。
123下一页
查看其它分页:

收藏


最新评论

我也要发表评论

返回顶部

分享到微信

打开微信,点击顶部的“╋”,
使用“扫一扫”将网页分享至微信。