網站框架演變

WEB服務框架升級

一. 項目描述nginx

隨着公司業務的逐漸增大,lnmp的服務器沒法知足日益增加的數據量,卡頓,延遲的現象時常出現,所以擴容,添加服務器勢在必行.

二. 演變歷程web

  1. 單機版LNMP
  2. 獨立數據庫服務器
  3. web服務器集羣與Session保持
  4. 動靜分離,數據庫集羣
  5. 各類緩存服務與業務模型

樣例展現數據庫

1.單機版LNMP

單機版LNMP.png
用戶量少時使用,簡單、成本低、存在單點故障。緩存

2.獨立數據庫服務器

獨立數據庫服務器是將網站靜態文件、代碼文件等資料與數據庫分離的架構,當用戶量增長時單機的處理能力有限,PHP或JAVA代碼的執行須要消耗大量CPU資源,數據庫的增刪改查須要調用大量的內存資源,將二者分離能夠減輕服務器的壓力,其拓撲結構如圖-2所示。
LNMP.png
Web服務器和數據庫服務器的壓力均可以獲得有效改善,訪問量有所增長。可是服務器依然存在單點故障問題。服務器

3.web服務器集羣與Session保持

咱們能夠經過Nginx、Haproxy代理服務器實現Web負載均衡集羣,也可使用LVS調度器實現Web負載均衡集羣。部署完Web集羣后還須要考慮如何進行Session會話保持,方法不少,如:根據源IP保持,代理服務器重寫Cookie信息,共享文件系統保存session,使用數據庫共享session等等。
web1.png
可是若是隻有一臺調度器依然會致使單點故障的問題,所以還須要使用Keepalived或Heartbeat之類的軟件進行高可用配置網絡


對於網站內容而言能夠分離爲動態頁面和靜態頁面,靜態頁面就須要數據文件,動態頁面則須要CPU解析代碼,須要消耗大量的CPU資源,所以能夠將靜態和動態分離爲兩組服務器,動態頁面有腳本代碼組成,是一種基於網頁的應用程序
WEB服務器與session.pngsession

4.動靜分離,數據庫集羣

隨着服務器的增長,雖然性能與併發量獲得了明顯的提高,可是數據的一致性、管理的便利性成爲了新的問題,所以就須要增長統一的存儲服務器,實現數據的同步一致,可使用NFS,GlusterFS、Ceph等軟件實現該功能
架構

但此時全部應用服務器都鏈接一臺數據庫服務器進行讀寫操做,並且後期隨着數據庫中的數據不斷增長,會致使數據庫成爲整個網站的瓶頸!這就須要咱們對數據進行分庫分表,建立數據庫主從或者數據庫集羣,實現讀寫分離
動靜分離,數據庫集羣.png併發

5.各類緩存服務與業務模型


對於靜態數據咱們能夠經過VARnish,squid或者nginx進行緩存,將數據緩存到距離用戶更近的位置,構建CND(內容分發網絡)框架.
對於傳統的SQL數據庫而言,咱們也能夠經過增長NoSQL數據庫,實現數據緩存的功能,提示數據庫的訪問速度.
對數據庫的優化放到後面的文章負載均衡

相關文章
相關標籤/搜索