1.應(yīng)用,數(shù)據(jù),文件分離。
將應(yīng)用程序,數(shù)據(jù)庫,文件各自部署在獨立的服務(wù)器上,并且根據(jù)服務(wù)器的用途配置不同的硬件,達(dá)到最佳的性能效果。
2.利用緩存改善網(wǎng)站性能。
大部分的網(wǎng)站訪問都遵循28原則,即80%的訪問請求,最終落在20%的數(shù)據(jù)上,所以我們可以對熱點數(shù)據(jù)進(jìn)行緩存,減少熱點數(shù)據(jù)的訪問路徑,提高用戶體驗。緩存實現(xiàn)的常見方法是本地緩存,分布式緩存,CDN,反向代理。
本地緩存:速度快,空間有限緩存數(shù)據(jù)量也有限。OSCache
分布式緩存:可緩存海量的數(shù)據(jù),拓展非常容易,速度沒有本地緩存快。Memcached, Redis.
反向代理: 請求先訪問反向代理服務(wù)器,反向代理服務(wù)器先將緩存的數(shù)據(jù)返回給用戶,沒有緩存的數(shù)據(jù)才會繼續(xù)訪問應(yīng)用服務(wù)器獲取。這樣做減少了獲取數(shù)據(jù)的成本。Squid, Nginx.
CDN
3.使用集群+負(fù)載均衡改善應(yīng)用服務(wù)器性能
應(yīng)用服務(wù)器作為網(wǎng)站的入口,會承擔(dān)大量的請求,我們往往通過應(yīng)用服務(wù)器集群來分擔(dān)請求數(shù)。 應(yīng)用服務(wù)器前面部署負(fù)載均衡服務(wù)器調(diào)度用戶請求,根據(jù)分發(fā)策略將請求分發(fā)到多個應(yīng)用服務(wù)器節(jié)點。
4. 數(shù)據(jù)庫優(yōu)化
4.1 讀寫分離和分庫分表 隨著用戶量的增加,數(shù)據(jù)庫成為最大的瓶頸,改善數(shù)據(jù)庫性能常用的手段是進(jìn)行讀寫分離以及分庫分表,讀寫分離顧名思義就是將數(shù)據(jù)庫分為讀庫和寫庫,通過主備功能實現(xiàn)數(shù)據(jù)同步。分庫分表則分為水平切分和垂直切分,水平切分則是對一個數(shù)據(jù)庫特大的表進(jìn)行拆分,例如用戶表。垂直切分則是根據(jù)業(yè)務(wù)的不同來切分,如用戶業(yè)務(wù)、商品業(yè)務(wù)相關(guān)的表放在不同的數(shù)據(jù)庫中。
5. 將應(yīng)用服務(wù)器進(jìn)行業(yè)務(wù)拆分
隨著業(yè)務(wù)的擴展,應(yīng)用程序變得非常臃腫,這時我們需要將應(yīng)用程序進(jìn)行業(yè)務(wù)拆分,如百度分為新聞、網(wǎng)頁、圖片等業(yè)務(wù)。每個業(yè)務(wù)應(yīng)用負(fù)責(zé)相對獨立的業(yè)務(wù)運作。業(yè)務(wù)之間通過消息進(jìn)行通信或者共享數(shù)據(jù)庫來實現(xiàn)。
6.使用分布式系統(tǒng)
6.1 分布式文件系統(tǒng) 用戶一天天增加,業(yè)務(wù)量越來越大,產(chǎn)生的文件越來越多,單臺的文件服務(wù)器已經(jīng)不能滿足需求,這時就需要分布式文件系統(tǒng)的支撐。常用的分布式文件系統(tǒng)有GFS、HDFS、TFS。