美國(guó)大帶寬服務(wù)器高并發(fā)處理的基本手段
1)客戶端發(fā)出請(qǐng)求層面:
盡量利用瀏覽器的緩存功能,減少訪問(wèn)服務(wù)端,比如:js、css、圖片等
可以考慮使用壓縮傳輸?shù)墓δ?,減少網(wǎng)絡(luò)流量,也會(huì)提高傳輸速度
考慮使用異步請(qǐng)求,分批獲取數(shù)據(jù)
2)前端接收客戶端請(qǐng)求層面:
動(dòng)靜分離,部分靜態(tài)資源可以直接從Nginx返回
按請(qǐng)求的不同,分發(fā)到不同的后端進(jìn)行處理,比如:負(fù)載均衡、業(yè)務(wù)拆分訪問(wèn)等
前面再加上一層來(lái)做多個(gè)Nginx的負(fù)載均衡,比如:LVS、F5等
還可以在更前面使用CDN服務(wù)
還可以對(duì)動(dòng)態(tài)內(nèi)容進(jìn)行緩存,盡量減少訪問(wèn)后端服務(wù)
3)Web服務(wù)器層面:
使用最新的JVM,并進(jìn)行配置優(yōu)化
對(duì)Web服務(wù)器進(jìn)行配置優(yōu)化,比如:調(diào)整內(nèi)存數(shù)量、線程數(shù)量等
提供多個(gè)能提供相同服務(wù)的Web服務(wù)器,以實(shí)現(xiàn)負(fù)載均衡
仔細(xì)規(guī)劃Web服務(wù)器上部署的應(yīng)用規(guī)模
對(duì)Web服務(wù)器進(jìn)行集群
4)Web應(yīng)用層面:
動(dòng)態(tài)內(nèi)容靜態(tài)化
Java開發(fā)優(yōu)化
優(yōu)化處理業(yè)務(wù)邏輯的算法
合理高效的利用緩存
優(yōu)化訪問(wèn)數(shù)據(jù)庫(kù)的Sql,可以考慮利用存儲(chǔ)過(guò)程等數(shù)據(jù)庫(kù)的能力
合理使用多線程,加快業(yè)務(wù)處理
部分業(yè)務(wù)可以考慮內(nèi)存數(shù)據(jù)庫(kù),或者是進(jìn)行純內(nèi)存處理
盡量避免遠(yuǎn)程調(diào)用、大量I/O等耗時(shí)的操作
合理規(guī)劃事務(wù)等較為耗資源的操作
合理使用異步處理
對(duì)部分業(yè)務(wù)考慮采用預(yù)處理或者預(yù)計(jì)算的方式,減少實(shí)時(shí)計(jì)算量
內(nèi)部系統(tǒng)間的業(yè)務(wù)盡量直接調(diào)用、直接處理,減少WebService、工作流等
5)數(shù)據(jù)庫(kù)層面:
合理選擇數(shù)據(jù)庫(kù)的引擎,比如Mysql的InnoDB與MyISAM引擎
進(jìn)行配置優(yōu)化
可以考慮使用存儲(chǔ)過(guò)程來(lái)處理復(fù)雜的數(shù)據(jù)邏輯
數(shù)據(jù)庫(kù)集群,進(jìn)行讀寫分離
合理設(shè)計(jì)數(shù)據(jù)庫(kù)的表結(jié)構(gòu)、索引等
分庫(kù)、分表,降低單庫(kù)、單表的數(shù)據(jù)量