分享

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

 richard_168 2016-01-08

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

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

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

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

废话少说,一种图看懂它的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

关于作者

欧阳辰,小米公司,研发架构师和主管,曾就职于微软搜索技术中心,带领团队负责微软上下文广告平台,曾就职于甲骨文,从事数据库的研发工作。超过15年的软件开发经验,专注于架构,大数据和质量,毕业于北京大学计算机系。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多