添加時(shí)間:2018/3/19 13:59:56 編輯:奇億網(wǎng)站建設公司
為了使網(wǎng)站這個(gè)虛擬的大建筑能夠應對高并發(fā)訪(fǎng)問(wèn),海量數據處理,高可靠運行等一系列問(wèn)題,架構要素和分層架構是必不可少的,就猶如蓋房子要用建筑材料一層一層蓋一樣。廣州網(wǎng)站建設公司奇億網(wǎng)絡(luò )接下來(lái)為您一一詳細解答。
整個(gè)架構一般可以分為 應用層、服務(wù)層、數據層。實(shí)踐中大的分層結構中還可以繼續分層,比如應用層還可以繼續分為視圖層和業(yè)務(wù)邏輯層,服務(wù)層也可以繼續細分為數據接口層、邏輯處理層等。
通過(guò)分層,把一個(gè)龐大的系統切分為不同的部分,便于分工開(kāi)發(fā)和維護;各層之間相互有一定的獨立性,在網(wǎng)站的開(kāi)發(fā)中可以根據不同的需求進(jìn)行相應的調整。邏輯上分層之后,在物理部署上也可以根據需求制定不同的策略,剛開(kāi)始可以部署在同一臺物理機上,但是隨著(zhù)業(yè)務(wù)的發(fā)展,必然要對不同的模塊進(jìn)行分離部署
分層架構不僅僅是為了規劃軟件的邏輯結構以便于開(kāi)發(fā)維護,隨著(zhù)網(wǎng)站的發(fā)展,分層架構對網(wǎng)站的高并發(fā)分布式架構來(lái)說(shuō)尤為重要,進(jìn)行了分層以后,接下來(lái)可以從縱向進(jìn)行業(yè)務(wù)分割,根據不同的業(yè)務(wù)模塊一個(gè)項目劃分成不同的模塊交給單獨的團隊去開(kāi)發(fā)部署,完成后分別部署在不同的服務(wù)器上,通過(guò)鏈接進(jìn)行互聯(lián)。再根據不同情況來(lái)對不同的節點(diǎn)進(jìn)行冗余來(lái)保證網(wǎng)站的高可用性,接下來(lái)進(jìn)行緩存,CDN,反向代理等等的優(yōu)化。
1、架構要素
對于一個(gè)高訪(fǎng)問(wèn)量,大數據量的網(wǎng)站我們考慮什么呢?
1.1、性能
首先就是性能了,性能是一個(gè)網(wǎng)站的的重要指標,除非是沒(méi)得選擇,就這一個(gè)網(wǎng)站,不然用戶(hù)是絕對不會(huì )忍受一個(gè)超級慢的網(wǎng)站。正因為性能問(wèn)題無(wú)處不在,解決性能問(wèn)題的方式也各種各樣,從用戶(hù)請求一個(gè) url 開(kāi)始,進(jìn)行的每一個(gè)環(huán)節都可以進(jìn)行優(yōu)化;根據上面的分層,可以大致從三個(gè)方面進(jìn)行優(yōu)化,應用層優(yōu)化,服務(wù)層優(yōu)化,數據層優(yōu)化。
涉及到的知識就是 web 前端的優(yōu)化,應用服務(wù)器端的優(yōu)化和數據的存儲,索引,緩存等,這些在后面的內容里會(huì )分別展開(kāi)細說(shuō),但性能只是一個(gè)網(wǎng)站的必要條件,除此之外,因為無(wú)法預知網(wǎng)站可能會(huì )面臨的壓力或是攻擊,還要保證網(wǎng)站在各種情境下(高并發(fā),高負載,持續壓力不均勻等)保持穩定的性能。包括以下各個(gè)方面:性能測試指標、性能測試方法、性能優(yōu)化策略。
性能測試指標
主要的性能測試指標有響應時(shí)間、并發(fā)數、吞吐量、性能計數器等。
響應時(shí)間
指的是從發(fā)出這個(gè)請求開(kāi)始到接收到數據的時(shí)間,一般情況下這個(gè)時(shí)間都非常非常的小甚至小于測試的誤差值,所以我們可以采用重復請求的方式來(lái)獲取具體的響應時(shí)間,比如請求十萬(wàn)次,記錄總時(shí)間,然后計算出單次請求的時(shí)間
并發(fā)數
指能夠同時(shí)處理的請求數目,對于網(wǎng)站而言,即并發(fā)用戶(hù)數
吞吐量
是單位時(shí)間能能夠處理的請求數,體現的系統的整體處理能力> 衡量指標有很多,可以是 請求數/秒 頁(yè)面數/秒 訪(fǎng)問(wèn)人數/天 處理業(yè)務(wù)數/小時(shí) 等> 常用的量化指標有 TPS(每秒事務(wù)數) HPS(每秒 HTTP 請求數) QPS(每秒查詢(xún)數)等
性能計數器
描述服務(wù)器或操作系統的一些性能指標,包括系統負載(System Load),線(xiàn)程數,內存使用,磁盤(pán)和網(wǎng)絡(luò ) I/O 等,當這些值超過(guò)警告值(安全臨界值)時(shí),就會(huì )向開(kāi)發(fā)人員報警,及時(shí)處理異常。
性能測試方法
性能測試是一個(gè)統稱(chēng),具體可以分為 性能測試,負載測試,壓力測試,穩定性測試。
性能測試
以初期設計的指標為預期目標,不斷對系統施壓,看系統在預期的范圍內,能否達到預期的性能
負載測試
對系統不斷增加并發(fā)請求以增加系統壓力,直到系統某項或多項指標達到安全臨界值,這時(shí)繼續對系統施加壓力,系統的處理能力會(huì )有所下降
壓力測試
在超過(guò)安全負載的情況下,繼續施壓,直到系統崩潰或不再能夠處理任何請求,以此來(lái)計算系統的最大壓力承受能力
穩定性測試
在一定的壓力(不均勻施壓)下,系統能夠穩定的運行較長(cháng)時(shí)間
性能優(yōu)化策略
要定位問(wèn)題產(chǎn)生原因,排查不同環(huán)節的日志,分析哪個(gè)環(huán)節的響應時(shí)間與預期不相符,然后分析影響性能的原因,是代碼問(wèn)題還是架構設計不合理,或者系統資源不足,然后根據實(shí)際問(wèn)題進(jìn)行解決。
1.2、可用性
對于大型網(wǎng)站而言,出現宕機的情況是可怕的,因為可能有上千萬(wàn)的用戶(hù)量,短短幾分鐘的宕機都有可能導致網(wǎng)站聲譽(yù)掃地,如果是電商類(lèi)的網(wǎng)站,更可能會(huì )導致用戶(hù)的財產(chǎn)損失,甚至會(huì )攤上官司,那時(shí)候損失的就不僅是金錢(qián)和用戶(hù)了,因此要保證能夠提供每天 24 小時(shí)的可用,但實(shí)際中服務(wù)器并不能保證每天 24 小時(shí)都能平穩的運行,可能出現硬件問(wèn)題,也可能出現軟件問(wèn)題,總之問(wèn)題總是會(huì )有的。
所以我們高可用設計的目標就是在某些服務(wù)器宕機的情況下,也能夠保證服務(wù)或應用正常運行,網(wǎng)站高可用的主要手段是冗余,應用部署在多臺服務(wù)器上同時(shí)提供訪(fǎng)問(wèn),數據存儲在多臺數據服務(wù)器之間互相進(jìn)行熱備份,這樣任何一臺服務(wù)器宕機都不會(huì )影響服務(wù)或應用的整體,也不會(huì )產(chǎn)生數據丟失。
對于應用服務(wù)器而言,多臺應用服務(wù)器通過(guò)一個(gè)負載均衡設備組成一個(gè)集群同時(shí)對外提供服務(wù),當一臺服務(wù)器宕機后,服務(wù)切換到其他服務(wù)器上繼續執行,這樣就可以保證了網(wǎng)站的高可用性,前提是應用服務(wù)器不允許存儲用戶(hù)會(huì )話(huà)信息,否則將會(huì )丟失,這樣即使用戶(hù)請求轉接到其他服務(wù)器上面也無(wú)法繼續執行。
對于數據存儲服務(wù)器,要提供服務(wù)器之間的實(shí)時(shí)備份,這樣當一臺服務(wù)器宕機的時(shí)候,將數據訪(fǎng)問(wèn)切換到其他服務(wù)器上,并進(jìn)行數據恢復和備份,衡量一個(gè)系統架構設計是否滿(mǎn)足高可用的目標,就是假設其中一臺或多臺服務(wù)器宕機以及出現各種不可預期的問(wèn)題時(shí),系統整體是否依然可用。
1.3、伸縮性
面對著(zhù)大量用戶(hù)的高并發(fā)訪(fǎng)問(wèn)和海量的數據存儲,不可能只用一臺服務(wù)器就能夠滿(mǎn)足全部需求,存儲全部數據。通過(guò)集群 的方式將多臺服務(wù)器組成一個(gè)整體共同提供服務(wù),所謂伸縮性就是指通過(guò)不斷向集群中加入服務(wù)器的手段來(lái)應對不斷上升的用戶(hù)并發(fā)訪(fǎng)問(wèn)壓力和不斷增長(cháng)的數據存儲需求,對于應用服務(wù)器集群,只要服務(wù)器上不存儲數據,所有的服務(wù)器都是對等的,通過(guò)使用合適的負載均衡設備就可以向集群中不斷加入新的服務(wù)器。
對于緩存服務(wù)器而言,加入新的服務(wù)器可能會(huì )導致緩存路由失效,從而導致大部分的緩存數據都無(wú)法訪(fǎng)問(wèn),需要改進(jìn)緩存路由算法來(lái)保證緩存數據可訪(fǎng)問(wèn),關(guān)系數據庫雖然支持數據復制,主從熱備份等機制,但是很難實(shí)現大規模集群的可伸縮性。
1.4、可擴展性
網(wǎng)站的擴展性直接關(guān)系到網(wǎng)站功能模塊的開(kāi)發(fā),網(wǎng)站快速發(fā)展,功能也不斷的增加,網(wǎng)站架構的可擴展性的主要目的是使其能夠快速的應對需求變化,是為了能夠在增加新業(yè)務(wù)時(shí),盡量實(shí)現對現有產(chǎn)品無(wú)影響,不需要改動(dòng)或是改動(dòng)很少現有業(yè)務(wù)就能夠上線(xiàn)新產(chǎn)品;不同的產(chǎn)品業(yè)務(wù)之間的耦合度很小,一個(gè)產(chǎn)品或業(yè)務(wù)的改動(dòng)不會(huì )對其他造成影響。
1.5、安全性
最后的就是安全性了,互聯(lián)網(wǎng)是一個(gè)開(kāi)放的平臺,任何人在任何地方都可以訪(fǎng)問(wèn)網(wǎng)站,安全架構就是保護網(wǎng)站不受惡意的訪(fǎng)問(wèn)和攻擊,保護數據不被竊取。