JavaSpaces
导航 并发编程 主题: ) |
在 J2EE 之后,Sun 对网络计算的下一步发展有了愿景:在网络环境中,将会有许多独立的服务和消费者。这就是 JavaSpaces。JavaSpaces 将允许这些服务/消费者以稳健的方式动态交互。它可以被视为一个对象存储库,为 Java 对象提供分布式持久对象交换机制(持久化可以位于内存或磁盘中)。它可以用来存储系统状态并实现分布式算法。在 JavaSpace 中,所有通信伙伴(对等体)通过共享状态进行通信。它是 元组空间 思想的实现。
当有人想要实现可扩展性和可用性,同时降低整个系统的复杂性时,就会使用 JavaSpaces。
进程执行简单的操作来将新对象写入 JavaSpace、从 JavaSpace 中获取对象或从 JavaSpace 中读取(复制)对象。
在传统的应用程序中,对象在呈现给最终用户之前是从数据库中组装的。在 JavaSpace 应用程序中,我们保留了现成的“最终用户”对象,并将它们存储在 JavaSpace 中。在 JavaSpace 应用程序中,服务彼此解耦;它们通过它们写入 JavaSpace 以及从 JavaSpace 读取/获取的对象进行通信。服务使用模板对象来搜索它们想要从空间中获取或读取的对象。
JavaSpaces 技术是 Java Jini 技术的一部分。JINI 的基本功能是
- 无需用户干预即可将服务上线或下线。(与 EJB 形成对比,在 EJB 中,客户端程序必须知道 EJB 部署的服务器和端口号。在 JINI 中,客户端应该找到,在网络中发现服务。)
- 自愈通过在服务(服务消费者)来来去去时进行适应。服务需要定期续租来表明它们仍然可用。
- JINI 服务的消费者不需要事先了解服务的实现。实现是动态下载并运行在消费者 JVM 上,无需配置和用户干预。例如,最终用户可能会看到略微不同的用户界面,具体取决于当时使用的是哪项服务。这些用户界面代码的实现将由正在使用的服务提供。
- 事实上,实现运行在消费者/客户端的 JVM 上,可以通过消除远程调用的需要来提高性能。
一个最小的 JINI 网络环境包括
- 一个或多个 服务
- 一个查找服务,保存已注册服务的列表
- 一个或多个 消费者
查找服务在 :Jini 查找服务规范 (reggie) 中有描述。此服务接口定义了可以在查找服务上执行的所有操作。客户端通过向实现特定接口的查找服务器发送请求来查找服务。客户端向查找服务器请求所有实现特定服务接口的服务。查找服务返回所有已注册服务的服务对象,这些服务实现了给定的接口。客户端可以调用该对象上的方法,以直接与服务器交互。
Jini 发现和加入规范描述了客户端如何找到 jini 查找服务。有一个协议可以做到这一点,jini 带有一组实现该协议的 API。Jini 发现实用程序规范定义了一组用于处理该协议的实用程序类。
当服务向查找服务注册时,它会从查找服务获得租约,如Jini 分布式租赁规范中所述。