走在架構師的大道上 Jack.Wang's home

          Java, C++, linux c, C#.net 技術,軟件架構,領域建模,IT 項目管理 Dict.CN 在線詞典, 英語學習, 在線翻譯

          BlogJava 首頁 新隨筆 聯系 聚合 管理
            195 Posts :: 3 Stories :: 728 Comments :: 0 Trackbacks

                 對于J2EE,我們知道當開發應用時,在架構設計階段的決定將對應用的性能和可擴展性產生深遠的影響?,F在當開發一個應用項目時,我們越來越多地注意到了性能和可擴展性的問題。應用性能的問題比應用功能的不豐富問題往往更為嚴重,前者會影響到所有用戶,而后者只會影響到碰巧使用該功能的那些用戶。

                作為應用系統的負責人,一直被要求"要少花錢多辦事"----用更少的硬件,更少的網絡帶寬,以及更短的時間完成更多的任務。J2EE通過提供組件方式和通用的中間件服務是目前首選的最優方式。而要能夠構建一個具有高性能和可擴展性的J2EE應用,需要遵循一些基本的架構策略。

          1. 緩存(Caching)

          簡單地說,緩存中存放著頻繁訪問的數據,在應用的整個生命周期中,這些數據存放在持久性存儲器或存放在內存中。在實際環境中,典型的現象是在分布式系統中每個JVM中有一個緩存的實例或者在多個JVM中有一個緩存的實例。

          緩存數據是通過避免訪問持久性存儲器來提高性能的,否則會導致過多的磁盤訪問和過于頻繁網絡數據傳輸。

          2.復制

          復制是通過在多臺物理機器上創建指定應用服務的多個拷貝來獲得整體更大吞吐效率。理論上看,如果一個服務被復制成兩個服務,那么系統將可處理兩倍的請求。復制是通過單一服務的多個實例的方式從而減少每個服務的負載來提高性能的。

          3.并行處理

          并行處理將一個任務分解為更為簡單的子任務,并能夠同時在不同的線程中執行。

          并行處理是通過利用J2EE層執行模式的多線程和多CPU特點來提高性能。與使用一個線程或CPU處理任務相比,以并行方式處理多個子任務可以使操作系統在多個線程或處理器中進行分配這些子任務。

          4.異步處理

          應用功能通常被設計為同步或串行方式。異步處理只處理那些非常重要的任務部分,然后將控制立即返回給調用者,其他任務部分將在稍后執行。

          異步處理是通過縮短那些在將控制返回給用戶之前必須處理的時間來提高性能的。雖然都做同樣多的事情,但是用戶不必等到整個過程完成就可以繼續發出請求了。

          5.資源池

          資源池技術使用的是一套準備好的資源。與在請求和資源之間維持1:1的關系的不同,這些資源可被所有請求所共享。資源池的使用是有條件的,需要衡量下面兩種方式的代價:

          A、維持一套可被所有請求共享資源的代價

          B、為每個請求都重新創建一個資源的代價

          當前者小于后者時,使用資源池才是有效率的。





          本博客為學習交流用,凡未注明引用的均為本人作品,轉載請注明出處,如有版權問題請及時通知。由于博客時間倉促,錯誤之處敬請諒解,有任何意見可給我留言,愿共同學習進步。
          posted on 2008-04-23 22:18 Jack.Wang 閱讀(3106) 評論(12)  編輯  收藏 所屬分類: 架構師篇

          Feedback

          # re: 構建高性能J2EE應用的五種核心策略 2008-04-24 09:28 張氏兄弟
          感覺就是我大學課本上的前言,看似有道理,實則無用!  回復  更多評論
            

          # re: 構建高性能J2EE應用的五種核心策略 2008-04-24 09:32 YODA
          說的不錯,但是無論是JEE的應用還是其它的應用,你所說的這5點,都基本適用。但是具體情況下還是要有所取舍,每種類型的應用都有自己的優點和局限,比如B/S的應用,說實話,很難做出來異步處理的效果。  回復  更多評論
            

          # re: 構建高性能J2EE應用的五種核心策略 2008-04-24 09:42 YZ
          感覺就是我大學課本上的前言,看似有道理,實則無用!  回復  更多評論
            

          # re: 構建高性能J2EE應用的五種核心策略 2008-04-24 16:22 單飛
          就是,難怪我看不懂啊。  回復  更多評論
            

          # re: 構建高性能J2EE應用的五種核心策略 2008-04-25 08:06 Jack.Wang
          @單飛
          從你的留言中可以看出你只能是個 coder, 而且還是個人云亦云的 coder.
          只是學會了 copy.   回復  更多評論
            

          # re: 構建高性能J2EE應用的五種核心策略 2008-04-25 10:19 byb
          你的QQ群,拒絕加入  回復  更多評論
            

          # re: 構建高性能J2EE應用的五種核心策略 2008-04-25 22:16 zhengxi
          挺好的。  回復  更多評論
            

          # re: 構建高性能J2EE應用的五種核心策略 2008-04-26 13:07 LMJ
          感覺你說的[異步處理 ]和[并行處理 ]沒有什么區別~~
          實踐證明,[緩存(Caching) ]確實能夠大大提升應用性能~  回復  更多評論
            

          # re: 構建高性能J2EE應用的五種核心策略 2008-04-26 16:55 Jack.Wang
          并行和異步當然不是一個概念。
            回復  更多評論
            

          # re: 構建高性能J2EE應用的五種核心策略 2008-04-26 17:24 Maggie
          @byb
          已修改,可以申請加入了  回復  更多評論
            

          # re: 構建高性能J2EE應用的五種核心策略 2008-04-27 20:58 天天架構師
          總結的不錯,不過內容有些耦合,
          首先是緩存,這個是最有效的解決方案,而復制、并行處理,則是對集群環境的一種體現,當然,讓緩存完全支持集群真的不是太容易,而且從某方面說,集群環境中,緩存處理不當,還不如不緩存,最終導致還不如不集群,呵呵。企業應用性能優化已經是當今評價架構師最好的題材了,真的,很少有人能完全給出解決方案,并有相關實際經驗。
          總體總結的很好,頂你一下,祝你成功。  回復  更多評論
            

          # re: 構建高性能J2EE應用的五種核心策略 2008-05-01 16:59 lsqlister
          總結的不錯,不過不是自己的體會。  回復  更多評論
            

          主站蜘蛛池模板: 雷州市| 黄梅县| 丹凤县| 姚安县| 贵溪市| 德格县| 美姑县| 镇巴县| 巴塘县| 玉林市| 鄄城县| 平和县| 玉田县| 玉龙| 澄江县| 韶山市| 明水县| 崇文区| 巧家县| 上饶市| 阿拉尔市| 龙州县| 台安县| 湛江市| 利辛县| 历史| 祁门县| 湄潭县| 曲阳县| 莱州市| 南丰县| 镇坪县| 白朗县| 恭城| 庐江县| 淮安市| 平遥县| 衡水市| 北碚区| 米易县| 嘉禾县|