微信号:ConnectHome

介绍:分享一些互联发展的感想,关于技术,市场和产品等.

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

2015-11-21 00:20 欧阳辰

有一家网站,全球流量排名第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


==============================================


关注“互联居”微信号,分享工作,技术和生活,专注架构,数据和质量。


 
互联居 更多文章 Github是如何干掉Google Code的! Google和Facebook不同的时间经济学 生活除了苟且,应该还有诗和远方 过去20年里数字营销的5个惊人教训 移动深度链接(Deep Link)的价值
猜您喜欢 数据类型与数据结构 微信爆破报告 苹果与Google的文化之咒 【机器学习】无监督学习之关联规则 从商业角度探讨API设计