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

相關文章
相關標籤/搜索