Stack Overflow 2016最新架构探秘

基本规则

首先给出全局的通用规则数据库

  • 万事须要备份
  • 全部服务器和网络交换机要至少 2 x 10Gbps 带宽
  • 全部服务器配备两个电源(带有 UPS 电源备用)
  • 全部服务器在机架A和B上互为冗余
  • 全部服务器和服务都有异地双活(纽约机房和科罗拉多州机房)

网络服务

首先,用户去 Stack Overflow 网站浏览就要经过 Internet。为了让用户浏览网站的速度更快 Stack Overflow 采用 CloudFlare 的 CDN 加速。这里使用 CloudFlare 服务是由于它们的 CDN 服务器遍及全球。缓存

紧接着,用户的 HTTP 流量经过四大 ISP 提供商(Level 3,Zayo,Cogent 和 Lighttower),通过四台路由器。Stack Overflow 经过标准的边界网关协议(BGP)来均衡全部的流量以便用户更有效率的打开网站。Stack Overflow 的工程师 Nick Craver 建议在两个异地数据中心采用一个 10 Gbps MPLS,这样在出现突发状况下能够快速的恢复和复制数据。安全

负载均衡(HAProxy)

负载均衡使用的 HAProxy 1.5.15 和 CentOS 7,并在 HAProxy 加入安全传输层协议(TLS/SSL)。后续会升级 HAProxy 到 1.6 版原本支持 HTTP/2。服务器

负载均衡器配备 2 对 10Gbps 网络。Stack Overflow 经过加内存来有效的解决安全套接层(SSL)问题。缓存安全传输层协议(TLS)会话到内存加以重复使用,这样能够减小对于同一台客户端链接的重复计算,到达提高会话的速度和成本。何况 RAM 至关便宜,实现了共赢的效果。网络

负载均衡器的设置是至关的简单。它们监听各路 IPs,并进行路由分发。Stack Overflow 还作了负载均衡限流和监控 HAProxy 的日志作到及时报警。架构

数据库(SQL Server)

SQL Server 是 Stack Overflow 惟一的源数据库,全部 Elastic 和 Redis 的数据都来自 SQL Server。使用微软的 SQL Server 监控组件 AlwaysOn Availability Groups 部署了两个 SQL Server 集群。每一个集群有一个主库,一个数据备份在纽约,另外一个数据备份在 Colorrado 数据中心。全部备份是异步复制。负载均衡

第一个集群硬件配置:Dell R720xd 服务器,384G 内存,4TB SSD 存储,双 12 核 CPU;第二个集群硬件配置:Dell R730xd 服务器,768G 内存,4TB SSD 存储,双 8 核 CPU。异步

全部数据库过去 24 小时 CPU 监控图如图 7 所示,大部分状况 CPU 使用率较低,偶尔作下缓存任务时会高些。图中 NY-SQL02 和 04 是主库,01 和 03 是备份库。网站

图7日志

纵观全文,Stack Overflow 总体架构并无采用那些很是高端的技术,却造就了一个 IT 界最受欢迎的问答网站之,这是很是不错的。其中每项使用到的技术都进行了深刻的研究并开源分享给社区,国内的公司能够从中得到一些启发。

相关文章
相关标签/搜索