Jini技术基础结构

Jini技术的即插即用的基础结构主要由三组协议组成:查找(Lookup)、发现(Discovery)和加入(Join)。查找服务是分布式Jini系统的基本组成部分,提供了在分布式Jini系统中服务的中央注册机制。在Jini系统中,程序找到服务的首选方法是通过查找服务,而且查找服务也是提供给管理员和用户各种访问接口的基础。

查找服务的服务模型

查找服务保存了一个服务的表,表中的每个元素代表了系统中可用的一项服务,其中保存了访问这项服务所需要的代码和一系列可扩充的描述服务的属性。打个比方,查找服务就像电话簿,Jini系统中的服务就像电话簿中的用户,查找服务中保存的信息就是用户的电话号码。也就是说,凡是需要访问Jini系统中的服务,就必须知道查找服务中保存的“电话号码”。但是查找服务有不少超过电话簿的优点,例如:查找服务保存的是一个动态的“电话簿”,而且,系统中的服务可以在“电话簿”中主动加入和去掉自己的“电话号码”,而查找服务也完全支持这种机制。而在以后的内容里,我们会发现更多的不同点。

当服务在查找服务中注册后,会产生一个通知事件。系统管理员可以利用查找服务中的事件回调机制来收到这个通知。这就有利于系统管理员管理和维护系统。而且服务也会提供设置自身的用户界面,这个用户界面可以作为服务的属性保存到查找服务中。管理员能轻松地设置服务,不用忙着到处找各种各样的驱动程序和管理软件。

在服务的有效期内,如果服务遇到问题需要引起管理员的注意,例如打印服务发现纸张短缺服务就增加一个属性来指明问题。更改后的结果会保存到查找服务中。这时,同上所述,管理员利用查找服务的事件回调机制来收到上述问题的通知。有了这个有力的机制,大大减轻了系统管理员的负担。

发现协议和加入协议

网络中的服务在启动后,怎样加入到分布式Jini系统中,成为Jini系统中的服务,有两个重要的必不可少的步骤。第一步肯定是找到系统中的查找服务,这个过程就是Discovery过程,用到的协议就是发现协议。第二步就是把自己注册到查找服务中,这个过程是Join过程,描述这个过程的协议就是Join协议。一项服务在完成了这两步后,就真正成为了Jini系统中的一位成员。为了准确地描述这两个协议,先介绍一下用到的术语。

主机。拥有一或多个Java虚拟机并且能加入网络的一个硬件设备被称为主机组。一组Jini服务所组成的集合。组的名字是任意的字符串,用来描述该组的性质。

Discovery实体。Discovery实体就是处于同一主机内,将要开始,或者正处在找到查找服务的过程中一个或多个相互协作的Java语言中的对象的集合。

Join实体。Join实体就是处于同一主机内,已经获得了查找服务,处于从查找服务中查询服务或者将自己注册到Jini系统内过程中的一个或多个相互协作的Java语言中的对象的集合。在以后的文章中,为了方便描述,将Discovery实体和Join实体统称为实体。

Jini系统中的服务包括的范围很广,包括各种纯软件的服务和硬件设备的服务。如果一台主机希望加入Jini系统,成为Jini系统中的一项服务,需要具备以下几个条件:首先需要一个能够运行Jini代码的Java虚拟机;其次需要一个正确配置的网络协议栈。这个网络协议栈随着网络协议的不同而改变。这里假定采用的网络层的协议是IP协议,此时以下几个条件是必不可少的:IP地址(IP地址或者是静态IP地址,或者是由主机利用DHCP协议来取得的动态IP地址);支持TCP协议和UDP多点传送协议(在Discovery过程中会用到这两种协议)。举个例子,一台联网的、安装了JDK(Java开发工具包)的个人电脑就是一台主机。

每个查找服务都有相关联的组,这样可以使Jini系统中的服务结构更有层次感。例如:一个特定的查找服务可以属于打印设备组,任何打印服务都可以注册到该查找服务中。当然,组都是预定义的。在Discovery的过程中,Discovery实体确定自己感兴趣的组,也就是自己希望加入的组,如果找到的查找服务也属于这样的组,Discovery实体就加入到这个查找服务中。这就避免了查找服务的结构过于庞大,把组织系统中服务的责任分摊给系统中多个不同的查找服务。目前,组的命名还没有一个明确的规范,Sun公司只是希望组的名字最好符合网络域名的命名规范,但是目前并没有给出如何定义组的名字的详细规范。我们相信在未来的发展过程中,随着对Jini系统中服务的组织结构层次性要求的提高,这种命名规范会随之完善起来的。

1.发现

在Discovery实体和查找服务交互过程中用到的协议一共有三个,分别是:多点传送请求协议(multicast request protocol)、多点传送宣布协议(multicast announcement protocol)和单点传送发现协议(unicast Discovery protocol)。这里首先对这三个协议进行简单的介绍。

多点传送请求协议。Discovery实体使用该协议以发现Jini系统中存在的查找服务。这个协议可用于设计浏览Jini系统中的服务的浏览器。

多点传送宣布协议。查找服务在启动后或者在网络崩溃的恢复过程中,利用该协议在系统中发布自己存在的数据报。

单点传送发现协议。当Discovery实体和查找服务中有一个知道了另一个的网络地址和端口号时,就采用该协议来主动建立两者之间点到点的通讯。

在Discovery的过程中,Discovery实体和查找服务的联系是建立在socket层上的。两者既是客户方,也是服务方。在通讯的过程中,分为两个阶段。

第一个阶段:Discovery实体和查找服务各自都建立了一个单点传送服务的服务器,可以理解为普通的Internet服务器,例如FTP协议中的FTP服务器,目的就是让Discovery实体和查找服务能够建立与对方的点到点的连接。现在面临的问题是:如何让双方知道对方的服务器地址?在第二个阶段的描述中会找到这个问题的答案。

第二个阶段:此时Discovery实体和查找服务都不知道对方的网络地址,但是根据Jini系统的要求,双方在网络层加入了特定的多点传送的组(这个组不是Jini系统中的组的概念,而是指网络协议中的组),而且双方都知道对方加入的网络组的组地址。由于网络协议支持向网络组中所有机器同时发送UDP数据包,利用这个特性,双方都向对方所属的组发送数据包。Discovery实体发送数据包的过程称为多点传送请求,在查找服务中发送数据包的过程称为多点传送广播宣布。在两者发送的数据包中都保存了各自的地址和其它必要信息。同时,双方都建立了一个收听发向本组的UDP数据包的服务器。Discovery实体所建立的服务器的服务称为多点传送广播收听服务,在查找服务中建立的服务器的服务称为多点传送广播请求服务。服务器把收到的数据包进行解码,就可以知道客户方的地址。在这个阶段中用到的协议就是多点传送请求协议和多点传送宣布协议。这时,Discovery过程就进入了第三个阶段。

时间: 2024-11-01 09:41:34

Jini技术基础结构的相关文章

JXTA技术的设计目标和层次结构

P2P即Peer to Peer,称为对等连接或对等网络,P2P技术主要指由硬件形成连接后的信息控制技术,其代表形式是软件:P2P并不是一个新的概念,因特网上的许多核心协议本身就是P2P的应用程序,因特网的发展过程也说明了这一点,我们可以通过下述特性来描述P2P: 1.Peer知道其他Peer的存在. 2.Peer在一个虚拟的网络中运行. 3.Peer同时具有Client和Server的特点. 4.多个Peer可以组成为一个Peer组. 从因特网的发展来看,目前已经完全有可能开发新的P2P应用程

Jini设备及其应用实例

Jini技术的出现,使得Java在成功地为网络设备的计算提供了合适的平台之后,更为网络设备,尤其是家庭网络下的消费类电子设备提供了一个全新的网络计算结构,从而实现了人们期待已久的网络设备的即插即用. 对Jini设备的硬件要求 虽然Jini本身是一个软件系统,但是一个真正投入使用的Jini系统则由一系列软件和相应的硬件组成.显然,以往一般的电子设备是不可能直接加入到Jini系统中来的.我们只有全面了解支持Jini技术的硬件规范,才会对Jini技术的未来有一个更深入的了解. Jini结构需要以Jav

云制造环境下的软件资源服务化封装技术研究

