寫完之前的那篇基于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實現分布式服務框架歷程(三)