一、架構層面
1、硬件升級
假設一臺(tai)服務(wu)器最多能支持每天(tian)10萬獨立IP,如果訪問(wen)量增大(da)的話(hua),那么(me)必(bi)須升級這臺(tai)服務(wu)器的配置(zhi)才能解(jie)決問(wen)題,否則怎么(me)優化都(dou)不(bu)可能徹底解(jie)決性能問(wen)題。
2、負載均衡
它是(shi)對多臺云服務器進(jin)行(xing)流(liu)量分發(fa)的負載均(jun)衡服務,讓整個服務器群(qun)來(lai)處(chu)理網站(zhan)的請求。負載均(jun)衡支(zhi)持億級連接和千萬級并發(fa),可輕松應對大流(liu)量訪問,滿(man)足業務需求。
3、服務器集群
服(fu)(fu)(fu)務器(qi)(qi)集群就是指將很多服(fu)(fu)(fu)務器(qi)(qi)集中(zhong)起(qi)來(lai)(lai)一起(qi)進行(xing)同一種服(fu)(fu)(fu)務,在客戶端看來(lai)(lai)就像是只有一個(ge)服(fu)(fu)(fu)務器(qi)(qi)。集群可以利用(yong)多個(ge)計(ji)算(suan)(suan)機(ji)進行(xing)并行(xing)計(ji)算(suan)(suan)從(cong)而獲(huo)得很高的計(ji)算(suan)(suan)速度,也可以用(yong)多個(ge)計(ji)算(suan)(suan)機(ji)做備份,從(cong)而使得任何一個(ge)機(ji)器(qi)(qi)壞(huai)了整個(ge)系統(tong)還是能(neng)正常(chang)運行(xing)。
4、分布式結構
分布式(shi)結構(gou)就(jiu)是將一個完整的(de)系統(tong),按照(zhao)業務功(gong)能,拆分成一個個獨立(li)的(de)子系統(tong),在(zai)(zai)分布式(shi)結構(gou)中(zhong),每個子系統(tong)就(jiu)被稱為(wei)“服務”.這些(xie)子系統(tong)能夠獨立(li)運(yun)行在(zai)(zai)web容器中(zhong),它們之間(jian)通過RPC方(fang)式(shi)通。
二、網站本地項目層面
1、頁面靜態化
前臺實現完全(quan)的靜態化最好,可以(yi)完全(quan)不用訪問數據庫。這樣(yang)服務器的壓(ya)力就減輕了(le)不少。
2、緩存技術(Memcache、Redis等)
緩存(cun)技(ji)術就(jiu)是另一個(ge)解決(jue)方案,就(jiu)是將動(dong)態(tai)數(shu)據(ju)存(cun)儲到緩存(cun)文(wen)件中,動(dong)態(tai)網頁直(zhi)接調用 這些文(wen)件,而不必(bi)再訪問數(shu)據(ju)庫。
3、數據庫優化
-
a.數據庫分表技術
當一張的(de)數據達到幾百萬時(shi),你查詢(xun)一次所(suo)花的(de)時(shi)間會變多,如果有(you)聯合查詢(xun)的(de)話(hua),很有(you)可能(neng)會死在(zai)那兒(er)了。分表的(de)目的(de)就(jiu)在(zai)于此,減小數據庫(ku)的(de)負(fu)擔(dan),縮短查詢(xun)時(shi)間。 -
b.數據庫讀寫分離
數(shu)據庫(ku)讀(du)寫分離的基本原理(li)是讓(rang)主數(shu)據庫(ku)處理(li)事務性增、改(gai)、刪操作(INSERT、UPDATE、DELETE),而(er)從(cong)數(shu)據庫(ku)處理(li)SELECT查詢操作。 -
c.表建立相應的索引
使(shi)用索引可快速(su)訪問數據(ju)庫表中的特(te)定信息。
4、CDN
將源站內容(rong)分發至最接(jie)近用(yong)戶的(de)節點(dian),使用(yong)戶可(ke)就近取得所(suo)需內容(rong),提高用(yong)戶訪問的(de)響(xiang)應(ying)速(su)度和成功率。解決因(yin)分布、帶(dai)寬(kuan)、服(fu)務(wu)器性能(neng)帶(dai)來的(de)訪問延遲問題,適用(yong)于站點(dian)加速(su)、點(dian)播、直(zhi)播等(deng)場景。
5、禁止盜鏈
外部(bu)網(wang)站的圖片或者文件盜鏈往(wang)往(wang)會帶來大(da)量的負載壓力,因此應該嚴格限制外部(bu)對于自身(shen)的圖片或者文件盜鏈。
6、控制大文件的上傳下載
大(da)文(wen)件的(de)(de)下載(zai)(zai)會(hui)占用很(hen)大(da)的(de)(de)流量,并且對于非SCSI硬盤來(lai)說(shuo),大(da)量文(wen)件下載(zai)(zai)會(hui)消耗 CPU,使得網站響應能力下降。因此,盡(jin)量不要(yao)(yao)提供(gong)超過2M的(de)(de)大(da)文(wen)件下載(zai)(zai),如果需要(yao)(yao)提供(gong),建(jian)議(yi)將大(da)文(wen)件放在(zai)專門(men)的(de)(de)存儲(chu)空(kong)間上(對象存儲(chu)OSS/COS)。