大型網站後臺架構的演變css
隨着用戶訪問量的不斷增長,網站的後臺也會不斷變化以應對需求。本文主要從一個小型網站到大型網站的過分與變化來陳述。前端
主要指由web server 、應用服務器、數據庫、存儲、監控等組成的網站後臺系統。web
我的站點後臺架構。如圖2-1所示。數據庫
圖2-1 單臺一組後端
如圖所示,若是是我的站點,訪問量不大,通常都是將web server、應用服務器、數據庫部署在一臺物理服務器上。從圖中也能夠看到,一個網站最基本的後臺須要web server、應用服務器、數據庫三部分組成。緩存
考慮到網站訪問量的不斷增長,網站的後臺架構也必須不斷調整和優化,進一步實現功能分離。特別是隨着訪問量不斷增長以及考慮到數據庫的負載和數據的重要性,數據庫須要分離出來。從web server到數據庫實現各個層次的負載均衡。安全
考慮到數據庫的安全性和處理性能,數據庫單臺部署。如圖2-2-1-1所示。服務器
圖2-2-1-1 數據庫分離架構
如圖所示,數據庫與web server 、應用服務器分離出來,單臺部署。這樣作有兩個好處:負載均衡
(1)數據庫服務器性能提升,再也不和webserver 、應用服務器搶佔資源。
(2)數據庫服務器安全性能提升,不會由於一臺服務器宕機而影響全部服務,特別是數據庫服務。
隨着訪問量的不斷增長,單臺web server 負載會加大,甚至有宕機的危險,因此須要在前端增長負載均衡器,實現web server層的負載均衡。緩解壓力。如圖2-2-1-2所示。
2-2-1-2 前端負載均衡
如圖所示,經過增長web server並用負載均衡器(load balance)來緩解前端的web server和應用服務器壓力。而且,爲了保證數據庫的絕對安全,作了Master-Slave主從備份。這樣當master db宕機以後,slave db能夠當即啓用。因此這樣作有如下好處:
(1) 前臺web server 和 應用服務器壓力減小,負載均衡器分流負載。
(2) 後端數據庫安全性增強,出現故障後,業務能夠很快切換到slave db 上。
隨着訪問量的不斷增長,發現整個系統的讀寫比例很大,對用戶而言,讀操做多於寫操做,並且比例很大,這就須要進一步改善架構,實現讀寫分離。
經過增長db proxy,實現讀寫分離。如圖所示,2-2-1-3。
圖2-2-1-3
考慮到讀寫比例大的特色,如圖2-2-1-3所示,經過增長db proxy,以及master-slaves ,實現讀寫分離,全部寫操做在master db上進行,全部讀操做在其餘slave dbs 上進行,這樣作有如下好處:
(1) 緩解單臺db的壓力,減小單臺db的負載
(2) 增長多個slave,當master db宕機以後,能夠很快切換到slave 上,減小全部db同時宕機的風險。
不少用戶訪問,讀與寫操做比例很大,如圖2-2-1-3所示,經過在web server層上增長緩存,能夠提升訪問速度。好比能夠緩存css、jpg等靜態文件。
增長緩存有兩個好處:
(1) 加快用戶的讀請求訪問速度。
(2) 緩解web server的壓力。
雖然上述幾個架構圖,從各個層面緩解了服務器壓力,可是,仍是存在當點故障的可能性。若是出現單點故障,沒有在線物理設備提供使用,那該系統也不是一個高可用的系統。針對上述問題,增長在線物理備份設備,解決單點故障問題,如圖2-2-1-4所示。
圖 2-2-1-4
如圖2-2-1-4所示,增長了負載均衡器的在線備用設備和db proxy在線備用服務器,這樣作能夠在負載均衡器出現故障的時候,啓用在線備用設備;若是db proxy出現故障,也能夠啓用在線備用db proxy,實現故障轉移。保證系統的高可用性。