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