Tumblr:150亿月浏览量背后的架构挑战
软件部署 开发了一套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的工程师 多交流,从他们身上可以学到很多 对技术要循序渐进,在正式投入使用之前他们煞费苦心的学习HBase和Redis。同时在试点项目中使用 或将其控制在有限损害范围之内。 翻译:包研,张志平 英文原文出自High Scalability (编辑:云计算网_泰州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |