- 相關(guān)推薦
Web系統(tǒng)架構(gòu)的性能優(yōu)化
隨著網(wǎng)絡(luò)的發(fā)展,使得許多系統(tǒng)開發(fā)、設(shè)計者對系統(tǒng)的設(shè)計、維護要求越來越高。那么如何能使系統(tǒng)的性能得到更好的運用,我們一起來看看!
1 靜態(tài)頁面
大家都知道,效率最高、消耗最小的就是純靜態(tài)化的html頁面,所以要盡可能使系統(tǒng)上的頁面采用靜態(tài)頁面來實現(xiàn),這個最簡單的方法其實也是最有效的方法。但是對于內(nèi)容多且頻繁更新的系統(tǒng),無法全部手動去逐個實現(xiàn),也許可以采用信息發(fā)布系統(tǒng)CMS來管理和實現(xiàn)。盡可能的靜態(tài)化也是提高性能的必要手段,同時頁面靜態(tài)化也是某些緩存策略使用的手段,對于系統(tǒng)中頻繁使用數(shù)據(jù)庫查詢但內(nèi)容更新很小的應(yīng)用,可以考慮使用頁面靜態(tài)化來實現(xiàn),這些信息都可以進行后臺管理并且存儲在數(shù)據(jù)庫中,這些信息其實大量被前臺程序調(diào)用,我們可以采用Ajax的方式來處理相關(guān)的請求操作,針對于查詢數(shù)據(jù)來說這樣就可以根據(jù)所需來獲取相應(yīng)的數(shù)據(jù),而不必要刷新整個頁面。其實我們是不是可以考慮一下,像開發(fā)游戲那樣把相關(guān)的都放到客戶端來做處理呢,這樣就大大減少了服務(wù)器的負載,服務(wù)器可以更好地提供服務(wù),而不必要去做太多的處理。面向?qū)ο蠡哪_本編程,更好地解決了難于維護的問題。
注:不建議使用Ext、Dwr等Ajax框架,這些框架都很繁瑣不利于維護,可以使用相對比較簡單的Json、JQuery等。
2 程序代碼
程序是構(gòu)成系統(tǒng)的核心,是系統(tǒng)的靈魂。良好的命名規(guī)則與編程規(guī)范可以減少程序代碼之間的冗余,程序編寫的好與壞、性能的高與低都決定了系統(tǒng)是否可以高效率的運行;诂F(xiàn)在都是面向接口化編程,就更好地解決了程序的耦合性。分層架構(gòu)與插件化架構(gòu)已成為Web系統(tǒng)架構(gòu)的趨勢,它可以不依賴其他接口或程序使系統(tǒng)也可以運行,大大減少系統(tǒng)代碼的重構(gòu),更有效地降低了維護成本。
3 影像服務(wù)器分離
大家知道,對于Web服務(wù)器來說,不管是Apache、IIS還是其他容器,影像是最消耗資源的,于是我們有必要將影像與頁面進行分離,獨立的影像服務(wù)器,甚至很多臺影像服務(wù)器,這樣的架構(gòu)可以降低提供頁面訪問請求的服務(wù)器系統(tǒng)壓力,并且可以保證系統(tǒng)不會因為影像問題而崩潰。在應(yīng)用服務(wù)器和影像服務(wù)器上,可以進行不同的配置優(yōu)化,比如Apache在配置ContentType的時候可以盡量少支持LoadModule,以保證更高的系統(tǒng)消耗和執(zhí)行效率。京北方也采用了影像服務(wù)器架構(gòu)上的分離,并且還提供了高效率的影像圖片壓縮技術(shù),這樣更好地節(jié)約了影像服務(wù)器的空間,還可以針對不同要求提取相關(guān)影像。另外在處理靜態(tài)頁面或者圖片、JS等訪問方面,可以考慮使用lighttpd代替Apache,它提供了更輕量級和更高效的處理能力。
4 數(shù)據(jù)庫集群和庫表散列
金融行業(yè)系統(tǒng)都有復(fù)雜的應(yīng)用,這些應(yīng)用必須使用數(shù)據(jù)庫,那么在面對大量數(shù)據(jù)處理的時候,數(shù)據(jù)庫的瓶頸很快就能顯現(xiàn)出來,這時一臺數(shù)據(jù)庫將很快無法滿足應(yīng)用,于是我們需要使用數(shù)據(jù)庫集群或庫表散列。在數(shù)據(jù)庫集群方面,很多數(shù)據(jù)庫都有自己的解決方案,Oracle、Sybase等都有很好的方案。對于使用了什么樣的DB,就參考相應(yīng)的解決方案來實施即可。數(shù)據(jù)庫集群由于在架構(gòu)、成本、擴張性方面都會受到所采用DB類型的限制,于是我們需要從應(yīng)用程序的角度來考慮改善系統(tǒng)架構(gòu),庫表散列是常用并且最有效的解決方案。我們在應(yīng)用程序中安裝業(yè)務(wù)和應(yīng)用或者功能模塊將數(shù)據(jù)庫進行分離,不同的模塊對應(yīng)不同的數(shù)據(jù)庫或者表,再按照一定的策略對某個頁面或者功能進行更小的數(shù)據(jù)庫散列。比如影像表,按照影像ID進行表散列,這樣就能夠低成本地提升系統(tǒng)的性能并且有很好的擴展性。最終可以在配置文件中進行簡單的配置便能讓系統(tǒng)隨時增加一臺低成本的數(shù)據(jù)庫進來補充系統(tǒng)性能。
5 緩存機制
緩存一詞搞技術(shù)的都接觸過,很多地方用到緩存。這里先講述最基本的兩種緩存。架構(gòu)方面的緩存,對Apache比較熟悉的人都能知道Apache提供了自己的modproxy緩存模塊,也可以使用外加的Squid進行緩存,這兩種方式均可以有效地提高Apache的訪問響應(yīng)能力。系統(tǒng)程序開發(fā)方面的緩存,Linux上提供的Memcached是常用的緩存方案,可以在Web開發(fā)中使用,可以實時或者Cron地把數(shù)據(jù)、對象等內(nèi)容進行緩存。另外在使用Web語言開發(fā)的時候,各種語言基本都有自己的緩存模塊和方法,Java就更多了。
6 負載均衡
負載均衡(Load Balance)建立在現(xiàn)有網(wǎng)絡(luò)結(jié)構(gòu)之上,它提供了一種廉價、有效、透明的方法擴展網(wǎng)絡(luò)設(shè)備和服務(wù)器的帶寬、增加吞吐量、加強網(wǎng)絡(luò)數(shù)據(jù)處理能力、提高網(wǎng)絡(luò)的靈活性和可用性負載均衡,是系統(tǒng)解決高負荷訪問和大量并發(fā)請求采用的終極解決辦法。
(1)硬件負載均衡。硬件負載均衡解決方案是直接在服務(wù)器和外部網(wǎng)絡(luò)間安裝負載均衡設(shè)備,這種設(shè)備我們通常稱之為負載均衡器,由于專門的設(shè)備完成專門的任務(wù),獨立于操作系統(tǒng),整體性能得到大量提高,加上多樣化的負載均衡策略、智能化的流量管理,可達到最佳的負載均衡需求。硬件負載均衡在功能、性能上優(yōu)于軟件方式,不過成本昂貴,如果可以的話還是比較好的選擇。
(2)軟件負載均衡。軟件負載均衡解決方案是指在一臺或多臺服務(wù)器相應(yīng)的操作系統(tǒng)上安裝一個或多個附加軟件來實現(xiàn)負載均衡,如DNS Load Balance,Connect Control等,它的優(yōu)點是基于特定環(huán)境、配置簡單、使用靈活、成本低廉,可以滿足一般的負載均衡需求。
【W(wǎng)eb系統(tǒng)架構(gòu)的性能優(yōu)化】相關(guān)文章:
Linux系統(tǒng)Web服務(wù)器性能測試01-23
系統(tǒng)架構(gòu)設(shè)計師:優(yōu)化顯示速度01-11
系統(tǒng)架構(gòu)設(shè)計師:性能調(diào)整和診斷01-11
基于Web的MES系統(tǒng)安全架構(gòu)設(shè)計及分析10-16