返回 登录
0

StackOverflow的最新架构:.NET技术+25台服务器怎样支撑世界第53大网站

HighScalability的文章总结了搞技术的必去的StackOverflow最新的架构信息。主要的信息来源还是Nick Craver去年11月的博客文章和Marco Cecconi几乎同期在Developer Conference 2013上的演讲

虽然Marco Cecconi今年还在世界好几个地方(包括QCon北京)讲过,但大致的内容没有变。除此外,Hacker News(12)和Reddit上的讨论也透露了更多信息。

目前,StackOverflow(准确的说应该是StackExchange)已经是一个规模很大的网站群,有120个网站,每月新增三四个;550万用户;920万问题,1600万答案;每月浏览数超过5亿,排名世界53名上下。每年仍在倍增。

http://img.my.csdn.net/uploads/201407/23/1406092010_7316.png

而这样的规模,他们的研发与运维团队只有不到30人(他们总员工数已经超过150,其中大部分是销售和猎头,还有两个厨师,哈哈),其中SRE(系统可靠性工程师,这个是运维工程师的时髦叫法)5人,核心开发(问答网站)6-7人,核心移动开发6人,招聘业务开发7人。大多数员工都是远程办公。运维和开发团队关系紧密,经常有人员流动。纽约的办公室里大部分是销售人员,丹佛和伦敦办公室全部都是销售。

他们习惯于在自己的社区里招聘,喜欢乐于编程、帮助他人和沟通的人。

基础设施方面,他们只用了25台服务器,主体仍然是微软.NET技术架构。只在需要的地方用Linux(比如Redis服务器)。

服务器和其他硬件的数量和配置是:

  • 4台数据库服务器(SQL Server),每台384GB RAM,2TB SSD,平均CPU利用率是10%,只在备份时会较高
  • 11台Web服务器(IIS),每台2x320GB SSD,RAID 1,10%-15% CPU负载
  • 3台搜索服务器(ElasticSearch),每台300GB内存,另加SSD
  • 40:60读写率
  • 2台负载均衡服务器(HAProxy),1台活动
  • 3台应用服务器(实现了tag引擎功能),负责任何按标签的搜索
  • 2台分布式缓存和消息处理服务器(Redis)
  • 2台网络交换机(每个都是Cisco Nexus 5596 + Fabric Extenders)
  • 2台Cisco 5525-X ASA防火墙
  • 2台Cisco 3945路由器
  • 2台只读SQL Server服务器,主要用于Stack Exchange API
  • 虚拟机用于部署、域控制器、监控、运维数据库等场合

他们仍然采用向上扩展的策略,没有用云。为什么呢?

主要是因为成本。比如,他们的SQL Server服务器配置是384GB RAM,2TB SSD。这种配置的Dell服务器也就5000美元,如果用AWS可不便宜(有人估算短租每月要5万多美元),而且现在AWS还没有SQL Server企业版选项。另外,云会使系统的优化和故障诊断更困难,增加的人工成本也不划算(他们创始人Jeff Atwood有名言“硬件不值钱,程序员才贵!”)。因为网站的业务已经比较稳定,增长和峰值负载可控,他们也没有水平扩展的需要。事实上,由于服务器的配置很高,CPU负载一般保持在较低水平,整个网站5台服务器就可以支撑。

此外,类似规模的网站如果采用水平扩展,往往需要100~200台服务器。

所以,技术世界里没有一定之规,具体情况具体分析非常重要。就像Marco Cecconi强调的,谈架构的时候必须先回答这事儿:你到底要解决什么问题?

(未完待续)

评论