云制造环境下的软件资源服务化封装技术研究 北京交通大学 唐红 主要成果如下:(1)提出了以软件资源为主体的软件资源体系结构框架.在云制造环境下,云制造资源包括制造硬资源和软资源,而软件资源是软资源中模型.数据.知识建立与传递的基础工具,是产品设计工作的基础.本文以设计阶段的软件资源为具体的研究对象,建立了以软件资源为主体的软件资源体系结构框架.(2)建立了软件资源的三维数据模型.依据软件资源的粒度划分,分别从软件资源的分类信息.资源对象信息和属性信息三个方面,建立了软件资源的三维数据模型.基于软

自我参考:Java学习的30个目标

参考 本文将告诉你学习Java需要达到的30个目标,希望能够对你的学习有所帮助.对比一下自己,你已经掌握了这30条中的多少条了呢? 1.你需要精通面向对象分析与设计(OOA/OOD).涉及模式(GOF,J2EEDP)以及综合模式.你应该十分了解UML,尤其是class,object,interaction以及statediagrams. 2.你需要学习JAVA语言的基础知识以及它的核心类库(collections,serialization,streams,networking, multith

Java学习的30个目标

本文将告诉你学习java需要达到的30个目标,希望能够对你的学习有所帮助.对比一下自己,你已经掌握了这30条中的多少条了呢? 1.你需要精通面向对象分析与设计(OOA/OOD).涉及模式(GOF,J2EEDP)以及综合模式.你应该十分了解UML,尤其是class,object,interaction以及statediagrams. 2.你需要学习java语言的基础知识以及它的核心类库(collections,serialization,streams,networking, multithrea

高影响力的Web层群集, 第二部分: 用JavaSpaces构建

基于 PC 的商用服务器和网络连接硬件产品可以与开放源代码 Java 软件相结合,以实现 对 Web 服务和应用程序部署的经济性扩展.在本 高影响力的Web 层群集系列文章的第二篇 中,Sing Li 深入讨论了典型的群集系统设计方案,并说明了为什么没有一种适合所有情况 的解决方案,而基于JavaSpaces 和 Jini 技术的解决方案能够自适应地部署以满足不同的要 求. 在 J2EE 体系结构中应用服务器驻留的 Web 层,应用程序状态信息通常是以服务器端会 话的形式保存的.通过将这些会话外

Java模式设计之单例模式(二)

在什么情况下使用单例模式 使用单例模式的条件 使用单例模式有一个很重要的必要条件: 在一个系统要求一个类只有一个实例时才应当使用单例模式.反过来说,如果一个类可以有几个实例共存,那么就没有必要使用单例类.但是有经验的读者可能会看到很多不当地使用单例模式的例子,可见做到上面这一点并不容易,下面就是一些这样的情况. 例子一 问:我的一个系统需要一些"全程"变量.学习了单例模式后,我发现可以使用一个单例类盛放所有的"全程"变量.请问这样做对吗? 答:这样做是违背单例模式的

分布式编程模式中的租约、事务和分布式事件机制

Jini技术面向网络及分布式计算的特性决定了Jini技术必然与传统的单机系统在许多方面有概念上和实际应用中的差别.如网络的延迟.失败,或者设备的突然撤出,将导致信息的无序和丢失:资源的获得.保存.维护和回收情况更为复杂:不同实体之间通讯和协调工作的可靠性及效率并不像单机系统中那样较为容易地获得保证.因而在 Jini 中以 Java 为基础加入了分布式编程模式,特别是引入了租约.分布式事务和分布式事件. 租约 租约的基本概念是资源只能被使用一段时间,这由租约的持有者(lease holder)和租

如何面对JAVA架构师,和学习方法。

宏观上: 1.技术广度方面 至少要精通多门开源技术吧,研究过struts\spring等的源码. 2.项目经验方面 从头到尾跟过几个大项目,头是指需求阶段,包括需求调研. 尾是指上线交付之后,包括维护阶段. 3.架构经验方面 有过分布式系统的架构和开发经验.对于跨系统的结构优化,数据存储的性能指标等有丰富经验.什么缓存啊.数据库的垂直切分什么的,业务的抽象和水平拆分啊,这些应该都轻车熟路吧. 4.行业领域方面 最起码得精通一到两门业务吧,所谓精通,就是比如做金融证券业务的,至少等当半个经融分析师