基于OSGi實現分布式服務框架歷程(一)

          寫完之前的那篇基于OSGi實現服務框架的分析后,決定動手來實現一個基于OSGi的分布式服務框架,而其feature呢,就會遵照之前寫的服務框架的要素來實現,根據之前的分析,將這個實現過程分為了三個大的步驟來完成:Spike階段、實現階段和測試階段,Spike階段用于完成幾個關鍵問題的技術的研究和選型;實現階段用于完成基于OSGi的分布式服務框架;測試階段用于判斷實現的分布式框架對于應用場景的符合程度、性能的情況。
          首先進入Spike階段,在Spike階段需要完成服務注冊、創建以及服務的proxy管理的技術研究和選型,這主要是因為我對這兩部分的技術并不怎么熟悉,對于服務的注冊和查找,可選的技術有兩種:JNDI和JINI;對于服務的proxy的管理,可選的技術應該就是cglib這一種了,不過需要研究具體怎么用,在這篇blog中將介紹對于JNDI的Spike。
          對于服務的注冊和查找,首先想到的可用的技術莫過于JNDI了,JNDI作為java ee中重要的命名和查找的機制,和服務的注冊、查找是非常吻合的,在做服務的注冊和查找的技術的Spike時,主要從這么幾方面去Spike:
          1、怎么實現遠程的將服務注冊到服務中心?
                這個對于JNDI來講,非常簡單,在初始化jndi的context后,就可以通過context.bind或context.rebind來實現了。
                對于服務的遠程注冊來講,在實現時是不注冊服務的instance到服務中心的,只是注冊服務的相關信息的對象。
          2、在服務應用端怎么查找服務中心的服務?
                這個對于JNDI來講,也很簡單,通過context.lookup就可實現了。
                對于服務的遠程引用和查找來講,在實現時需要將context.lookup這種方式和DS方式融合。
          3、有否現成可用的實現?
                有JBoss的JNP,從各類評價來說,還是不錯的。
          4、是否支持Cluster?
                JNP是支持Cluster。
          5、可參考的資源有哪些?
                主要參考的資源有這兩個網頁:
                http://hankun.blogbus.com/logs/1774694.html
                http://blog.csdn.net/cjp472/archive/2003/10/28/17570.aspx
                關于JNDI cluster方面的資料:
                http://www.wangchao.net.cn/bbsdetail_30257.html
          從上面幾個方面來看,JNDI基本是滿足服務的注冊和查找的需求的,當然,在實現的時候還得做一定的改造,不過總體來說,還是不錯的,等Spike完JINI后再來做出選擇,為什么會想到JINI呢,就是因為著名的Newton項目了,Newton項目是基于OSGi+Jini實現的SCA框架,所以是值得參考的,欲知后事如何,請看下篇分解,:)。

          >> 基于OSGi實現分布式服務框架歷程(二)
          >> 基于OSGi實現分布式服務框架歷程(三)

          posted on 2008-01-14 01:13 BlueDavy 閱讀(10385) 評論(8)  編輯  收藏 所屬分類: OSGi、SOA、SCA

          評論

          # re: 基于OSGi實現分布式服務框架歷程(一) 2008-01-14 15:51 岑文初

          看了三篇文章,也受益不少:),不過對于OSGI和SCA以及服務框架有自己一點想法,這兒寫不下:),回blog寫。不過以后有了你和我交流和學習,對將來完善動態載入的服務框架更加有信心了^_^  回復  更多評論   

          # re: 基于OSGi實現分布式服務框架歷程(一)[未登錄] 2008-01-17 16:44 Young

          我也在考慮如何將osgi引用到B/S結構的應用開發中來。我的想法是將osgi作為一個ejb應用放在應用服務器的ejb容器中運行,對外部的服務使用spring暴露為session ejb,共web容器中的應用或遠程客戶端使用。

          這樣的好處是既發揮了osgi搭建后臺系統的優勢,又不必強迫web應用的開發者學習osgi,他們可以繼續發揮現有的web應用開發技能。

          大俠意下如何?給點意見吧 :)  回復  更多評論   

          # re: 基于OSGi實現分布式服務框架歷程(一) 2008-01-17 22:36 BlueDavy

          @Young
          那么外部訪問OSGi的服務到底是個怎么訪問法呢?
          通過那個暴露為ejb的OSGi的服務來路由訪問其他的OSGi服務?  回復  更多評論   

          # re: 基于OSGi實現分布式服務框架歷程(一)[未登錄] 2008-01-18 15:18 Young

          簡單說是這個思路。
          具體說,一種想法是將ejb在語義上定義為數據訪問接口。因為后臺服務提供的大部分是數據訪問類的服務(或同質的服務,比如流程的訪問和提交),所以可以通過數據類型和有限的操作(比如增刪改查),窮舉全部的數據訪問服務。

          第二種想法是ejb提供類似osgi的服務查找功能,外部可以查找和使用特定的服務。但這樣就同樣需要處理服務類引用,聲明周期管理等在osgi內部使用服務時碰到的問題,但總的來說,估計不是很難解決。  回復  更多評論   

          # re: 基于OSGi實現分布式服務框架歷程(一)[未登錄] 2008-01-18 17:08 BlueDavy

          @Young
          按照你說的這種,我覺得沒什么問題,因為你的業務層等其實是集中部署的對吧,那和傳統的做法其實就不用有什么差別了,做個Facade的OSGi服務就OK了。  回復  更多評論   

          # re: 基于OSGi實現分布式服務框架歷程(一)[未登錄] 2008-01-22 10:33 Young

          @BlueDavy
          多謝指點。你說了我才意識到通過部署到ejb容器中還提供了集中式服務的功能。  回復  更多評論   

          # re: 基于OSGi實現分布式服務框架歷程(一) 2008-01-22 11:26 BlueDavy

          @Young
          :),是的,ejb容器本身其實就是個服務中心,在加上cluster的話它也是個非常好的分布式服務中心。
          只是在某些需求方面還需要修改才能達到真正的分布式服務框架的需求,例如服務的綁定不采用綁定服務實例的方法,本地服務和遠程服務的透明調用等。
            回復  更多評論   

          # wsdl+bpel+ode的整合 2010-12-17 18:03 小朱


          我想利用 felix 實現的osgi 最后生成bundle的wsdl文件 ,加上bpel文件(也就是工作流) 通過ode 生成cbp文件, 希望大家提供思路  回復  更多評論   

          公告

           









          feedsky
          抓蝦
          google reader
          鮮果

          導航

          <2008年1月>
          303112345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          統計

          隨筆分類

          隨筆檔案

          文章檔案

          Blogger's

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 信丰县| 包头市| 佳木斯市| 兴和县| 剑川县| 布尔津县| 社旗县| 汝阳县| 衢州市| 临澧县| 如东县| 石林| 金昌市| 阳新县| 额济纳旗| 江口县| 宁国市| 萨嘎县| 包头市| 南雄市| 陵水| 临海市| 新蔡县| 同心县| 富阳市| 惠来县| 尉犁县| 新河县| 安溪县| 钟祥市| 平阴县| 新化县| 巧家县| 玉树县| 民乐县| 长顺县| 桂林市| 长丰县| 永和县| 洛川县| 尉氏县|