首先給出全局的通用規則:數據庫
首先,用戶去 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 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 是 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 界最受歡迎的問答網站之,這是很是不錯的。其中每項使用到的技術都進行了深刻的研究並開源分享給社區,國內的公司能夠從中得到一些啓發。