<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    笨笨的思想片斷

    零碎片斷,雜七雜八。
    posts - 25, comments - 79, trackbacks - 0, articles - 0

    JSRB設計思想-無狀態的,粗粒度的SERVICE

    出于提高性能和負載均衡實現的考慮,JSRB 采取了無狀態的,粗粒度的SERVICE請求和響應機制。
    該思想與有狀態的ORB(如CORBA或EJB Container)的設計思想截然相反.本文將詳述原因.


    JSRB定位與想要解決的問題

    JSRB定位于傳統的SERVICE REQUEST BROKER地位,就是原始意義上的中間件的位置: 負責將大量客戶端(N千或N萬)的請求,排隊到幾十或幾百個的請求處理進程(線程)中,最優化的使用系統資源,從而達到吞吐量最大化的目的.
    從這個角度來看, EJB Container和CORBA ORB是標準的中間件. Java Web Container由于內建了線程池,也算是中間件(前端協議HTTP,后端協議是JDBC).

    無狀態vs有狀態,遠程調用的選擇.

    有狀態要求服務器在遠程調用之間保存對應客戶端的Session數據,這種設計思想會簡化程序代碼,有助于將分布式的程序寫得更非分布式程序.

    但是在某些情況下,這種設計會帶來嚴重的性能問題.在金融的在線交易系統中,業務系統需要處理十萬至千萬級別的用戶信息(例如網銀系統),而中間件服務器較為合適的session池數量不過萬.要在中間件服務器的JVM內存中處理如此巨量的數據,肯定會將系統撐爆; 而如果存儲大部分數據到硬盤(鈍化技術)來應對,則就會面臨IO性能還不如 RDBMS 的窘境. RDBMS 在目前階段始終是最快速的數據存儲方案.

    當業務系統面臨大數據量的問題時,需要采用應用相關的解決方案(數據分區,存儲過程等等)解決.將問題推給應用服務器固然方便,但是卻會帶來系統的性能和可擴展性的問題.遠程調用的代價本來就很大,不必要讓ORB再承擔session數據的重擔了.與之相反,無狀態的遠程調用在可擴展性和負載均衡方面的實現要簡單得多,也沒有session遷移的問題.


    SERVICE的粒度問題

    SERVICE遠程調用的粒度需要粗一點,在保證SERVICE可重用的前提下,應該盡量減少SERVICE的調用次數, 因為SERVICE的調用開銷非常大(一般的遠程調用都是以毫秒記,而普通方法的執行時間是以微秒或納秒為單位的).
    有狀態SERVICE的一個副作用就是容易出現過細粒度的設計(同時由于Stub/Skeleton的生成很方便,這種設計就更加容易出現了),導致交互次數過多,會嚴重降低業務系統的性能.

    這方面一個鮮明的對比是大型機的智能終端和telnet協議.智能終端只有等到用戶填充完一個表單并確認發送后,才會將請求數據發送到主機,并且自行解釋和顯示主機返回的數據(非常像Broswer/HTTP), 而telnet協議則將每個按鍵事件發送到主機,主機處理保存有所有的session數據. 主機可以毫不費勁的處理N萬個并發的客戶端,而UNIX主機在連接了幾千個telnet客戶端后,自身的正常運行都會出問題了.

    順便說一句, 類似的, 從個人項目經歷來看, 由于 Hibernate 隱藏JDBC調用很成功,查詢或更新數據庫非常方便, 程序員就很容易濫用; 有可能導致程序從邏輯上來看毫無問題, 但是運行起來卻出現性能低下, 并且這種性能問題還很難改正(性能低下是由于數據庫查詢過多引起的,要調整的代碼遍布整個項目).


    其它

    1. 本文的一些思想來源于MidWay(midway.sourceforge.net)和個人的項目經驗,僅為一家之言.
    2. 大型項目(企業級)和小項目(部門級)的區別主要就在于,大項目在各個階段都要將非功能性的要求(性能,容錯,恢復,分布式,響應時間,事務等等)放在設計/實現/測試首要考慮的位置,而小項目則幾乎無需考慮這樣的問題.
    3. 本文和JSRB主要集中在真正的中間層( Service/Object Request Broker/EJB Container).


    Feedback

    # re: JSRB設計思想-無狀態的,粗粒度的SERVICE  回復  更多評論   

    2007-12-21 23:35 by 交口稱贊
    因為SERVICE的調用開銷非常大(一般的遠程調用都是以毫秒記,而普通方法的調用開銷是以微秒或納秒為單位的).

    這個結論怎么得出的?
    樓主知道微秒和納秒是什么概念嗎?

    # re: JSRB設計思想-無狀態的,粗粒度的SERVICE  回復  更多評論   

    2007-12-22 08:37 by 笨笨
    謝謝提醒,個人經驗是凡是涉及到網絡傳輸的遠程調用如JDBC,RMI,它的執行時間,就是從客戶端發起請求到獲取返回數據,耗費時間一般在N毫秒不等.
    而普通方法執行的時間,根據復雜度的不同,最少的可以用納秒計算(例如log4j的check時間),時間長點的用微秒計算也合適.
    主站蜘蛛池模板: 免费无码成人AV在线播放不卡| 爽爽日本在线视频免费| 国产嫩草影院精品免费网址| 在线播放国产不卡免费视频| 18禁美女裸体免费网站| 久久青青成人亚洲精品| 美女扒开屁股让男人桶爽免费| 成人人免费夜夜视频观看| 一道本不卡免费视频| 全黄a免费一级毛片人人爱| 久久久久国产精品免费看| 亚洲av无码精品网站| 国产又黄又爽又刺激的免费网址 | 中国一级特黄的片子免费 | 亚洲熟女综合色一区二区三区| 亚洲精品视频在线观看免费| 国产精品久久久久久亚洲小说 | 国产亚洲欧美在线观看| 亚洲av无码一区二区三区不卡| 成人片黄网站色大片免费| 亚洲色无码国产精品网站可下载| 曰韩亚洲av人人夜夜澡人人爽| 中国精品一级毛片免费播放| 亚洲国产精品综合久久20| 日韩人妻无码免费视频一区二区三区 | 最近中文字幕mv手机免费高清 | 免费一级毛片在线播放视频| 亚洲国产精品第一区二区| 在线成人精品国产区免费| 99久久久国产精品免费无卡顿| 亚洲资源在线观看| 99久久免费国产香蕉麻豆 | 成人免费午夜无码视频| 亚洲色偷偷偷综合网| 老司机亚洲精品影院| 国产成人亚洲精品狼色在线| 国产色婷婷精品免费视频| ww4545四虎永久免费地址| 国产成人免费AV在线播放| 男女作爱免费网站| 亚洲AV电影天堂男人的天堂|