会员登录 | 会员注册 | 意见建议 | 网站地图

站长资源综合门户

当前位置:首页 > 站长学院 > 服务器 > Tumblr:150亿月浏览量背后的架构挑战

Tumblr:150亿月浏览量背后的架构挑战

时间:2012-02-27 21:06:53   作者:   来源:   点击:

不同的用户采用不同并且恰当的存取模式和分布模型,两个不同的分布模式包括:一个适合受欢迎的用户,一个使用大众。

依据用户的类型采用不同的数据处理方式,活跃用户的发言并不会被真正发布,发言将被有选择的体现。(果真如此?请Tumblr用户纠错)

追随了上百万用户的用户,将像拥有上百万追随者的用户那样对待。

cell的大小非常难于决定。cell的大小直接影响网站的成败。每个cell归于的用户数量是影响力之一。需要权衡接受怎样的用户体验,以及为之付出多少投资。

从firehose中读取数据将是对网络最大的考验。在cell内部网络流量是可管理的。

当更多cell被增添到网络中来,他们可以进入到cell组中,并从firehose中读取数据。一个分层的数据复制计划。这可以帮助迁移到多个数据中心。

在纽约启动运作

纽约具有独特的环境,资金和广告充足。招聘极具挑战性,因为缺乏创业经验。

在过去的几年里,纽约一直致力于推动创业。纽约大学和哥伦比亚大学有一些项目,鼓励学生到初创企业实习,而不仅仅去华尔街。市长建立了一所学院,侧重于技术。

团队架构

团队:基础架构,平台,SRE,产品,web ops,服务;

基础架构:5层以下,IP地址和DNS,硬件配置;

平台:核心应用开发,SQL分片,服务,Web运营;

SRE:在平台和产品之间,侧重于解决可靠性和扩展性的燃眉之急;

服务团队:相对而言更具战略性,

Web ops:负责问题检测、响应和优化。

软件部署

开发了一套rsync脚本,可以随处部署PHP应用程序。一旦机器的数量超过200台,系统便开始出现问题,部署花费了很长时间才完成,机器处于部署进程中的各种状态。

接下来,使用Capistrano(一个开源工具,可以在多台服务器上运行脚本)在服务堆栈中构建部署进程(开发、分期、生产)。在几十台机器上部署可以正常工作,但当通过SSH部署到数百台服务器时,再次失败。

现在,所有的机器上运行一个协调软件。基于Redhat Func(一个安全的、脚本化的远程控制框架和接口)功能,一个轻量级的API用于向主机发送命令,以构建扩展性。

建立部署是在Func的基础上向主机发送命令,避免了使用SSH。比如,想在组A上部署软件,控制主机就可以找出隶属于组A的节点,并运行部署命令。

部署命令通过Capistrano实施。

Func API可用于返回状态报告,报告哪些机器上有这些软件版本。

安全重启任何服务,因为它们会关闭连接,然后重启。

在激活前的黑暗模式下运行所有功能。

展望

从哲学上将,任何人都可以使用自己想要的任意工具。但随着团队的发展壮大,这些工具出现了问题。新员工想要更好地融入团队,快速地解决问题,必须以他们为中心,建立操作的标准化。

过程类似于Scrum(一种敏捷管理框架),非常敏捷。

每个开发人员都有一台预配置的开发机器,并按照控制更新。

开发机会出现变化,测试,分期,乃至用于生产。

开发者使用VIM和TextMate。

测试是对PHP程序进行代码审核。

在服务方面,他们已经实现了一个与提交相挂钩的测试基础架构,接下来将继承并内建通知机制。

招聘流程

面试通常避免数学、猜谜、脑筋急转弯等问题,而着重关注应聘者在工作中实际要做什么。

着重编程技能。

面试不是比较,只是要找对的人。

挑战在于找到具有可用性、扩展性经验的人才,以应对Tumblr面临的网络拥塞。

在Tumblr工程博客(Tumblr Engineering Blog),他们对已过世的Dennis Ritchie和John McCarthy予以纪念。

经验及教训

自动化无处不在

MySQL(增加分片)规模,应用程序暂时还不行

Redis总能带给人惊喜

基于Scala语言的应用执行效率是出色的

废弃项目——当你不确定将如何工作时

不顾用在他们发展经历中没经历过技术挑战的人,聘用有技术实力的人是因为他们能适合你的团队以 及工作。

选择正确的软件集合将会帮助你找到你需要的人

建立团队的技能

阅读文档和博客文章。

多与同行交流,可以接触一些领域中经验丰富的人,例如与在Facebook、Twitter、LinkedIn的工程师 多交流,从他们身上可以学到很多

分享到:

网友评论

推荐服务器

热门服务器