中大型网站技术架构演变过程
1、大型網(wǎng)站的特點(diǎn)
- 高并發(fā),大流量:PV量巨大。即頁面瀏覽量;用戶每1次對網(wǎng)站中的每個(gè)網(wǎng)頁訪問均被記錄1次。用戶對同一頁面的多次訪問,訪問量累計(jì)。
- 高可用:7*24小時(shí)不間斷服務(wù)。
- 海量數(shù)據(jù):需要儲(chǔ)存、管理海量數(shù)據(jù),需要使用大量服務(wù)器。
- 用戶分布 廣泛,網(wǎng)絡(luò)情況復(fù)雜:為全球用戶提供服務(wù),用戶分布范圍廣。
- 安全環(huán)境惡劣:黑客攻擊多。
- 需求快速變更,發(fā)布頻繁:快速適應(yīng)市場,滿足用戶需求。
- 漸進(jìn)式發(fā)展:慢慢地運(yùn)營出大型網(wǎng)站。
2、大型網(wǎng)站架構(gòu)演變過程
- 初始階段網(wǎng)站架構(gòu)
一臺Server就剛需—應(yīng)用程序、數(shù)據(jù)庫、文件等所有資源都集中在一臺Server上,典型案例:基于LAMP架構(gòu)的PHP網(wǎng)站。
- 應(yīng)用和數(shù)據(jù)服務(wù)分離
三臺Server平天下—業(yè)務(wù)發(fā)展,單臺不再適應(yīng)業(yè)務(wù)的發(fā)展,將應(yīng)用和數(shù)據(jù)分離后成三臺Sever(應(yīng)用服務(wù)器、文件服務(wù)器與數(shù)據(jù)庫服務(wù)器)。分離后三臺Server對硬件資源的需求各不相同:應(yīng)用服務(wù)器需要更快更強(qiáng)大的CPU,而數(shù)據(jù)庫服務(wù)器需要更快的硬盤和更大的內(nèi)存,文件服務(wù)器則需要更大的硬盤。
- 使用緩存改善網(wǎng)站性能
3+N的Server模式—減少數(shù)據(jù)庫訪問壓力,提高網(wǎng)站的數(shù)據(jù)訪問速度。緩存又可以分為:本地緩存和遠(yuǎn)程緩存(可以是分布式的),本地緩存訪問速度快,但數(shù)據(jù)量有限;遠(yuǎn)程分布式緩存可以集群,因此容量不受限制。
- 使用應(yīng)用服務(wù)器集群改善網(wǎng)站并發(fā)處理能力
集群—解決高并發(fā)、海量數(shù)據(jù)問題的常用手段,實(shí)現(xiàn)系統(tǒng)的可伸縮性。通過負(fù)載均衡調(diào)度器,可將用戶訪問分發(fā)到集群中的某臺Server上,應(yīng)用服務(wù)器的負(fù)載壓力不再成為整個(gè)網(wǎng)站的瓶頸。
- 數(shù)據(jù)庫讀寫分離
隨著用戶量的增加,數(shù)據(jù)庫成為最大的瓶頸,改善數(shù)據(jù)庫性能常用的手段是進(jìn)行讀寫分離以及分表,讀寫分離顧名思義就是將數(shù)據(jù)庫分為讀庫和寫庫,通過主備功能實(shí)現(xiàn)數(shù)據(jù)同步。分庫分表則分為水平切分和垂直切分,水平切換則是對一個(gè)數(shù)據(jù)庫特大的表進(jìn)行拆分,例如用戶表。垂直切分則是根據(jù)業(yè)務(wù)不同來切換,如用戶業(yè)務(wù)、商品業(yè)務(wù)相關(guān)的表放在不同的數(shù)據(jù)庫中。
- 使用反向代理和CDN加速網(wǎng)站響應(yīng)
CDN和反向代理的基本原理都是緩存,區(qū)別在于CDN部署在網(wǎng)絡(luò)提供商的機(jī)房,而反向代理則部署在網(wǎng)站的中心機(jī)房。使用CDN和反向代理的目的都是盡早返回?cái)?shù)據(jù)給用戶,一方面加快用戶訪問速度,另一方面也減輕后端服務(wù)器的負(fù)載壓力。
- 使用分布式文件系統(tǒng)和分布式數(shù)據(jù)庫系統(tǒng)
用戶一天天增加,業(yè)務(wù)量越來越大,產(chǎn)生的文件越來越多,單臺的文件服務(wù)器已經(jīng)不能滿足需求。需要分布式的文件系統(tǒng)支撐。
- 使用NoSQL和搜索引擎
NoSQL和搜索引擎都是源自互聯(lián)網(wǎng)的技術(shù)手段,對可伸縮的分布式特性具有更好的支持。應(yīng)用服務(wù)器則通過一個(gè)統(tǒng)一數(shù)據(jù)訪問模塊訪問各種數(shù)據(jù),減輕應(yīng)用程序管理諸多數(shù)據(jù)源的麻煩。
- 業(yè)務(wù)拆分
隨著業(yè)務(wù)進(jìn)一步擴(kuò)展,應(yīng)用程序變得非常臃腫,這時(shí)我們需要將應(yīng)用程序進(jìn)行業(yè)務(wù)拆分,如百度分為新聞、網(wǎng)頁、圖片等業(yè)務(wù)。每個(gè)業(yè)務(wù)應(yīng)用負(fù)責(zé)相對獨(dú)立的業(yè)務(wù)運(yùn)作。業(yè)務(wù)之間通過消息進(jìn)行通信或者同享數(shù)據(jù)庫來實(shí)現(xiàn)。
- 分布式服務(wù)
這時(shí)我們發(fā)現(xiàn)各個(gè)業(yè)務(wù)應(yīng)用都會(huì)使用到一些基本的業(yè)務(wù)服務(wù),例如用戶服務(wù)、訂單服務(wù)、支付服務(wù)、安全服務(wù),這些服務(wù)是支撐各業(yè)務(wù)應(yīng)用的基本要素。我們將這些服務(wù)抽取出來利用分部式服務(wù)框架搭建分布式服務(wù)。
總結(jié)
以上是生活随笔為你收集整理的中大型网站技术架构演变过程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: QQ登录的那些坑(如何开发qq登陆功能)
- 下一篇: WebStorm添加多个项目到当前工程目