导读:著名的轻博客服务Tumblr和很多新兴网站一样,在快速发展中面临着系统架构的瓶颈。Tumblr拥有每天5亿的页面浏览量,每秒40,000个请求的峰值,每天3TB的新数据存储,以及超过1,000台服务器,因此面临着如何确保旧系统平稳运行和平稳过渡到新系统的巨大挑战。最近,HighScalability网站的托德·霍夫(ToddHoff)采访了该公司的分布式系统工程师布莱克·马西尼(BlakeMatheny),并撰写了一篇系统介绍该网站架构的文章。内容很有价值。我们也非常希望国内的公司和团队能多做一些类似的分享,为社区做贡献,同时提升自己在江湖中的地位,有利于招聘和业务发展。欢迎给我们投稿。
以下是翻译。(括号内的小字由CSDN编辑注明):
Tumblr每月浏览量超过150亿次,已经成为一个受欢迎的博客社区。也许用户喜欢它的简洁、美观,强烈关注用户体验,或者友好、忙碌的交流。总之是受人欢迎的。
月增长30%以上当然不可能没有挑战,尤其是可靠性问题。每天5亿的页面浏览量,每秒40000个请求的峰值,每天3TB的新数据存储,在1000多台服务器上运行,所有这些都帮助Tumblr实现了巨大的运营规模。
初创公司要想成功,必须要经历一段高速发展的危险期。找人才,不断改造基础设施,维护旧的,同时面对每个月越来越大的流量,原来只有四个工程师。这意味着不得不做出艰难的选择,什么该做,什么不该做。这就是Tumblr的情况。幸运的是,现在有20名工程师可以有精力解决问题,并开发一些有趣的解决方案。
Tumblr一开始就是典型的灯应用。目前正在向分布式服务模式演进,基于Scala、HBase、Redis(著名的开源K-V存储方案)、Kafka(Apache项目,来自LinkedIn的分布式发布-订阅消息系统)、Finagle(来自Twitter的容错、协议中立的RPC系统开源),以及支持Dashboard的有趣的基于单元的架构(CSDN注:Tumblr与众不同
Tumblr目前最大的问题是如何转型为大型网站。系统的架构正在从LAMP向最先进的技术组合发展。同时,团队要从小型创业型发展到全副武装的正规开发团队,不断创造新的功能和基础设施。以下是BlakeMatheny对Tumblr系统架构的介绍。
网址
http://www.Tumblr.com/
主要数据
每天5亿PV次(页面访问量)
每月超过150亿PV
大约20名工程师
峰值请求接近每秒40,000次
每天有超过1TB的数据进入Hadoop集群。
MySQL/hbase/redis/memcache每天都会产生数TB的数据。
每月增长30%
生产环境中使用了近1000个硬件节点。
平均每个工程师每月要负责上亿的页面访问量。
每天上传50GB左右的文章,每天更新2.7TB左右的数据。
软件环境
OSX用于开发,Linux(CentOS/Scientific)用于生产。
阿帕奇
PHP,Scala,Ruby
Redis,HBase,MySQL
清漆、HAProxy、nginx
memcache、Gearman(支持多种语言的任务分发应用框架)、Kafka、Kestrel(Twitter开源分布式消息队列系统)、Finagle
节俭,HTTP
安全的远程控制框架和API支持脚本
Git,Capistrano,Puppet,Jenkins
硬件环境
500台Web服务器
200个数据库服务器(47个池,20个碎片)
30台memcache服务器
22台Redis服务器
15台Varnish服务器
25个羟基节点
8台nginx服务器
14个工作队列服务器(Kestrel+Gearman)
架构
1。与其他社交网站相比,Tumblr有其独特的使用模式:
每天更新5000多万条,平均每条几百个帖子。一般用户只有几百个粉丝。这与其他少数用户拥有数百万粉丝的社交网站截然不同,这使得Tumblr的可扩展性极具挑战性。
Tumblr已经是用户时长排名第二的社交网站。内容很吸引人,有很多图片和视频。文章往往不短,一般也不会太长,但允许写长。文章倾向于深入,用户会花更长的时间去阅读。
用户和其他用户连接后,可能会把Dashboard上的几百页翻回来,一页一页的看,和其他网站不一样,基本上只是部分信息流。
用户数量庞大,用户平均到达范围更广,用户发帖频繁,这些都意味着有海量的更新需要处理。
2。Tumblr目前运行在一个托管的数据中心,其地域分布已被考虑。
3。作为一个平台,Tumblr由两个组件组成:公共Tumblelogs和Dashboard。
公共Tumblelogs类似于博客(请Tumblr用户更正这句话),没有动态性,容易缓存。
Dashboard是一个类似Twitter的时间线,用户可以从这个时间线上看到自己关注的所有用户的实时更新。与博客的可扩展性不同,缓存几乎没有影响,因为每个请求都是不同的,尤其是对于活跃的追随者。此外,它还需要具有实时性和一致性。文章每天更新只有50GB,帖子每天更新2.7TB。所有多媒体数据都存储在S3上。
大多数用户使用Tumblr作为内容浏览工具,每天浏览超过5亿个页面,其中70%的浏览来自Dashboard。
Dashboard的可用性一直不错,但Tumblelog一直不够好,因为基础设施老旧,难以移植。由于人手不足,一时半会儿照顾不了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)