基于OSGi實(shí)現(xiàn)分布式服務(wù)框架歷程(一)

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

          >> 基于OSGi實(shí)現(xiàn)分布式服務(wù)框架歷程(二)
          >> 基于OSGi實(shí)現(xiàn)分布式服務(wù)框架歷程(三)

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

          評(píng)論

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

          看了三篇文章,也受益不少:),不過對(duì)于OSGI和SCA以及服務(wù)框架有自己一點(diǎn)想法,這兒寫不下:),回blog寫。不過以后有了你和我交流和學(xué)習(xí),對(duì)將來(lái)完善動(dòng)態(tài)載入的服務(wù)框架更加有信心了^_^  回復(fù)  更多評(píng)論   

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

          我也在考慮如何將osgi引用到B/S結(jié)構(gòu)的應(yīng)用開發(fā)中來(lái)。我的想法是將osgi作為一個(gè)ejb應(yīng)用放在應(yīng)用服務(wù)器的ejb容器中運(yùn)行,對(duì)外部的服務(wù)使用spring暴露為session ejb,共web容器中的應(yīng)用或遠(yuǎn)程客戶端使用。

          這樣的好處是既發(fā)揮了osgi搭建后臺(tái)系統(tǒng)的優(yōu)勢(shì),又不必強(qiáng)迫web應(yīng)用的開發(fā)者學(xué)習(xí)osgi,他們可以繼續(xù)發(fā)揮現(xiàn)有的web應(yīng)用開發(fā)技能。

          大俠意下如何?給點(diǎn)意見吧 :)  回復(fù)  更多評(píng)論   

          # re: 基于OSGi實(shí)現(xiàn)分布式服務(wù)框架歷程(一) 2008-01-17 22:36 BlueDavy

          @Young
          那么外部訪問OSGi的服務(wù)到底是個(gè)怎么訪問法呢?
          通過那個(gè)暴露為ejb的OSGi的服務(wù)來(lái)路由訪問其他的OSGi服務(wù)?  回復(fù)  更多評(píng)論   

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

          簡(jiǎn)單說(shuō)是這個(gè)思路。
          具體說(shuō),一種想法是將ejb在語(yǔ)義上定義為數(shù)據(jù)訪問接口。因?yàn)楹笈_(tái)服務(wù)提供的大部分是數(shù)據(jù)訪問類的服務(wù)(或同質(zhì)的服務(wù),比如流程的訪問和提交),所以可以通過數(shù)據(jù)類型和有限的操作(比如增刪改查),窮舉全部的數(shù)據(jù)訪問服務(wù)。

          第二種想法是ejb提供類似osgi的服務(wù)查找功能,外部可以查找和使用特定的服務(wù)。但這樣就同樣需要處理服務(wù)類引用,聲明周期管理等在osgi內(nèi)部使用服務(wù)時(shí)碰到的問題,但總的來(lái)說(shuō),估計(jì)不是很難解決。  回復(fù)  更多評(píng)論   

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

          @Young
          按照你說(shuō)的這種,我覺得沒什么問題,因?yàn)槟愕臉I(yè)務(wù)層等其實(shí)是集中部署的對(duì)吧,那和傳統(tǒng)的做法其實(shí)就不用有什么差別了,做個(gè)Facade的OSGi服務(wù)就OK了。  回復(fù)  更多評(píng)論   

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

          @BlueDavy
          多謝指點(diǎn)。你說(shuō)了我才意識(shí)到通過部署到ejb容器中還提供了集中式服務(wù)的功能。  回復(fù)  更多評(píng)論   

          # re: 基于OSGi實(shí)現(xiàn)分布式服務(wù)框架歷程(一) 2008-01-22 11:26 BlueDavy

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

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


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

          公告

           









          feedsky
          抓蝦
          google reader
          鮮果

          導(dǎo)航

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

          統(tǒng)計(jì)

          隨筆分類

          隨筆檔案

          文章檔案

          Blogger's

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 宿州市| 昔阳县| 宜昌市| 新津县| 揭阳市| 西藏| 禹州市| 江华| 奉节县| 武汉市| 陆丰市| 巴彦县| 武冈市| 开原市| 左云县| 南澳县| 靖西县| 新巴尔虎左旗| 明水县| 鄂托克前旗| 上杭县| 梅河口市| 南充市| 舟山市| 台中市| 资源县| 肇东市| 芒康县| 平乡县| 平南县| 伊宁县| 平湖市| 万荣县| 乌恰县| 兴安盟| 施秉县| 雷州市| 南召县| 安陆市| 卢湾区| 巴里|