亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

提升EJB性能的12招

2019-11-18 12:37:59
字體:
來源:轉載
供稿:網友

  EnterPRise javaBeans(EJB)是一種被廣泛采用的基于J2EE平臺上的服務端組件體系架構,它可以用來快速開發靈活的、可重用的、可移植到各個中間件平臺上的以任務為要害的企業級應用。同時,由于采用開放的協作制定規范,EJB架構能保護IT投資,減少對供給商的依靠性,避免局限在某一個供給商的技術實現上。其中,性能是EJB應用程序成敗的要害。
  為了開發高性能的企業級應用,我們必須意識到良好的設計和編程規范是性能提升的基礎。理想狀態是在開發前我們必須先行把握優秀的編程規范。而到了開發后期,再將重點轉移到整個應用程序性能的調整:包括Web服務器, 應用服務器業以及數據庫。策略是找出脆弱的一環,然后進行改進。為達到最佳性能,本文將討論一些通用的技巧,幫助我們設計和實現一個高性能的基于EJB的企業級應用。
  EJB的開發
  我們前八個EJB性能方面的技巧是關于在應用系統設計和開發階段的。因為在服務器環境下,多數需要優化的代碼,更多地是在布署階段之前。以便在問題不可收拾前把問題找出并解決。
  1. 設計粗粒度(coarse-grained) 的EJB 遠程(remote) 接口
  由于每個通過遠程或本地(home)接口調用EJB的方法都屬于遠程調用,對于大多數細粒度(fine-grained)的對象交互來說調用中間件的開銷大得簡直讓人無法承受。為了避免這類問題, 每個EJB應代表一個獨立的業務對象,有獨立的特性和生命周期。具有依靠性的對象決不能用EJB表示。相反,它應該作為一個EJB內部的Java類來實現。例如,一張購物單可用一個EJB來實現,而每張購物單上的子項就不應該用EJB,可以采用helper類的形式實現。
  2. 設計粗粒度的EJB遠程接口方法
  正如上面所提到的,每個客戶端對EJB的調用都是遠程調用,另外還要進行一些檢查操作,比如存取控制,事務處理以及激活/休眠等。 因此,EJB調用比遠程調用要慢上好幾倍,與調用本地方法的時間相差就更大了。減少方法的調用次數可以提高性能。設計粗線優化的方法中的一個技巧,就是在單個方法調用過程中盡量增加數據往返傳輸的數量,把多個方法合并以減少方法的個數。比如,代碼段一顯示的是一個設計欠佳的遠程接口,因為客戶端必須多次調用來取得Person的數據。相比之下代碼段二改進了性能表現,因為它在一次方法調用中使用了粗粒度的方法,方法的個數變少了,從而減少了調用次數(盡管這些方法傳輸的數據更多)。
  3. 減少JNDI 查找次數
  由于各種應用服務器的命名和目錄服務在具體實現方法上的差異,JNDI 的查找過程可能會比較費時。 (注:JNDI對EJB資源,比如數據源、bean引用,乃至環境項(environment entry)的查找可能花費巨大,且避免重復查找并非易事。)某些應用服務器在不同的機器上采用單獨的進程來實現目錄信息。在這種情況下緩存home handle是一個提升性能的好辦法。(見代碼段3). facade是一個對象,它為多個對象提供一個的統一接口。一個服務端的facade能簡化處理,使得客戶端不需了解每個服務器端的EJB(見圖一)。在這種方式下所有客戶端對服務器的調用都經由對象ServerFacade。如代碼段3所示,ServerFacade是一個會話 EJB,緩存了所有需要的EJB的home handle.而客戶也可以在客戶端用singleton對象來緩存ServerFacade的home handle。
   提升EJB性能的12招(圖一)
  圖 1.客戶端通過ServerFacade訪問服務器。ServerFacade是一個會話 EJB,緩存了所有需要的EJB的home handle.
  4. 利用會話 bean的包從一個實體 bean中返回多行數據
  通常,在我們的應用程序中一個bean表示數據庫的一個邏輯行。實體 bean的本地接口中定義了一個或多個finder方法。每個方法用于查找一個實體對象或多個實體對象的集合。 在客戶端通過調用實體bean的finder方法來取得實體對象的集合。 然后客戶端從該集合依次取得數據。假如是遠程客戶端,每次遠過程調用取得一行數據,資源開銷太大了。我們可以采用一個在服務端的會話bean把所有的行打包,作為一個實體本地對象的finder方法的返回結果。代碼段4 顯示了一個會話 bean對象如何通過一次調用把多行數據的向量/集合發送到客戶端。該方法可用在當GUI數據(如列表框或電子表格的數據)保持靜態不變的情況。通過擴充這種辦法也可以支持客戶端的數據修改。
  5.采用會話 bean來處理大量的數據庫操作
  實體bean適于一次處理數據庫的一個邏輯行,但是在數據庫的批量操作中會引發性能方面的很多額外開銷。比如,一個返回1000行的實體bean的finder方法需要執行1001次數據庫的select操作,導致性能急劇下降。假如用會話 bean來處理數據庫的批量操作可以顯著的提高性能(見代碼段5),因為它減少了調用數據庫的次數。
  6.盡可能采用CMP(container-managed persistence)容器治理bean代替 BMP(bean-managed persistence bean)
  在BMP方式中, 編寫bean的人員必須自己在bean的方法中用JDBC,SQLJ等提供數據庫訪問代碼。而在CMP方式中,由容器在EJB部署是自動生成數據庫訪問代碼。編寫bean的人員只需在部署描述器中指定要自動生成訪問代碼的實例的字段清單。 CMP的優點是使bean類能獨立于數據源。另外的好處是應用服務器的廠家為CMP生成優化代碼,以提升數據庫訪問性能。
  7.恰當的使用實體bean
  在某些特定的場合下適合使用實體bean。他們適用于只從數據庫中取出少量數據行供多個用戶同時訪問。比如,在Person中,當個人登錄系統后,他的記錄可以緩存起來并讓多個EJB訪問,如SecurityBean, BankAccountBean等等。因此Person可以實體bean的形式存在。實體bean還適用于那些數據行需要在多個事務中被頻繁更新的場合。
  由于性能方面的額外開銷,實體bean 不合適大量數據行在數據庫處理中的選取、插入或更新。這種情況下可考慮采用會話 bean,另外也可以在實體 bean中設計粗線優化的數據庫訪問操作。
  8.采用恰當的隔離級別
  隔離層次是指多個交替進行的事務處理之間避免相互干擾的程度。TRANSACTION_SERIALIZABLE是最高隔離層次。采用這個隔離級別會使整個過程相當緩慢,因為所有的事務處理(既便是簡單的讀操作)必須排成一隊依次執行。執行的方法取得獨占寫入數據的鎖定,避免其它事務處理對數據進行讀取、更新或插入動作,直到該事務成功完成并提交工作。在TRANSACTION_REPEATABLE_READ級別,事務處理無法修改那些正在被其它事務處理讀取的數據。寫入鎖定用來防止其它事務處理對數據的修改。采用 TRANSACTION_READ_COMMITED 級別時,當前事務不能其他事務操作數據的中間狀態。因為它無法對正在被其它事務處理修改的數據加上寫入鎖定,所以也就無法讀取修改一半的數據了。TRANSACTION_READ_UNCOM- MITED是最低的隔離級別。在這種級別中Bean的方法可以讀取操作數據的中間狀態,但是時他們無法得知是否增加了新的記錄。
  隔離級別越高性能上開銷也越大。通常情況下,較低的隔離級別答應更多的并發操作 ,代價是需要更加復雜的邏輯去處理潛在的數據不一致性的問題。一條有用的準則是在該企業信息系統可接受的性能范圍內采用盡可能高的隔離級別。
  設計和開發后期
  在一個企業級應用的開發后期階段我們必須關注與性能相關的部分對整個系統進行調整。余下的4點就是針對工程的這個階段。
  9.模擬實際運行環境進行調整
  這里的策略是查看整個系統,包括Web服務器,應用服務器和數據庫服務器。可以考慮執行以下任務:
  運行整個應用程序
  使用廠家推薦的版本和補丁
  模擬實際運行的數據
  使用實際運行的資源(比如設備)
  利用負載測試工具模擬用戶負載
  10. 利用工具識別性能瓶頸
  在這個方法中,我們使系統高負載并監視所有機器的CPU,內存 , I/O和網絡的使用情況。識別性能瓶頸的地方后,反復測試,查看具體的問題所在。代碼段1列出了各種用于測試程序的各方面性能的工具。表1列出了各種用于測試程序的各方面性能的工具。
   提升EJB性能的12招(圖二)
