一臺Server就剛需—應用程序、數據庫、文件等全部資源都集中在一臺Server上,典型案例:基於LAMP架構的PHP網站。數據庫
三臺Server平天下—業務發展,單臺再也不適應業務的發展,將應用和數據分離後成三臺Sever(應用服務器、文件服務器與數據庫服務器)。分離後三臺Server對硬件資源的需求各不相同:應用服務器須要更快更強大的CPU,而數據庫服務器須要更快的硬盤和更大的內存,文件服務器則須要更大的硬盤。後端
3+N的Server模式—減小數據庫訪問壓力,提升網站的數據訪問速度。緩存又能夠分爲:本地緩存和遠程緩存(能夠是分佈式的),本地緩存訪問速度快,但數據量有限;遠程分佈式緩存能夠集羣,所以容量不受限制。緩存
集羣—解決高併發、海量數據問題的經常使用手段,實現系統的可伸縮性。經過負載均衡調度器,可將用戶訪問分發到集羣中的某臺Server上,應用服務器的負載壓力再也不成爲整個網站的瓶頸。安全
隨着用戶量的增長,數據庫成爲最大的瓶頸,改善數據庫性能經常使用的手段是進行讀寫分離以及分表,讀寫分離顧名思義就是將數據庫分爲讀庫和寫庫,經過主備功能實現數據同步。分庫分表則分爲水平切分和垂直切分,水平切換則是對一個數據庫特大的表進行拆分,例如用戶表。垂直切分則是根據業務不一樣來切換,如用戶業務、商品業務相關的表放在不一樣的數據庫中。服務器
CDN和反向代理的基本原理都是緩存,區別在於CDN部署在網絡提供商的機房,而反向代理則部署在網站的中心機房。使用CDN和反向代理的目的都是儘早返回數據給用戶,一方面加快用戶訪問速度,另外一方面也減輕後端服務器的負載壓力。網絡
用戶一每天增長,業務量愈來愈大,產生的文件愈來愈多,單臺的文件服務器已經不能知足需求。須要分佈式的文件系統支撐。架構
NoSQL和搜索引擎都是源自互聯網的技術手段,對可伸縮的分佈式特性具備更好的支持。應用服務器則經過一個統一數據訪問模塊訪問各類數據,減輕應用程序管理諸多數據源的麻煩。併發
隨着業務進一步擴展,應用程序變得很是臃腫,這時咱們須要將應用程序進行業務拆分,如百度分爲新聞、網頁、圖片等業務。每一個業務應用負責相對獨立的業務運做。業務之間經過消息進行通訊或者同享數據庫來實現。負載均衡
這時咱們發現各個業務應用都會使用到一些基本的業務服務,例如用戶服務、訂單服務、支付服務、安全服務,這些服務是支撐各業務應用的基本要素。咱們將這些服務抽取出來利用分部式服務框架搭建分佈式服務。框架