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