2022-10-13 分類: 網(wǎng)站建設(shè)
隨著用戶訪問量的不斷增加,網(wǎng)站的后臺也會不斷變化以應(yīng)對需求。本文主要從一個小型網(wǎng)站到大型網(wǎng)站服務(wù)器架構(gòu)的過度與變化來陳述。
1.1 網(wǎng)站后臺架構(gòu)主要指由web server 、應(yīng)用服務(wù)器、數(shù)據(jù)庫、存儲、監(jiān)控等組成的網(wǎng)站后臺系統(tǒng)。
1.2 架構(gòu)演變個人站點后臺架構(gòu)。如圖2-1所示。
圖2-1 單臺一組
如圖所示,如果是個人站點,訪問量不大,一般都是將web server、應(yīng)用服務(wù)器、數(shù)據(jù)庫部署在一臺物理服務(wù)器上。從圖中也可以看到,一個網(wǎng)站最基本的后臺需要web server、應(yīng)用服務(wù)器、數(shù)據(jù)庫三部分組成。
1.2.1 網(wǎng)站架構(gòu)的進一步演變考慮到網(wǎng)站訪問量的不斷增加,網(wǎng)站的后臺架構(gòu)也必須不斷調(diào)整和優(yōu)化,進一步實現(xiàn)功能分離。www.linuxidc.com特別是隨著訪問量不斷增加以及考慮到數(shù)據(jù)庫的負載和數(shù)據(jù)的重要性,數(shù)據(jù)庫需要分離出來。從web server到數(shù)據(jù)庫實現(xiàn)各個層次的負載均衡。
1.2.1.1 數(shù)據(jù)庫功能分離,數(shù)據(jù)庫單臺部署
考慮到數(shù)據(jù)庫的安全性和處理性能,數(shù)據(jù)庫單臺部署。如圖2-2-1-1所示。
圖2-2-1-1 數(shù)據(jù)庫分離
如圖所示,數(shù)據(jù)庫與web server 、應(yīng)用服務(wù)器分離出來,單臺部署。這樣做有兩個好處:
(1)數(shù)據(jù)庫服務(wù)器性能提高,不再和webserver 、應(yīng)用服務(wù)器搶占資源。
(2)數(shù)據(jù)庫服務(wù)器安全性能提高,不會因為一臺服務(wù)器宕機而影響所有服務(wù),特別是數(shù)據(jù)庫服務(wù)。
1.2.1.2 前端負載均衡部署,用于緩解單臺web server壓力
隨著訪問量的不斷增加,單臺web server 負載會加大,甚至有宕機的危險,所以需要在前端增加負載均衡器,實現(xiàn)web server層的負載均衡。緩解壓力。如圖2-2-1-2所示。
圖2-2-1-2 前端負載均衡
如圖所示,通過增加web server并用負載均衡器(load balance)來緩解前端的web server和應(yīng)用服務(wù)器壓力。并且,為了保證數(shù)據(jù)庫的絕對安全,做了Master-Slave主從備份。這樣當master db宕機之后,slavedb可以立即啟用。所以這樣做有以下好處:
(1)前臺web server 和 應(yīng)用服務(wù)器壓力減少,負載均衡器分流負載。
(2)后端數(shù)據(jù)庫安全性加強,出現(xiàn)故障后,業(yè)務(wù)可以很快切換到slave db 上。
1.2.1.3 增加緩存及數(shù)據(jù)庫讀寫分離
隨著訪問量的不斷增加,發(fā)現(xiàn)整個系統(tǒng)的讀寫比例很大,對用戶而言,讀操作多于寫操作,而且比例很大,這就需要進一步改善架構(gòu),實現(xiàn)讀寫分離。
通過增加db proxy,實現(xiàn)讀寫分離。如圖所示,2-2-1-3。
圖2-2-1-3
考慮到讀寫比例大的特點,如圖2-2-1-3所示,通過增加db proxy,以及master-slaves ,實現(xiàn)讀寫分離,所有寫操作在master db上進行,所有讀操作在其他slave dbs 上進行,這樣做有以下好處:
(1)緩解單臺db的壓力,減少單臺db的負載
(2)增加多個slave,當master db宕機之后,可以很快切換到slave 上,減少所有db同時宕機的風(fēng)險。
很多用戶訪問,讀與寫操作比例很大,如圖2-2-1-3所示,通過在web server層上增加緩存,可以提高訪問速度。比如可以緩存css、jpg等靜態(tài)文件。
增加緩存有兩個好處:
(1)加快用戶的讀請求訪問速度。
(2)緩解web server的壓力。
1.2.1.4 解決單點故障問題,增加在線備份設(shè)備(交換設(shè)備和服務(wù)器)
雖然上述幾個架構(gòu)圖,從各個層面緩解了服務(wù)器壓力,但是,還是存在當點故障的可能性。如果出現(xiàn)單點故障,沒有在線物理設(shè)備提供使用,那該系統(tǒng)也不是一個高可用的系統(tǒng)。針對上述問題,增加在線物理備份設(shè)備,解決單點故障問題,如圖2-2-1-4所示。
圖 2-2-1-4
如圖2-2-1-4所示,增加了負載均衡器的在線備用設(shè)備和db proxy在線備用服務(wù)器,這樣做可以在負載均衡器出現(xiàn)故障的時候,啟用在線備用設(shè)備;如果db proxy出現(xiàn)故障,也可以啟用在線備用db proxy,實現(xiàn)故障轉(zhuǎn)移。保證系統(tǒng)的高可用性。
1.1 高可用性
“高可用性”(High Availability) 通常用來描述一個系統(tǒng),經(jīng)過特殊設(shè)計,減少停止服務(wù)的時間,從而使其服務(wù)保持高度的可使用性。
計算機系統(tǒng)的可靠性用平均無故障時間(MTTF)來度量,即計算機系統(tǒng)平均能夠正常運行多長時間,才會發(fā)生一次故障。系統(tǒng)的可靠性能越高,平均無故障時間越長??删S護性用平均維修時間(MTTR)來度量,即系統(tǒng)發(fā)生故障后維修和重新恢復(fù)正常運行平均花費時間。系統(tǒng)的可維護性越好,平均維修時間越短。計算機系統(tǒng)的可用性定義為:MTTF/(MTTF+MTTR)*100%。
舉例來說,淘寶網(wǎng)在2010年成交額為300億,則每分鐘成交額為5—10萬,那么對淘寶來說,其后臺系統(tǒng)的高可用,對企業(yè)運營非常重要。淘寶數(shù)據(jù)負責人寧海元指出,淘寶系統(tǒng),可用性至少需要99.999%。那么對于taobao.com系統(tǒng),在一年365天,系統(tǒng)停止服務(wù)時間為5分15秒。
1.2 確保高可用性
高可用性的衡量指標
%availability=(TotalElapsed Time – Sum of Inoperative Times) / Total Elapsed Time
其中:
TotalElapsed Time 為系統(tǒng)總時間,包括可提供服務(wù)時間+停止服務(wù)時間。
Sumof Inoperative Times 為停止服務(wù)時間,包括宕機時間+維護時間。
1.2.1 如何確保高可用
可用性越高越好,提高可用性主要從一下幾個方面入手:
(1)系統(tǒng)架構(gòu)
(2)容災(zāi)性
(3)監(jiān)控報警
(4)故障轉(zhuǎn)移
1.2.1.1 系統(tǒng)架構(gòu)
系統(tǒng)架構(gòu),指整個網(wǎng)站后臺系統(tǒng)的架構(gòu)。好的系統(tǒng)架構(gòu),主要從下面幾個方面考慮:
(1)操作系統(tǒng)的選擇,從穩(wěn)定性、安全性和可維護性考慮,unix和linux性能遠遠好于windows,從成本考慮,Linux遠遠低于windows 和unix。
(2)負載均衡器的選擇,硬件負載均衡器性能和穩(wěn)定性高于軟件負載均衡器。但成本上,軟件比如haproxy、LVS優(yōu)于硬件(比如F5、Netscaler)。
(3)web server的選擇,Nginx優(yōu)于傳統(tǒng)的Apache。
(4)各級緩存的選擇與應(yīng)用,varnish、squid、memcached。
(5)網(wǎng)站開發(fā)語言的選擇,與開發(fā)有關(guān),www.linuxidc.com主要分為需要編譯性的語言和不需要編譯性的語言。
(6)數(shù)據(jù)庫的選擇,傳統(tǒng)的關(guān)系數(shù)據(jù)庫中,Oracle優(yōu)于MySQL,但Oracle收費遠遠高于MySQL,實際上,Oracle有兩種收費模式,一種是按用戶數(shù),一種是按主機處理器個數(shù)。而MySQL有免費的版本。
(7)底層存儲設(shè)備的選擇,比如機械磁盤和固態(tài)硬盤的選擇。
(8)避免單點故障問題,在邏輯架構(gòu)上,避免單點故障,避免出現(xiàn)割點。
1.2.1.2 容災(zāi)性
容災(zāi)性能對系統(tǒng)非常重要,比如服務(wù)器因為斷電,導(dǎo)致數(shù)據(jù)文件的不一致,因為發(fā)生自然或者非自然災(zāi)害比如火災(zāi)導(dǎo)致的磁盤損壞,發(fā)生數(shù)據(jù)丟失等。所以容災(zāi)很重要,主要從以下幾個方面提高容災(zāi)性能:
(1)服務(wù)器熱備機的部署,當發(fā)生故障后,熱備機能馬上使用,提供服務(wù)。這里的服務(wù)器主要指web server 、應(yīng)用服務(wù)器、數(shù)據(jù)庫服務(wù)器等。
(2) 數(shù)據(jù)備份,比如做定期備份、熱備份、增量備份,甚至需要做主從備份,來提高抗災(zāi)性能。并且從底層存儲設(shè)備上進行備份,比如做RAID。
(3) 做雙線網(wǎng)絡(luò)交換,盡量優(yōu)化設(shè)計網(wǎng)絡(luò),避免因為核心交換機故障,而影響服務(wù)。網(wǎng)絡(luò)上避免單點故障。
1.2.1.3 監(jiān)控報警
監(jiān)控是指對在線服務(wù)和非服務(wù)的在線服務(wù)器和相應(yīng)的進程進行狀態(tài)檢測,當出現(xiàn)宕機或者某項服務(wù)進程僵死之后,能夠在盡量短的時間獲得該信息,然后通過報警系統(tǒng)將信息發(fā)送到一線運維人員。所以,監(jiān)控報警,直接影響宕機時間。監(jiān)控報警,主要從以下幾個方面展開:
(1)監(jiān)控主機CPU使用情況,負載情況。
(2)監(jiān)控主機內(nèi)存使用情況。
(3)監(jiān)控主機IO外設(shè),主要以磁盤為主。如磁盤的讀寫、磁盤使用量等。
(4)監(jiān)控主機網(wǎng)卡使用情況。網(wǎng)卡是否損壞,是否招到DDOS攻擊。
(5)監(jiān)控應(yīng)用進程,包括web server ,應(yīng)用服務(wù)器等。
(6)監(jiān)控數(shù)據(jù)庫使用情況。包括用戶的請求數(shù)、緩存使用量等。
(7)監(jiān)控交換設(shè)備的使用情況。網(wǎng)絡(luò)入、出的流量。
(8)監(jiān)控IDC機房溫度、濕度等。
(9)防火墻、入侵檢測等安全檢測、監(jiān)控等。
通過上面的各項監(jiān)控、得到相應(yīng)數(shù)值,應(yīng)用監(jiān)控繪圖軟件,把相應(yīng)的數(shù)值繪畫出來,現(xiàn)有監(jiān)控繪圖軟件有mrtg、cacti、nagios等。然后設(shè)置一個報警閾值,如果超過該閾值,那么通過報警系統(tǒng),www.linuxidc.com比如短信、msn、郵件、甚至是聲音完成報警功能。典型的報警系統(tǒng)如圖3-2-1-3所示。
圖3-2-1-3
如圖3-2-1-3所示,監(jiān)控服務(wù)器從servers上收集系統(tǒng)信息,如果發(fā)現(xiàn)系統(tǒng)的某項狀態(tài)指數(shù)超過預(yù)設(shè)的閾值,則發(fā)送郵件到運維人員。同時,把相應(yīng)的報警信息發(fā)送到短信運營商的短信網(wǎng)關(guān)服務(wù)器,然后短信網(wǎng)關(guān)服務(wù)器發(fā)送短信到運維人員手機中,完成短信報警。上述報警過程,傳送郵件報警信息,是基于TCP/IP協(xié)議,而傳送短信報警信息,是基于gprs網(wǎng)絡(luò)。
1.2.1.4 故障轉(zhuǎn)移
故障轉(zhuǎn)移是指,當對用戶提供服務(wù)的服務(wù)器或者相應(yīng)的應(yīng)用進程發(fā)生故障后,比如服務(wù)器宕機、進程僵死之后,備用服務(wù)器能夠在盡量短的時間內(nèi)啟用,提供服務(wù)。這樣能夠大限度減少損失,保證用戶的正常服務(wù)。所以,做好故障轉(zhuǎn)移,要解決以下兩個問題:
(1)實時監(jiān)測故障問題。
(2)準確快速切換服務(wù)器問題。
針對不同層次的服務(wù),監(jiān)測機制也不同,詳細情況,在3.2.1.3已經(jīng)闡述。下面主要論述一下故障切換問題。
故障切換包括負載均衡器的故障切換、主機os的故障切換、web server的故障切換、應(yīng)用進程的故障切換、數(shù)據(jù)庫的故障切換、存儲系統(tǒng)的故障切換、DNS的故障切換、交換設(shè)備的故障切換等。下面主要分析進程僵死的故障轉(zhuǎn)移和服務(wù)器宕機的故障轉(zhuǎn)移。
進程僵死故障轉(zhuǎn)移案例,常見的web server僵死故障轉(zhuǎn)移如圖3-2-1-4所示。
圖3-2-1-4-1
如圖3-2-1-4-1所示,當主機172.29.141.112的web server 對外提供服務(wù)時,通過在主機172.29.141.113上部署監(jiān)控程序Monitor_nginx.sh來監(jiān)控主機172.29.141.112上面的web server進程運行情況,一旦發(fā)現(xiàn)172.29.141.112上web server停止服務(wù),馬上報警,先更改172.29.141.113的ip地址為172.29.141.112,再啟用其自身的web server,完成故障轉(zhuǎn)移。此外,也可以在兩服務(wù)器上同時部署監(jiān)控程序Monitor_nginx.sh,完成互相監(jiān)控。
服務(wù)器宕機故障轉(zhuǎn)移案例,常見的服務(wù)器宕機故障轉(zhuǎn)移,如圖3-2-1-4-2所示。
圖3-2-1-4-2
如圖3-2-1-4-2所示,服務(wù)器A和服務(wù)器B同時部署,但服務(wù)器A提供服務(wù),而服務(wù)器B作為熱備機。監(jiān)控系統(tǒng)單獨部署。當服務(wù)器A宕機之后,監(jiān)控系統(tǒng)會檢測到這一信息,然后通過浮動更改服務(wù)器B的ip地址,完成故障切換。
1.3 本文小結(jié)本文主要闡述了網(wǎng)站后臺系統(tǒng)的高可用性,分析了高可用性的定義和應(yīng)用需求,重點闡述了如何做到高可用。通過從不同應(yīng)用級別,如主機、存儲、網(wǎng)絡(luò)、外設(shè)、數(shù)據(jù)庫、安全等各個級別進行分析,最后詳細論述了web server的故障轉(zhuǎn)移和主機系統(tǒng)的故障轉(zhuǎn)移。
整理大型網(wǎng)站架構(gòu)必知必會的幾個服務(wù)器知識
最近看書及系統(tǒng)開發(fā)部署過程中的一些心得,再對照自己之前的從業(yè)經(jīng)驗,很多都是聽聞而已,當然也有一些已經(jīng)很熟悉,有的正在搞,有的未來希望可以著手付諸實施,留此存照。
1、負載均衡服務(wù)器
負載均衡服務(wù)器主要作用是實現(xiàn)某些類型服務(wù)器的規(guī)模擴展。比如對于系統(tǒng)前端的web服務(wù)器和后端的數(shù)據(jù)庫服務(wù)器,想通過加服務(wù)器實現(xiàn)N+1橫向擴展,通過多臺服務(wù)器負載分擔壓力,負載均衡必不可少。
2、web服務(wù)器
最常見,內(nèi)存要求不是很高但cpu要求較高,主要用于部署各種web應(yīng)用,如帶界面的web頁面、不帶界面的web服務(wù)、wcf等等。
3、緩存服務(wù)器
大中型網(wǎng)站,分布式緩存已是標配,緩存服務(wù)器專門用于部署分布式緩存,一般而言對內(nèi)存和帶寬要求較高。
4、消息隊列服務(wù)器
隊列是系統(tǒng)解耦利器,也是大中型分布式系統(tǒng)標配,沒有隊列,業(yè)務(wù)系統(tǒng)很容易高度耦合,系統(tǒng)吞吐量也會很快遭遇瓶頸。
5、文件服務(wù)器
分布式文件系統(tǒng),專門用于存儲業(yè)務(wù)系統(tǒng)需要的各種文件如圖片、多媒體文件等。
6、索引服務(wù)器
用于網(wǎng)站全文索引,搜索必備。對內(nèi)存和CPU要求較高,大型網(wǎng)站,通常還需要支持主從備份和容錯,甚至多實例索引集群。
7、搜索服務(wù)器
通常需要部署多臺,否則查詢多了性能撐不住,對內(nèi)存要求不高。有的中小型站點,索引和搜索服務(wù)器在物理和邏輯上都是同一臺服務(wù)器。
8、作業(yè)服務(wù)器
主要用于后端應(yīng)用程序大批量大數(shù)據(jù)量復(fù)雜業(yè)務(wù)邏輯的定時作業(yè),大多數(shù)互聯(lián)網(wǎng)公司標配,某些企業(yè)的定時調(diào)度框架是直接部署在web服務(wù)器上的,可以減少這里的所謂作業(yè)服務(wù)器。
9、數(shù)據(jù)庫服務(wù)器
主要用于存儲和查詢數(shù)據(jù)。數(shù)據(jù)庫已是各種系統(tǒng)實際上的標配,內(nèi)存和CPU都要求極高,網(wǎng)絡(luò)和硬件要求也不低。大中型網(wǎng)站還需要支持數(shù)據(jù)庫的主從備份和容錯,甚至多實例的數(shù)據(jù)庫集群。
通常,大中型的互聯(lián)網(wǎng)應(yīng)用會經(jīng)歷一個從單一的數(shù)據(jù)庫服務(wù)器,到Master/Slave主從服務(wù)器,再到垂直分區(qū)(分庫),然后再到水平分區(qū)(分表,sharding)的過程。而在這個過程中,Master/Slave以及分庫相對比較容易,對應(yīng)用的影響也不是很大,但是分表會引起一些棘手的問題,比如不能跨越多個分區(qū)join查詢數(shù)據(jù),如何實現(xiàn)DB負載等等,這個時候就需要一個通用的DAL框架來屏蔽底層數(shù)據(jù)存儲對業(yè)務(wù)邏輯的影響,使得底層數(shù)據(jù)的訪問對應(yīng)用完全透明化。
10、nosql服務(wù)器
海量數(shù)據(jù)處理的興起,各種nosql產(chǎn)品層出不窮,nosql服務(wù)器主要用于處理海量數(shù)據(jù),支持存儲、查詢、分片等。
web應(yīng)用中,有兩個一直是不好實現(xiàn)橫向擴展或者由于歷史遺留問題實現(xiàn)代價非常大的東西,如你所知,就是:A、數(shù)據(jù)庫 B、網(wǎng)絡(luò)帶寬。
而某些nosql的出現(xiàn)很可能解決這個歷史遺留難題,現(xiàn)在已經(jīng)有nosql產(chǎn)品彌補了關(guān)系型數(shù)據(jù)庫天生不支持橫向擴展的缺點,在特定場景下正在替代關(guān)系型數(shù)據(jù)庫。
11、其他
需求不斷變化和應(yīng)用需要,某些互聯(lián)網(wǎng)企業(yè)還可能衍生出基于安全的授權(quán)/證書服務(wù)器,全局唯一的流水號服務(wù)器,會話服務(wù)器等等。
參考:<<大型網(wǎng)站技術(shù)架構(gòu)>>
<<構(gòu)建高性能web站點>>
http://www.cnblogs.com/terryli/archive/2008/04/06/1139121.html
http://www.cnblogs.com/ejiyuan/archive/2010/10/29/1796292.html
http://kb.cnblogs.com/page/99549/
http://highscalability.com/blog/2014/7/21/stackoverflow-update-560m-pageviews-a-month-25-servers-and-i.html
http://www.infoq.com/articles/perera-data-storage-haystack
http://lethain.com/introduction-to-architecting-systems-for-scale/
原文地址:https://blog.csdn.net/u010098331/article/details/52243121
當前文章:大型網(wǎng)站服務(wù)器架構(gòu)淺析
轉(zhuǎn)載來于:http://jinyejixie.com/news/204867.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站、網(wǎng)站制作、用戶體驗、ChatGPT、手機網(wǎng)站建設(shè)、外貿(mào)建站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容