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

大型網站架構演變過程:

[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、鎖競爭:(通過邏輯儘量減少鎖的使用,或者鎖的競爭)

大型網站架構演變過程:

[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、鎖競爭:(通過邏輯儘量減少鎖的使用,或者鎖的競爭)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章