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 界最受欢迎的问答网站之,这是非常不错的。其中每项使用到的技术都进行了深入的研究并开源分享给社区,国内的公司可以从中获得一些启发。

原文地址:https://www.cnblogs.com/stopfalling/p/5375728.html