- 相關(guān)推薦
企業(yè)應用系統架構優(yōu)化方法
系統優(yōu)化是一個(gè)全面而復雜的工作,很難通過(guò)某一方面的提升而獲得很好的效果,也很難在一朝一夕完成系統的全面優(yōu)化,每個(gè)系統都有其特性,需要綜合分析綜合考慮才能獲得比較好的效果。 小編下面為大家整理了一些企業(yè)應用系統架構優(yōu)化的方法,歡迎閱讀參考:
1 實(shí)現動(dòng)靜分離
所謂“動(dòng)靜”分離,就是將靜態(tài)資源如圖片、CSS、Js等和動(dòng)態(tài)資源如JSP、Servlet等進(jìn)行分開(kāi)的處理,通過(guò)使用不同的服務(wù)器,從而加快頁(yè)面的響應速度,這是目前互聯(lián)網(wǎng)應用最常用的方式之一,但是在企業(yè)應用端相對應用較少。
動(dòng)靜分離至少有兩個(gè)方面的好處,一是提高了靜態(tài)資源的處理速度,因為應用服務(wù)器處理靜態(tài)資源的速度—般都不如專(zhuān)業(yè)的web服務(wù)器,第二個(gè)好處就是減少了應用服務(wù)器的負擔,應用服務(wù)器專(zhuān)注于處理動(dòng)態(tài)請求,這對系統的穩定運行是有很大的幫助的。
要實(shí)現動(dòng)靜分離,有兩種方式,一種是在加載靜態(tài)資源的HTML語(yǔ)言中,將地址指定到不同的IP/域名上,實(shí)現徹底的分離。這種方式需要在設計之初進(jìn)行考慮,并不適合優(yōu)化項目,因為這種修改會(huì )產(chǎn)生很大的工作量。第二種方式是通過(guò)分發(fā)器,攔截對靜態(tài)資源的訪(fǎng)問(wèn),將動(dòng)態(tài)資源轉發(fā)給后端的應用服務(wù)器,實(shí)現動(dòng)靜分離。這種方式的好處是不需要改動(dòng)現有的代碼,僅需要做部署方式故調整,增加web服務(wù)器進(jìn)行靜態(tài)資源的處理。示意圖如下:
目前轉發(fā)器比較多,既有老牌的Apache Web Server、有性能卓越的Zeus,也有目前如日中天的Nainx,不同的項目可以按照各自的需求進(jìn)行選擇。
2 使用緩存技術(shù)
緩存技術(shù)是巨型項目、超大型項目中最重要的技術(shù),范圍也比較廣,從前端的頁(yè)面、應用中的數據、數據庫本身等均可以進(jìn)行緩存,每個(gè)方面使用的技術(shù)也千差萬(wàn)別。使用緩存可以帶來(lái)兩個(gè)方面的好處,一是緩存的數據可以被高速加載,從內存中讀取數據比通過(guò)數據庫或磁盤(pán)讀取具有更好的效率;二是最重要的,減少了數據庫服務(wù)器的壓力,有利于數據庫的穩定,數據庫可以使用更多的資源進(jìn)行查詢(xún)、統計等工作,有利于提高系統的整體運行速度。對于大中型應用而言,應用中的數據緩存和數據庫端的緩存是應該被考慮的。數據庫端的緩存在本文數據庫章節中進(jìn)行描述,本節描述應用中數據的緩存。
要使用緩存,首先需要明確緩存的內容。一般優(yōu)化項目不建議做全部數據緩存,或者使用內存數據庫之類(lèi)的技術(shù),這種修改工作量巨大,由此帶來(lái)的安全性、穩定性、數據的一致性都可能存在較大的隱患。所以,緩存的內容需要有所選擇,一般的說(shuō),應該根據數據的數據量、被讀取的次數、增加/更新頻率進(jìn)行選擇。如果數據較少、增加/更新頻率非常低,那么應該考慮直接緩存在應用服務(wù)器端,只有對于重要性較高、讀取次數較多、增加/更新頻率相對適中的數據,才適合使用獨立緩存。 確定緩存的內容之后,就應該確定緩存的方式。對于緩存于應用服務(wù)器端的資源,一般選擇KEY-ALUE(OBJECT)進(jìn)行緩存。對于獨立緩存,其內容也KEY-VALUE的格式進(jìn)行存儲(如果使用內存數據庫實(shí)現緩存,那么存儲的就是與數據庫相同的信息),VALUE可以選擇SON或者Java Object,其中JSON占用空間較少,讀取的網(wǎng)絡(luò )流量較少,讀取之后需要進(jìn)行轉換為Java對象;JavaXCN占用空間較大,讀取的網(wǎng)絡(luò )流量會(huì )較多,讀取之后無(wú)需進(jìn)行轉化(前提是要求該對象已經(jīng)系列化),不同系統可以各自特點(diǎn)進(jìn)行選擇。
對于獨立緩存,接下來(lái)的工作是選擇緩存服務(wù)器,緩存服務(wù)器選擇需要具有一定的原則:是否滿(mǎn)足已經(jīng)確定的緩存方式、對操作系統要求如何、穩定性如何、是否支持分布式、是否支持多節點(diǎn)熱備、客戶(hù)端(即JAVA調用接口)接口是否支持漂移(一個(gè)節點(diǎn)崩潰是否能轉移到另外的節點(diǎn))、客戶(hù)端是否高效等等。從目前業(yè)界來(lái)看,memcached、redis都是應用比較廣泛的緩存服務(wù)器。
選擇完緩存服務(wù)器之后,就需要對系統的代碼進(jìn)行一定的改造。改造的內容就是將通過(guò)數據庫讀取的信息改為從緩存服務(wù)器獲得,而對數據的保存、修改、刪除操作,既要操作數據庫上的數據,也需要對緩存服務(wù)器的信息進(jìn)行更新,如下圖所示:
由于是對系統的優(yōu)化,那么系統中已經(jīng)具有很多數據且并未進(jìn)入緩存,因此還需要將緩存服務(wù)器中的數據進(jìn)行初始化。有兩種方式來(lái)進(jìn)行,一種方式是直接將數據庫中的數據一次性加載到緩存服務(wù)器,另外一種方式是在修改Load數據的方式,先從緩存服務(wù)器獲取,如果沒(méi)有,則從數據庫獲取,然后同步到緩存服務(wù)器上。對于優(yōu)化項目,建議使用第二種方式。第二種方式一個(gè)額外的好處就是當緩存服務(wù)器全部不可用時(shí),系統也能提供完整的服務(wù)。
3 使用異步日志記錄
對于企業(yè)應用而言,對用戶(hù)的操作的記錄是很重要的,在系統出現某些問(wèn)題的時(shí)候,可以通過(guò)日志進(jìn)行數據恢復。一般系統要么沒(méi)有進(jìn)行記錄,要么使用數據庫進(jìn)行同步記錄。這部分數據會(huì )比較龐大,少則百萬(wàn)級,多則數億,并且隨著(zhù)使用量的增加而逐漸增加。這些表屬于使用率最高的表之一,在這些表上進(jìn)行經(jīng)常性數據插入,有可能會(huì )變成系統的噩夢(mèng)。
為了解決這個(gè)問(wèn)題,引入異步日志記錄,是較為理想的選擇。通過(guò)在web容器中增加過(guò)濾器,攔截用戶(hù)的請求,然后將用戶(hù)的請求和表單數據封裝為JSON格式的數據,采用異步方式發(fā)送到NoSQL數據庫,需要恢復的時(shí)候,通過(guò)對JSON數據進(jìn)行還原。這種方式有如下好處:
1)不需要改動(dòng)現有代碼而進(jìn)行了用戶(hù)操作記錄;
2)由于采用異步模式,幾乎不會(huì )增加用戶(hù)操作的時(shí)間;
3)采用NoSQL+JSON存儲,不用為每一類(lèi)操作特別設置特定的表結構,修改簡(jiǎn)單。
目前的NoSQL數據庫也逐漸顯露頭角,根據DB Engines在今年10月發(fā)布的數據庫排名中,MongoDB的NoSQL服務(wù)器已經(jīng)躍居第七位,因此NoSQL服務(wù)器目前推薦使用MongoDB。
【企業(yè)應用系統架構優(yōu)化方法】相關(guān)文章:
系統架構設計師:優(yōu)化顯示速度01-11
企業(yè)oa系統核心應用12-28
企業(yè)網(wǎng)站SEO優(yōu)化方法08-28
企業(yè)大規模系統整合架構如何選型10-27
企業(yè)網(wǎng)站的優(yōu)化和推廣方法06-25
如何搭建系統CSS架構12-31
企業(yè)信息系統應用論文01-22
系統架構設計模式大全08-22