走在架構(gòu)師的大道上 Jack.Wang's home

          Java, C++, linux c, C#.net 技術(shù),軟件架構(gòu),領(lǐng)域建模,IT 項目管理 Dict.CN 在線詞典, 英語學(xué)習(xí), 在線翻譯

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

                 對于J2EE,我們知道當(dāng)開發(fā)應(yīng)用時,在架構(gòu)設(shè)計階段的決定將對應(yīng)用的性能和可擴展性產(chǎn)生深遠(yuǎn)的影響。現(xiàn)在當(dāng)開發(fā)一個應(yīng)用項目時,我們越來越多地注意到了性能和可擴展性的問題。應(yīng)用性能的問題比應(yīng)用功能的不豐富問題往往更為嚴(yán)重,前者會影響到所有用戶,而后者只會影響到碰巧使用該功能的那些用戶。

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

          1. 緩存(Caching)

          簡單地說,緩存中存放著頻繁訪問的數(shù)據(jù),在應(yīng)用的整個生命周期中,這些數(shù)據(jù)存放在持久性存儲器或存放在內(nèi)存中。在實際環(huán)境中,典型的現(xiàn)象是在分布式系統(tǒng)中每個JVM中有一個緩存的實例或者在多個JVM中有一個緩存的實例。

          緩存數(shù)據(jù)是通過避免訪問持久性存儲器來提高性能的,否則會導(dǎo)致過多的磁盤訪問和過于頻繁網(wǎng)絡(luò)數(shù)據(jù)傳輸。

          2.復(fù)制

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

          3.并行處理

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

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

          4.異步處理

          應(yīng)用功能通常被設(shè)計為同步或串行方式。異步處理只處理那些非常重要的任務(wù)部分,然后將控制立即返回給調(diào)用者,其他任務(wù)部分將在稍后執(zhí)行。

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

          5.資源池

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

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

          B、為每個請求都重新創(chuàng)建一個資源的代價

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





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

          Feedback

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

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

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

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

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

          # re: 構(gòu)建高性能J2EE應(yīng)用的五種核心策略 2008-04-25 10:19 byb
          你的QQ群,拒絕加入  回復(fù)  更多評論
            

          # re: 構(gòu)建高性能J2EE應(yīng)用的五種核心策略 2008-04-25 22:16 zhengxi
          挺好的。  回復(fù)  更多評論
            

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

          # re: 構(gòu)建高性能J2EE應(yīng)用的五種核心策略 2008-04-26 16:55 Jack.Wang
          并行和異步當(dāng)然不是一個概念。
            回復(fù)  更多評論
            

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

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

          # re: 構(gòu)建高性能J2EE應(yīng)用的五種核心策略 2008-05-01 16:59 lsqlister
          總結(jié)的不錯,不過不是自己的體會。  回復(fù)  更多評論
            

          主站蜘蛛池模板: 大余县| 临漳县| 涟水县| 和平县| 思南县| 耒阳市| 宣城市| 湘乡市| 佛坪县| 蓝田县| 临洮县| 玉门市| 安泽县| 卢龙县| 依安县| 荣成市| 若尔盖县| 井陉县| 景洪市| 璧山县| 无为县| 岢岚县| 洛扎县| 吉水县| 哈密市| 宜黄县| 永寿县| 孟津县| 城固县| 建湖县| 全州县| 涞水县| 临朐县| 旺苍县| 肃南| 柏乡县| 张北县| 大安市| 永嘉县| 瑞安市| 淮安市|