大型網(wǎng)站架構(gòu)演變過程:
[Step1]web server與數(shù)據(jù)庫分離
web動(dòng)靜資源分離
靜態(tài)請求:如html, js, css, img
動(dòng)態(tài)請求:如jsp, php
[Step2]緩存處理
客戶端(瀏覽器)緩存
前端頁面緩存(squid) 頁面片段緩存ESI(Edge Side Includes) 本地?cái)?shù)據(jù)緩存 [Step3]web server集群+讀寫分離
負(fù)載均衡:
前端負(fù)載均衡
應(yīng)用服務(wù)器負(fù)載均衡
數(shù)據(jù)庫負(fù)載均衡 [Step4]CDN、分布式緩存,、分庫分表
分布式緩存
目前流行分布式緩存方案:memcached,、membase、redis等,,基本上當(dāng)前的NoSQL方案都可以用來做分布式緩存方案
分庫(垂直分區(qū))
分表(水平分區(qū)shard)
[Step5]多數(shù)據(jù)中心+分布式存儲(chǔ)與計(jì)算
技術(shù)點(diǎn)[DFS,、Key-Value DB 、 Map/Reduce ]
DFS分布式文件系統(tǒng),,如:Lustre\HDFS\GFS\TFS\FreeNas等
Key-Value DB,,也作為NoSQL解決方案,如:BigTable\Tair\Hbase\HyperTable等 Map/Reduce算法(計(jì)算框架),,基本上現(xiàn)有NoSQL數(shù)據(jù)庫中都支持此算法,。 提供完整解決方案:
大并發(fā)服務(wù)器架構(gòu):
垂直分區(qū):比如用戶表、業(yè)務(wù)表,、基礎(chǔ)表各有各自的讀寫數(shù)據(jù)庫,。
水平分區(qū):比如用戶表,、業(yè)務(wù)表、基礎(chǔ)表各有1000條記錄,,則水平分割分布在10對(duì)讀寫庫,。
服務(wù)器性能殺手:
1、數(shù)據(jù)拷貝:(緩存,,不是指分布式緩存,,指的是服務(wù)器內(nèi)部的,如從內(nèi)核拷貝到應(yīng)用層的緩存)
2,、環(huán)境切換:(理性使用多線程)單核(使用狀態(tài)機(jī)編程效果最佳),,多線程能夠發(fā)揮多核服務(wù)器最佳性能
3、內(nèi)存分配:(內(nèi)存池)減少向操作系統(tǒng)申請內(nèi)存的次數(shù)
4,、鎖競爭:(通過邏輯盡量減少鎖的使用,,或者鎖的競爭)
|
|