写完之前的那篇基于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实现分布式服务框架历程(三)