大型網站架構演變過程、大併發伺服器架構

s1mba發表於2013-11-14

大型網站架構演變過程:

[Step1]web server與資料庫分離



web動靜資源分離

靜態請求:如html, js, css, img
動態請求:如jsp, php


[Step2]快取處理

客戶端(瀏覽器)快取
前端頁面快取(squid)
頁面片段快取ESI(Edge Side Includes)
本地資料快取


[Step3]web server叢集+讀寫分離

負載均衡:
前端負載均衡
DNS負載均衡
在DNS伺服器中,可以為多個不同的地址配置同一個名字,對於不同的客戶機訪問同一個名字,得到不同的地址。
反向代理
使用代理伺服器將請求發給內部伺服器,讓代理伺服器將請求均勻轉發給多臺內部web伺服器之一,從而達到負載均衡的目的。標準代理方式是客戶使用代理訪問多個外部Web伺服器,而這種代理方式是多個客戶使用它訪問內部Web伺服器,因此也被稱為反向代理模式。
基於NAT的負載均衡技術
LVS
F5硬體負載均衡
應用伺服器負載均衡
資料庫負載均衡

[Step4]CDN、分散式快取、分庫分表




分散式快取



目前流行分散式快取方案:memcached、membase、redis等,基本上當前的NoSQL方案都可以用來做分散式快取方案

庫(垂直分割槽)





分表(水平分割槽shared)


[Step5]多資料中心+分散式儲存與計算


技術點[DFS、Key-Value DB 、 Map/Reduce ]


DFS分散式檔案系統,如:Lustre\HDFS\GFS\TFS\FreeNas等
Key-Value DB,也作為NoSQL解決方案,如:BigTable\Tair\Hbase\HyperTable等
Map/Reduce演算法(計算框架),基本上現有NoSQL資料庫中都支援此演算法。
提供完整解決方案:
   Google(GFS|BigTable|Map/Reduce)
   Apache Hadoop(HDFS|HBase|Map/Reduce) 


大併發伺服器架構:





垂直分割槽:比如使用者表、業務表、基礎表各有各自的讀寫資料庫。
水平分割槽:比如使用者表、業務表、基礎表各有1000條記錄,則水平分割分佈在10對讀寫庫。

伺服器效能殺手:
1、資料拷貝:(快取,不是指分散式快取,指的是伺服器內部的,如從核心拷貝到應用層的快取)
2、環境切換:(理性使用多執行緒)單核(使用狀態機程式設計效果最佳),多執行緒能夠發揮多核伺服器最佳效能
3、記憶體分配:(記憶體池)減少向作業系統申請記憶體的次數
4、鎖競爭:(通過邏輯儘量減少鎖的使用,或者鎖的競爭)



相關文章