乙個j2ee專案的效能會受多方面的影響,比較常見的乙個是web前台的大量訪問,web前台的程式要能夠處理高並 髮量的請求,但要達到這種要求了一般從編碼角度來考慮起的作用不太大,我們通常的乙個web專案使用mvc模式的一些開源架構作為基礎,使前台的程式結構 比較明了,在有些地方使用lazyloading的設計模式,一般也就僅此而已,跟多的改善效能的措施一是垂直方式(如增加機器的硬體,設定一些jvm和 伺服器的優化配置),二是水平方式(採用群集的方式,在多台機器上部署web前台的程式,利用負載均衡的策略將使用者的請求傳送到不同的伺服器上),通過上 述方式來改善web前台的效能(實際上是使用者體驗)。
我們在這所說的web前台指的是一些頁 面相應的程式和一些簡單的邏輯處理,不包含真正進行業務邏輯處理的功能,當然你可以將所有的一切放在乙個專案中,部署到一台伺服器上,完全沒有問題(除了 有些功能的完成不是你所寫的而是你呼叫別的程式來得到結果) ,但在乙個大型的j2ee專案中通常是不會由乙個程式專案完成的,在這樣的專案中,前台的程 序相應使用者的請求後,將一些資訊封裝好後去呼叫中介軟體程式或後台程式,那這些中介軟體和後台一般會單獨作為乙個專案部署在其他的機器上,之所以要把它們分開 部署,就是可能乙個vm的處理效能不夠,而採用分布式處理的方式,採用分布式處理可以提公升效率,但也帶來了一些問題,如安全性問題,分布式事務處理的問題 等等,好在這些問題一般我們在寫程式是不用考慮太多,相應的分布式處理框架一般都提供解決的方法,但仍有一些是我們可以通過程式來改善的,比如在安全性問 題上,我們在傳輸資訊是可以加上自己的密匙(比如一些md5或是base64的字串,傳輸的資訊也可以先轉換成md5或是base64再傳輸,當然這些 對應的是些字串的資訊)。雖然通過分布式處理方式可以提高單個vm的效率,但它要通過網路來相互呼叫,而這種遠端的呼叫要比vm內部的方法呼叫要慢很多 (好幾個數量級),所有我們儘量減少網路呼叫的次數,比如運用vo模式,將所有的狀態資料報裝成乙個可序列化的物件來傳輸或讀取,從而減少遠端呼叫的次 數。另一方面在分布式處理的方式中如xmlrpc,web services中我們可以多考慮用非同步呼叫的方式來取代同步呼叫的方式,這也可以改善呼叫方的效能(多是web前台),但有些情況是不能用非同步方式呼叫 的,比如呼叫方等著返回的結果來進行下步的實時操作,但有些比如呼叫方呼叫傳送郵件的中介軟體就可以用非同步的方法了。
在 中介軟體或後台程式中不可避免的要同資料庫打交道,持久層的設計也是影響乙個j2ee專案的重要原因,這中間有兩方面,乙個是同資料庫的連線是個開銷比較大 的地方,在這裡我們大多用資料來源來連線程式和資料庫;還有乙個就是運算元據庫的**,這個方面的東西要說的很多,現在一般是用orm來做資料持久方面的工 作,我們將在以後單獨講講。除了持久層方面,中介軟體部分還有很多別的地方要注意的。乙個就是我們在中介軟體上呼叫業務邏輯處理這部分,乙個使用者呼叫乙個針對 他的業務邏輯處理物件,如果用普通的類來做,中介軟體的負荷也就比較大了,在這裡我們可以用session facade模式,即用session bean來封裝業務邏輯部分,使用者的請求到達中介軟體後有乙個相對應的session bean來處理(多為簡單的無狀態的session bean) ,之所以這麼做是利用了ejb容器對session bean的優化,另一方面在session bean中跨資料庫的事務也很好維持(也是由ejb容器來負責)。對應於session facade,還有message facade,它是利用訊息驅動bean和jms來處理一些訊息和佇列方面的問題,它也可以是非同步的方式(這方面我還沒玩過,等有些經驗後再總結出來)。 除了採用session bean來處理使用者的邏輯請求,在中介軟體中我們還可以採用service locator模式來提高中介軟體的效能,說白了,該模式就是採用快取機制來響應前台的呼叫,多在實際中使用乙個static 的hashmap來做為快取,儲存一些如ejbhome,jms連線工廠,資料來源等,從而減少大量的jndi查詢和遠端呼叫的次數。
以上就是我用過的一些改善j2ee程式效能的方法,簡單好用
J2EE系統中影響效能的一些因素
6月24日去參加了bea公司的成都user group的活動,聽了幾場講座。將我覺得最有意義和最有啟發的內容記下來。j2ee系統中影響效能的一些因素 1 資料庫沒有優化 由於大多數的j2ee系統都會經常訪問資料庫,如果資料庫沒有做優化,對系統的效能會有很大的影響。2 網路沒有優化 如果網路沒有優化,...
J2EE系統中影響效能的一些因素
j2ee系統中影響效能的一些因素 1 資料庫沒有優化 由於大多數的j2ee系統都會經常訪問資料庫,如果資料庫沒有做優化,對系統的效能會有很大的影響。2 網路沒有優化 如果網路沒有優化,就有可能會產生瓶頸,影響效能。3 連線池太小 連線池過小,會導致很多程序等待連線池資源。4 過度的序列化 在不需要序...
J2EE初學 一些配置流程
這幾天再看手寫的那種j2ee配置,不是用畫的方式來寫的。就以乙個簡單的structs登陸來寫吧。首先要寫前台的登陸頁面,這個簡述,關鍵是在 中的action,要注意,它是和 struts config.xml檔案中 相對應的,還有就是在web.xml中的 也要以.do的形式結尾。然後就要寫乙個log...