點擊查看大圖

   提升EJB性能的12招(圖三)
點擊查看大圖

  表1方便的工具. 要使EJB 應用程序取得高性能,重要的一點是識別性能瓶頸,可使用以上這些工具。
  11.調整系統參數
  應用程序中的許多參數是是可調的。例如,在操作系統中,我們可以調整TCP/ip參數,文件限制數,進程限制數和IPC限制數。在應用服務器上則可以調整連接池參數,EJB池大小,線程數,JVM個數以及JVM堆棧大小。在數據庫服務器上,我們可以調整連接和進程的個數,共享池的大小,緩沖區大小,索引和SQL查詢提示。在Web服務器上,可以調整保持連接的參數,線程/進程的個數和連接的backlog.
  12.采用群集來滿足高負載或考慮升級硬件
  有時達到了某種程度時調整代碼乃至整個系統會比增加新硬件的開銷更大。這種情況下群集有顯著的優勢。大多數應用服務器都提供了群集的特性。一個EJB本質上就是在多臺機器上運行的一組EJB服務器,用于增加系統的馬力。一般群集中的每臺應用服務器都含有相同的EJB。服務器群集采用各種不同的算法來實現負載均衡,例如round robin, random, sticky bit, server load等??梢栽诙鄠€層次上采用群集,如圖2所示。
  提升EJB性能的12招(圖四)
  圖2: 群集的群集:在不同層次的群集增加了系統的馬力
  
  以上12點可以幫助我們設計和實現一個高性能的基于EJB的企業級應用。綜合使用這些技巧以使我們的應用程序達到最優化。
  
  代碼段 1. 一個設計欠佳的遠程接口
  
  若使用以下接口,客戶端必須多次調用才能獲取數據。我們可以通過使用粗粒度的方法加速這個過程。
  
  public interface Person extends EJBObject
  
  {
  
  public String getFirstName()
  
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
中文字幕欧美日韩精品| 亚洲精品国偷自产在线99热| 国产做受69高潮| 中文字幕欧美日韩| 成人国产精品一区| 国产成人午夜视频网址| 日韩av色在线| 国产97人人超碰caoprom| 日韩大片免费观看视频播放| 国产精品爽爽爽爽爽爽在线观看| 欧美日韩中文在线观看| 在线观看成人黄色| 色av中文字幕一区| 日韩中文字幕免费| 国产精品人成电影在线观看| 成人写真福利网| 一本一本久久a久久精品牛牛影视| 在线播放国产精品| 亚洲自拍偷拍网址| 欧美丰满少妇xxxxx做受| 日本免费在线精品| 亚洲在线免费视频| 国产日韩欧美日韩| 亚洲激情 国产| 国产精品天天狠天天看| 欧美日韩国产一区中文午夜| 日韩欧美国产中文字幕| 97热精品视频官网| 亚洲精品国产精品自产a区红杏吧| 国产精品久久久久久久久久东京| 日韩电影免费观看中文字幕| 精品日韩视频在线观看| 亚洲精品v欧美精品v日韩精品| 国产精品第一视频| 亚洲精品ady| 俺也去精品视频在线观看| 国产日韩欧美一二三区| 久久久成人的性感天堂| 亚洲精品视频网上网址在线观看| 午夜精品一区二区三区在线播放| 国产精品久久久久久久9999| 日韩中文字幕网| 国产精品69av| 色偷偷91综合久久噜噜| 成人xxxx视频| 在线观看欧美视频| 色综合久综合久久综合久鬼88| 日韩视频中文字幕| 日韩经典中文字幕在线观看| 美女性感视频久久久| 日韩有码在线电影| 欧美影院久久久| 中文字幕久精品免费视频| 欧美最猛黑人xxxx黑人猛叫黄| 国产精品国产自产拍高清av水多| 亚洲免费中文字幕| 国产免费观看久久黄| 亚洲美女av网站| 日韩黄在线观看| 欧美大尺度电影在线观看| 国产视频999| 欧美极品少妇与黑人| 亚洲成人激情在线观看| 亚洲成人国产精品| 日韩在线免费高清视频| 亚洲第一在线视频| 国产成人在线亚洲欧美| 欧美一区二区影院| 国产精品一区二区在线| 精品福利在线视频| 国产精品美腿一区在线看| 亚洲成在人线av| 欧美人在线观看| 91免费的视频在线播放| 亚洲色在线视频| 国产999在线| 日韩久久免费电影| 国产美女精品视频| 久久精品国产一区二区电影| 亚洲精品一区中文| 久久久精品国产网站| 国内成人精品一区| 久久国产精品亚洲| 中文字幕日韩专区| 亚洲色图激情小说| 成人av.网址在线网站| 爱福利视频一区| 亚洲娇小xxxx欧美娇小| 日韩在线观看av| 91沈先生在线观看| 久久综合亚洲社区| 欧美日韩国产综合视频在线观看中文| 亚洲精品一区二区在线| 亚洲加勒比久久88色综合| 亚洲精品自产拍| 91国产高清在线| 国内精品久久久久影院优| 日韩专区在线播放| 国产不卡在线观看| 精品视频在线播放色网色视频| 91视频国产精品| 亚洲一区二区在线播放| 8x海外华人永久免费日韩内陆视频| 亚洲xxx大片| 国产亚洲精品激情久久| 亚洲一区二区少妇| 国模精品视频一区二区三区| 国产精品一区二区久久久久| 亚洲毛茸茸少妇高潮呻吟| 中文字幕精品在线| 欧美专区国产专区| 国产欧美一区二区三区四区| 91夜夜未满十八勿入爽爽影院| 91亚洲精品在线| 国产精品96久久久久久又黄又硬| 中文字幕精品视频| 国产精品扒开腿做爽爽爽的视频| 97热在线精品视频在线观看| 国产成人高潮免费观看精品| 97精品国产97久久久久久免费| 日韩精品中文字幕视频在线| 九九热99久久久国产盗摄| 国产在线精品成人一区二区三区| 亚洲成人三级在线| 欧美视频裸体精品| 国产不卡一区二区在线播放| www.国产精品一二区| 国产精品96久久久久久| 亚洲国产精品大全| 亚洲999一在线观看www| 国产成人精品久久亚洲高清不卡| 亚洲日韩欧美视频| 日本成熟性欧美| 91色精品视频在线| 成人欧美一区二区三区黑人| 在线播放国产精品| 成人情趣片在线观看免费| 国产成+人+综合+亚洲欧美丁香花| 成人av在线亚洲| 欧美理论电影网| 国产亚洲精品va在线观看| 亚洲男人天堂2023| www.色综合| 九九热在线精品视频| 91国在线精品国内播放| 91色中文字幕| 精品久久久久久中文字幕一区奶水| 日韩高清中文字幕| 国产aⅴ夜夜欢一区二区三区| 亚洲永久在线观看| 色悠悠久久88| 欧美理论电影在线观看| 日韩激情片免费| 亚洲aa在线观看| 亚洲欧美国产一本综合首页| 少妇高潮 亚洲精品| 奇米一区二区三区四区久久| 另类色图亚洲色图| 国产精品精品久久久久久| 欧美亚洲免费电影| 久久影视免费观看| 美女视频黄免费的亚洲男人天堂| 国产精品久久91| 日韩有码片在线观看|