企業(yè)應(yīng)用系統(tǒng)架構(gòu)優(yōu)化方法
系統(tǒng)優(yōu)化是一項(xiàng)全面而復(fù)雜的工作,很難通過(guò)一定程度的改進(jìn)取得良好的效果,也很難在一夜之間完成系統(tǒng)的綜合優(yōu)化。每個(gè)系統(tǒng)都有自己的特點(diǎn),需要綜合分析和考慮才能取得更好的效果。我整理了一些企業(yè)應(yīng)用系統(tǒng)架構(gòu)優(yōu)化方法,歡迎閱讀參考:
1。實(shí)現(xiàn)動(dòng)靜分離應(yīng)用架構(gòu)和技術(shù)架構(gòu)的區(qū)別。
所謂“動(dòng)靜”分離,就是把圖片等靜態(tài)資源,CSS、Js等待動(dòng)態(tài)資源JSP、Servlet通過(guò)使用不同的服務(wù)器來(lái)加快頁(yè)面響應(yīng)速度是目前互聯(lián)網(wǎng)應(yīng)用中最常用的方式之一,但在企業(yè)應(yīng)用端的應(yīng)用相對(duì)較少。
動(dòng)態(tài)和靜態(tài)分離至少有兩個(gè)好處,一是提高靜態(tài)資源的處理速度,因?yàn)閼?yīng)用服務(wù)器處理靜態(tài)資源的速度一般不如專(zhuān)業(yè)網(wǎng)絡(luò)服務(wù)器,第二個(gè)好處是減輕應(yīng)用服務(wù)器的負(fù)擔(dān),應(yīng)用服務(wù)器專(zhuān)注于處理動(dòng)態(tài)要求,這對(duì)系統(tǒng)的穩(wěn)定運(yùn)行有很大的幫助。系統(tǒng)技術(shù)框架有哪些。
有兩種方法可以實(shí)現(xiàn)動(dòng)態(tài)和靜態(tài)分離。一種是在加載靜態(tài)資源的HTML語(yǔ)言中指定不同的地址IP在域名上,實(shí)現(xiàn)完全分離。這種方法需要在設(shè)計(jì)之初考慮,不適合優(yōu)化項(xiàng)目,因?yàn)檫@種修改會(huì)產(chǎn)生很大的工作量。第二種方法是通過(guò)分發(fā)器攔截靜態(tài)資源的訪(fǎng)問(wèn),將動(dòng)態(tài)資源轉(zhuǎn)發(fā)給后端應(yīng)用服務(wù)器,實(shí)現(xiàn)動(dòng)態(tài)和靜態(tài)分離。這種方法的優(yōu)點(diǎn)是不需要更改現(xiàn)有代碼,只需要調(diào)整部署方法,增加web服務(wù)器進(jìn)行靜態(tài)資源處理。示意圖如下:系統(tǒng)架構(gòu) 應(yīng)用架構(gòu) 技術(shù)架構(gòu)。
目前轉(zhuǎn)發(fā)器比較多,既有老牌ApacheWebServer、**的性能Zeus,目前也有如日中天的Nainx,可根據(jù)各自的需要選擇不同的項(xiàng)目。系統(tǒng)整體架構(gòu)。
使用緩存技術(shù)
緩存技術(shù)是巨型項(xiàng)目和超大型項(xiàng)目中最重要的技術(shù),范圍廣泛。它可以從前端頁(yè)面、應(yīng)用程序中的數(shù)據(jù)和數(shù)據(jù)庫(kù)本身中緩存,各方面使用的技術(shù)也非常不同。緩存的使用可以帶來(lái)兩個(gè)好處。首先,緩存數(shù)據(jù)可以高速加載。從內(nèi)存中讀取數(shù)據(jù)比通過(guò)數(shù)據(jù)庫(kù)或磁盤(pán)讀取更有效;第二,最重要的是減少數(shù)據(jù)庫(kù)服務(wù)器的壓力,有利于數(shù)據(jù)庫(kù)的穩(wěn)定性。數(shù)據(jù)庫(kù)可以使用更多的資源進(jìn)行查詢(xún)和統(tǒng)計(jì),從而提高系統(tǒng)的整體運(yùn)行速度。對(duì)于大中型應(yīng)用,應(yīng)考慮應(yīng)用中的數(shù)據(jù)緩存和數(shù)據(jù)庫(kù)端的緩存。本文數(shù)據(jù)庫(kù)章節(jié)描述了數(shù)據(jù)庫(kù)端的緩存,描述了應(yīng)用中數(shù)據(jù)的緩存。應(yīng)用架構(gòu)解決什么問(wèn)題。
要使用緩存,首先要明確緩存的內(nèi)容。一般來(lái)說(shuō),不建議優(yōu)化項(xiàng)目進(jìn)行所有數(shù)據(jù)緩存或使用內(nèi)存數(shù)據(jù)庫(kù)等技術(shù)。這種修改工作量巨大,可能存在安全性、穩(wěn)定性和數(shù)據(jù)一致性的巨大隱患。因此,需要選擇緩存內(nèi)容。一般來(lái)說(shuō),應(yīng)根據(jù)數(shù)據(jù)量、讀取次數(shù)、增加/更新頻率進(jìn)行選擇。如果數(shù)據(jù)少,增加/更新頻率很低,則應(yīng)考慮直接緩存在應(yīng)用服務(wù)器端。獨(dú)立緩存只適用于重要性高、讀取次數(shù)多、增加/更新頻率相對(duì)適中的數(shù)據(jù)。在確定緩存內(nèi)容后,應(yīng)確定緩存的方式。一般選擇緩存在應(yīng)用服務(wù)器端的資源KEY-ALUE(OBJECT)進(jìn)行緩存。對(duì)于獨(dú)立緩存,其內(nèi)容也是KEY-VALUE存儲(chǔ)格式(如果使用內(nèi)存數(shù)據(jù)庫(kù)實(shí)現(xiàn)緩存,則存儲(chǔ)與數(shù)據(jù)庫(kù)相同的信息),VALUE可以選擇SON或者JavaObject,JSON占用空間少,讀取的網(wǎng)絡(luò)流量少,讀取后需要轉(zhuǎn)換為Java對(duì)象;JavaXCN占用空間大,讀取的網(wǎng)絡(luò)流量會(huì)更大,讀取后不需要轉(zhuǎn)換(前提是對(duì)象已經(jīng)系列化),不同的系統(tǒng)可以根據(jù)自己的特點(diǎn)進(jìn)行選擇。應(yīng)用技術(shù)架構(gòu)。
對(duì)于獨(dú)立緩存,下一步是選擇緩存服務(wù)器。緩存服務(wù)器的選擇需要有一定的原則:是否滿(mǎn)足已確定的緩存模式、操作系統(tǒng)的要求、穩(wěn)定性、分布式、多節(jié)點(diǎn)熱準(zhǔn)備、客戶(hù)端(即JA調(diào)用接口)接口是否支持漂移(一個(gè)節(jié)點(diǎn)崩潰是否可以轉(zhuǎn)移到另一個(gè)節(jié)點(diǎn))、客戶(hù)端是否**等。從目前的行業(yè)來(lái)看,memcached、redis都是應(yīng)用廣泛的緩存服務(wù)器。
選擇緩存服務(wù)器后,需要對(duì)系統(tǒng)代碼進(jìn)行一定程度的轉(zhuǎn)換。轉(zhuǎn)換的內(nèi)容是將通過(guò)數(shù)據(jù)庫(kù)讀取的信息從緩存服務(wù)器獲取,數(shù)據(jù)的保存、修改和刪除不僅需要操作數(shù)據(jù)庫(kù)上的數(shù)據(jù),還需要更新緩存服務(wù)器的信息,如下圖所示:系統(tǒng)架構(gòu)圖怎么理解。
由于系統(tǒng)是優(yōu)化的,系統(tǒng)中有大量的數(shù)據(jù),沒(méi)有進(jìn)入緩存,因此緩存服務(wù)器中的數(shù)據(jù)需要初始化。有兩種方法,一種是直接將數(shù)據(jù)庫(kù)中的數(shù)據(jù)一次加載到緩存服務(wù)器,另一種是修改Load數(shù)據(jù),從緩存服務(wù)器獲取,如果沒(méi)有,從數(shù)據(jù)庫(kù)獲取,然后同步到緩存服務(wù)器。建議使用第二種方法來(lái)優(yōu)化項(xiàng)目。第二種方法的一個(gè)額外優(yōu)點(diǎn)是,當(dāng)所有緩存服務(wù)器都不可用時(shí),系統(tǒng)也可以提供完整的服務(wù)。
3使用異步日志記錄制作系統(tǒng)的主流架構(gòu)。
對(duì)于企業(yè)應(yīng)用程序來(lái)說(shuō),記錄用戶(hù)的操作是非常重要的。當(dāng)系統(tǒng)出現(xiàn)某些問(wèn)題時(shí),可以通過(guò)日志恢復(fù)數(shù)據(jù)。一般系統(tǒng)要么不記錄,要么使用數(shù)據(jù)庫(kù)同步記錄。這部分?jǐn)?shù)據(jù)將相對(duì)較大,從數(shù)百萬(wàn)到數(shù)億不等,并隨著使用量的增加而逐漸增加。這些表是使用率**的表之一,經(jīng)常插入這些表上的數(shù)據(jù)可能會(huì)成為系統(tǒng)的噩夢(mèng)。系統(tǒng)設(shè)計(jì)架構(gòu)。
為了解決這個(gè)問(wèn)題,引入異步日志記錄是一個(gè)理想的選擇。將過(guò)濾器添加到web容器中,攔截用戶(hù)請(qǐng)求,然后將用戶(hù)請(qǐng)求和表單數(shù)據(jù)包裝成JSON格式的數(shù)據(jù),并通過(guò)異步發(fā)送到NOSQL數(shù)據(jù)庫(kù)。當(dāng)需要恢復(fù)時(shí),通過(guò)恢復(fù)JSON數(shù)據(jù)。這種方法有以下優(yōu)點(diǎn):
1)用戶(hù)操作記錄不需要更改現(xiàn)有代碼;系統(tǒng)基于什么架構(gòu)。
2)由于采用異步模式,用戶(hù)操作時(shí)間幾乎不會(huì)增加;應(yīng)用架構(gòu)圖和業(yè)務(wù)架構(gòu)圖。
3)采用NoSQL JSON存儲(chǔ),不需要為每種操作設(shè)置特定的表結(jié)構(gòu),修改簡(jiǎn)單。
根據(jù)DBEngines今年10月發(fā)布的數(shù)據(jù)庫(kù)排名,目前的NoSQL數(shù)據(jù)庫(kù)也逐漸顯露出頭角,MongoDBNoSQL服務(wù)器已躍居第七,因此目前推薦使用NoSQL服務(wù)器MongoDB。
中企動(dòng)力是一家專(zhuān)業(yè)的網(wǎng)絡(luò)推廣公司,我們擁有豐富的網(wǎng)絡(luò)推廣經(jīng)驗(yàn)和專(zhuān)業(yè)的團(tuán)隊(duì),能夠?yàn)槠髽I(yè)提供全方位的網(wǎng)絡(luò)推廣服務(wù)。我們?yōu)槠髽I(yè)提供網(wǎng)站建設(shè)、網(wǎng)站優(yōu)化、平臺(tái)推廣等服務(wù),幫中企動(dòng)力業(yè)在網(wǎng)絡(luò)上提升知名度、擴(kuò)大影響力、提升銷(xiāo)售額。如果您有網(wǎng)絡(luò)推廣的需求,歡迎聯(lián)系中企動(dòng)力加微信:CE4006608066,我們將竭誠(chéng)為您服務(wù)。