寫完之前的那篇基于OSGi實(shí)現(xiàn)服務(wù)框架的分析后,決定動(dòng)手來實(shí)現(xiàn)一個(gè)基于OSGi的分布式服務(wù)框架,而其feature呢,就會(huì)遵照之前寫的服務(wù)框架的要素來實(shí)現(xiàn),根據(jù)之前的分析,將這個(gè)實(shí)現(xiàn)過程分為了三個(gè)大的步驟來完成:Spike階段、實(shí)現(xiàn)階段和測(cè)試階段,Spike階段用于完成幾個(gè)關(guān)鍵問題的技術(shù)的研究和選型;實(shí)現(xiàn)階段用于完成基于OSGi的分布式服務(wù)框架;測(cè)試階段用于判斷實(shí)現(xiàn)的分布式框架對(duì)于應(yī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來講,非常簡單,在初始化jndi的context后,就可以通過context.bind或context.rebind來實(shí)現(xiàn)了。
對(duì)于服務(wù)的遠(yuǎn)程注冊(cè)來講,在實(shí)現(xiàn)時(shí)是不注冊(cè)服務(wù)的instance到服務(wù)中心的,只是注冊(cè)服務(wù)的相關(guān)信息的對(duì)象。
2、在服務(wù)應(yīng)用端怎么查找服務(wù)中心的服務(wù)?
這個(gè)對(duì)于JNDI來講,也很簡單,通過context.lookup就可實(shí)現(xiàn)了。
對(duì)于服務(wù)的遠(yuǎn)程引用和查找來講,在實(shí)現(xiàn)時(shí)需要將context.lookup這種方式和DS方式融合。
3、有否現(xiàn)成可用的實(shí)現(xiàn)?
有JBoss的JNP,從各類評(píng)價(jià)來說,還是不錯(cuò)的。
4、是否支持Cluster?
JNP是支持Cluster。
5、可參考的資源有哪些?
主要參考的資源有這兩個(gè)網(wǎng)頁:
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è)方面來看,JNDI基本是滿足服務(wù)的注冊(cè)和查找的需求的,當(dāng)然,在實(shí)現(xiàn)的時(shí)候還得做一定的改造,不過總體來說,還是不錯(cuò)的,等Spike完JINI后再來做出選擇,為什么會(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ù)框架歷程(三)