<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

    Java Service Request Broker簡介

    Posted on 2007-12-12 00:15 笨笨 閱讀(2709) 評論(1)  編輯  收藏 所屬分類: Java Service Request Broker

    Java Service Request Broker 簡介

    Java Service Request Broker(JSRB)是一個 Java/C/C++ 的開源項目
    Project URL http://jsrb.sourceforge.net

    項目目標按照優先順序依次是:
    1 高效,透明的通訊框架,屏蔽本地/遠程網絡架構的復雜性(高效來源于基于poll/epoll的NIO通訊框架,透明來源于多個JSRB Server之間的動態級聯機制).
    2 高效率,穩定的服務請求處理機制(高效來源于服務端為C語言實現,穩定來源于對服務進程的不間斷監控和自動重啟動機制)
    3 分布式事務處理能力(JSRB 作為分布式事務管理器,初步實現了DTP XA協議,還在開發過程中).
    4 客戶端語言中立(語言無關通訊協議,客戶端提供Java或C API庫).

    JSRB 大致架構如下:



    JSRB SERVICE 特性/訪問方式

    1 SERVICE 無狀態,通過二進制數據傳遞輸入輸出數據
    2 運行時,可以有多個SERVICE實現進程, JSRB會平衡調度這些進程.

    SERVICE支持同步/異步兩種訪問方式:
    SERVICE之間也支持forward和嵌套調用兩種方式

    同步訪問SERVICE:
    Response Data = JsrbConection.syncCall("SERVICE NAME",Request Data);
    當客戶端從syncCall中返回時,它已經獲得SERVICE的返回數據



    異步訪問SERVICE
    long key = JsrbConnection.asyncCall("SERVICE",Request Data);
    ...
    Response Data = JsrbConnection.fetchReply(key);
    客戶端可以提交服務請求后,過一段時間再去嘗試獲取數據, 便衣客戶端同時提交多個服務請求,增加并發性.




    SERVICE FORWARD
    客戶端訪問SVC1, SVC1完成后將該請求forward到SVC2, SVC2完成后直接返回客戶端數據.



    SERVICE的嵌套調用
    SVC1 調用SVC2 并獲得SVC2的返回數據.







    一般問題:
    1 為什么會選擇用Java 實現Service Request Broker
    答: Java跟C語言相比, 代碼執行速度其實并不慢. 我們一般感覺J2EE 應用慢,主要是由于IO(特別是socket和JDBC)慢造成的.
    Java 在多線程編程, 開發的方便性方面比C/C++強.
    JSRB在實現過程中,自行定義和實現了一套NIO框架, 增加了對于Linux epoll(Edge Triggered Mode)的支持, 同時為了實現與C進程的高效通訊,自行實現了Sysv IPC和創建子進程方面的Native代碼.


    2 為什么要用C實現業務代碼,作為Service的實現語言.
    從企業端的應用來看, 企業應用必定要跟數據庫打交道, 實際上C語言訪問數據庫要比Java訪問數據庫快1到兩個數量級. 甚至可以說, J2EE應用響應的大部分的延遲時間都耗費在JDBC上.
    從大型項目的實施經驗來看, 將這部分代碼放在C進程中, 盡管要多付出通訊方面的代價,總體還是要比純Java的方案快得多.


    3 為什么分布式事務的優先級最低
    從大型項目的實施經驗來看, 分布式事務由于運行代價過高, 業務系統中用到的概率很小(基本上直接用數據庫的事務). 對于CICS/TUXEDO應用而言,首先還是將CICS/TUXEDO 作為一個高效/穩定的通訊和服務請求處理排隊框架來用.
    如果真要有分布式的交易的需求,一般采用流水對帳+沖正處理方式解決.


    4 為什么選擇無狀態方式實現SERVICE
    無狀態是提高并發效率, 實現透明故障遷移的最佳方式. Server端資源有限,為并發的成千上萬個用戶同時維護狀態是非常困難的,這樣也會造成集群實現的困難.
    由于Client端是有狀態的,所以這在實現上其實問題不大.



    今后得空還會慢慢寫更多文檔介紹JSRB的一些組件的實現方式和特性.


    Feedback

    # re: Java Service Request Broker簡介[未登錄]  回復  更多評論   

    2008-01-27 06:56 by 哈哈
    想法其實不錯,不過有些說法需要實踐來證明。上來就說“ Java跟C語言相比, 代碼執行速度其實并不慢”,“實際上C語言訪問數據庫要比Java訪問數據庫快1到兩個數量級”缺乏稅賦力。

    其實我反而覺得j2ee訪問數據庫慢不完全因為jdbc,更多的是數據庫本身就慢,設計有問題或者查詢策略有問題。
    還有一個瓶頸就是對象序列化。目前應用最廣的webservice可以說也是最緩慢最消耗資源的,相對的就得到了對各種平臺的良好兼容和支持。
    j2ee應用還有一個大毛病就是太費內存,當然換來的是程序的可靠性,平臺無關性。

    分布式事務我沒那么多經驗,就不發表太多評論。
    你說的JSRB可能確實不錯,不過我認為還需要再進行論證。至少從閱讀了本文之后還沒真正感覺到太多驚喜。

    我覺得現在的企業應用大多會吧降低程序和設計復雜度放在首位。如果這方面做的比較好可能更吸引人。

    "業務系統中用到的概覽很小"中的概覽是不是概率?
    主站蜘蛛池模板: 在线观看视频免费完整版| 国产成人无码区免费内射一片色欲| 精品在线免费观看| 久久亚洲av无码精品浪潮| 免费大片av手机看片高清| 亚洲狠狠爱综合影院婷婷| 色www免费视频| ZZIJZZIJ亚洲日本少妇JIZJIZ| 成人免费网站久久久| 免费乱理伦在线播放| 有码人妻在线免费看片| 中文字幕精品亚洲无线码二区| 91免费国产视频| 亚洲日韩区在线电影| 亚洲黄色免费在线观看| 亚洲乱码一二三四区麻豆| 最近最新的免费中文字幕| 老司机午夜免费视频| 亚洲精品无码专区在线在线播放| 在线观看肉片AV网站免费| 精品无码一区二区三区亚洲桃色 | 亚洲人成人77777网站不卡| 成人免费无遮挡无码黄漫视频| 国产天堂亚洲国产碰碰| 国产亚洲精品精品国产亚洲综合| 国产成人免费ā片在线观看老同学| 亚洲午夜精品久久久久久人妖| 国产精品成人免费福利| 激情婷婷成人亚洲综合| 亚洲成a人片在线观看无码专区| 国产成人福利免费视频| 深夜A级毛片视频免费| 亚洲国产另类久久久精品小说| 曰批视频免费30分钟成人| 男男gay做爽爽免费视频| 亚洲AV无码国产精品色午友在线 | 久久精品国产亚洲沈樵| 一二三四免费观看在线电影| 日韩精品无码永久免费网站| 久久精品国产亚洲av水果派 | 亚洲αv久久久噜噜噜噜噜|