全球流量第56位的网站,什么架构让它只有23台服务器?

2015-11-27   出处: 互联居  作/译者:欧阳辰

有一家网站,全球流量排名第56位,但是只有23台服务,这是什么神奇的软件架构在支持,它是如何做到的?这家公司就是StackOverflow,程序员应该都知道,不知道的码农以后一定会用到的,特别是一些诡异Exception的查找,很多线索都在StackOverflow。


StackOverflow的全球流量排名是56名,比较类似流量的网状还有(jd.com78名,sohu.com 43名)。该网站在印度的排名是14名,美国排名是84,中国的排名是275名,看起来还是印度的码农多啊,中国赶双十一买东西的人多。

废话少说,一种图看懂它的23台服务器,2台接入服务器,9台Web服务器(64G Windows),4台MySQL(384G,1.2T SSD, Linux),2台Redis(96G),3台ElasticSearch(196G,Linux),3台标签服务器(32G)。不用介绍,几个模块各司其职,逻辑都在Web服务器,Redis当作Cache,ES服务做搜索索引,Tag服务用于文章的标签管理。

StackOverflow的技术VP David在回答他们是如何做到的,总结了2点:

1.这个软件架构是很"烂"(Boring)的

2.保持一个很“烂"的架构是非常有趣的


在这么“烂”的架构下,这么少的机器数量,居然能够支持巨大的访问量,而且所有机器的CPU都不到10%,真是有些羡慕嫉妒恨啊:

-9.4M 问题

-16M 回答

-45M 月活跃人数

-用户 QPS 顶峰3000/s

-SQL QPS 顶峰8000/s


再看看他们的研发团队,34个开发人员(全栈工程师),6系统管理员,6个设计人员。75%的人都是远程工作,分布在世界各地。


他们的架构理念是什么?David总结了三部曲

1. 从自己熟悉的技术开始

公司开始的时候,程序员熟悉.NET,那么他们采用ASP.NET,不断的用精,用深,一直到现在。最初使用的技术包括,ASP.NET MVC, LINQ2SQL 。他们也曾经考虑过转型,但是现在的架构,能够支持业务的发展,为什么不用呢? 不用云也可以做的很出色的。


2. 在产品中的度量(Measure it live)

性能是非常重要的功能(Feature),性能测试需要在产品中进行,才能真正得到靠谱的数据,这也是在产品中测试的概念(Testing in Production)。设计好测量方法,通过数据结果进行判断。下面就是一个性能示意图。


3. 修复性能问题

当局部的性能有问题,就应该开始修复,不要等到整个系统都变慢的时候才开始考虑性能问题。提早发现和解决性能问题,将会避免整个产品的悲剧。StackOverflow也通过引入很多新技术和模块,提升了性能,例如通过Redis增加Cache能力,通过ElasticSearch提升搜索的性能。部署的时候也是通过增大内存,保证所有的数据内存可用,无需访问磁盘或者SSD。


虽然,整个架构看起来很Low,但是对他们业务来说,已经用的很好了,任何一个架构都是为业务服务的。这虽然是一个朴素的“单体”架构,通过增加内存Scale Up,最简单的方法解决业务增长的问题。


给自己的几个思考

  1. 业务是推进架构的演化和升级的原动力

  2. 加大数据度量,数据是所有决策的基础,不要赶时髦,人云亦云

  3. 利用自己熟悉的技术解决问题,数据化衡量新技术引入复杂度和新问题


参考文章:

《Scaling Stack Overflow》David Fullerton, VP Engineering • QCon NYC • 2015-06-12


声明:本文为本站编辑转载,文章版权归原作者所有。文章内容为作者个人观点,本站只提供转载参考(依行业惯例严格标明出处和作译者),目的在于传递更多专业信息,普惠测试相关从业者,开源分享,推动行业交流和进步。 如涉及作品内容、版权和其它问题,请原作者及时与本站联系(QQ:1017718740),我们将第一时间进行处理。本站拥有对此声明的最终解释权!欢迎大家通过新浪微博(@测试窝)或微信公众号(测试窝)关注我们,与我们的编辑和其他窝友交流。
265° /2651 人阅读/0 条评论 发表评论

登录 后发表评论
最新文章