大型网站架构 - 1.架构的演变过程
1. 第一階段:單服務器架構
這一階段是我們的起步階段,比如我們創(chuàng)業(yè)的時候剛購買了一臺云主機。
在這一階段,為了節(jié)約成本,我們將所有的應用程序,數(shù)據(jù)庫,文件全部放在這臺服務器上。
然后,CPU或者內(nèi)存的成本在開發(fā)階段也使用最小能接受的成本,然后開始我們的服務器開發(fā)之路。
?
2. 第二階段:應用服務和數(shù)據(jù)服務分離
隨著網(wǎng)站的第一次上線,我們的網(wǎng)站如果運營得不錯的話,在這之后應該會逐漸積累人氣,業(yè)務
也會隨著人氣的發(fā)展而進一步發(fā)展。
這個時候,1臺服務器顯然不能滿足需求了,越來越多的用戶訪問導致性能變差,與此同時,數(shù)據(jù)也逐漸
變多,我們考慮增加硬盤。
這個時候,首先想到的就是:將應用和數(shù)據(jù)分離
于是,網(wǎng)站架構變成3臺服務器:應用服務器(Web Server), 文件服務器(Resource Server), 數(shù)據(jù)庫服務器(Database Server)
對于3臺服務器的配置要求不太一樣:
Web Server: 需要處理大量的業(yè)務,需要更快的CPU。
Database Server: 需要快速檢索數(shù)據(jù)和存放更多的數(shù)據(jù),需要更大更快的硬盤,硬盤最好也是固態(tài)硬盤為主。
Resource Server: 需要存放用戶上傳的文件,如照片,視頻等等,需要更大的硬盤,硬盤大一點,但是普通硬盤即可。
?
3. 第三階段:使用緩存改善網(wǎng)站性能
網(wǎng)站業(yè)務遵循二八原則,80%的業(yè)務集中在20%的數(shù)據(jù)上。
因此,如果把這一小部分數(shù)據(jù)緩存起來,就可以i暗哨數(shù)據(jù)庫訪問的壓力。
在初始階段可以使用一些本地服務器的內(nèi)存緩存,隨著業(yè)務的擴展,
可以增加遠程分布式的緩存服務器,應用一些成熟的框架,如: Redis
?
4. 第四階段:應用服務器集群增加并發(fā)處理能力
集群已經(jīng)顯然成為現(xiàn)代網(wǎng)站處理高并發(fā),海量數(shù)據(jù)的常規(guī)手段。
當1臺服務器性能不足時,我們首先考慮的不應當是更換強大的服務器,而是應該增加服務器。
這個時候,我們的架構中應該引入負載均衡調(diào)度服務器,然后請求經(jīng)過負載均衡服務器,分發(fā)到位于集群上的各個
應用服務器。
?
5. 第五階段:數(shù)據(jù)庫讀寫分離
緩存并不能解決所有的數(shù)據(jù)庫問題,仍有很大一部分數(shù)據(jù)由于某些原因(緩存不命中,緩存過期)需要訪問數(shù)據(jù)庫。
通過設置數(shù)據(jù)庫的主從備份結構,可以將主數(shù)據(jù)庫的數(shù)據(jù)同步更新到另外的數(shù)據(jù)庫上。
從而架構改為,將數(shù)據(jù)寫入主數(shù)據(jù)庫,而從數(shù)據(jù)庫負責讀取數(shù)據(jù)。
?
6. 第六階段:使用反向代理和CDN加速網(wǎng)站響應
CDN和反向代理的基本原理都是緩存。
區(qū)別:
CDN部署在網(wǎng)絡提供商的機房,用戶可以從距離自己最近的網(wǎng)絡提供商機房獲取數(shù)據(jù)。
反向代理部署在網(wǎng)站的中心機房。
?
7. 第七階段:使用分布式文件系統(tǒng)和分布式數(shù)據(jù)庫
數(shù)據(jù)庫需要進行拆分,拆分一般根據(jù)業(yè)務進行拆分,
將不同的數(shù)據(jù)庫部署在不同的物理服務器上。
再進一步,我們可以引入NoSql和搜索引擎。
?
總結
以上是生活随笔為你收集整理的大型网站架构 - 1.架构的演变过程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在Visual Studio中使用用例图
- 下一篇: VS.NET C#视频教学