高影响力的Web层群集, 第二部分: 用JavaSpaces构建 - 编程入门网
高影响力的Web层群集, 第二部分: 用JavaSpaces构建时间:2011-04-16 IBM Sing Li基于 PC 的商用服务器和网络连接硬件产品可以与开放源代码 Java 软件相结合,以实现 对 Web 服务和应用程序部署的经济性扩展。在本 高影响力的Web 层群集系列文章的第二篇 中,Sing Li 深入讨论了典型的群集系统设计方案,并说明了为什么没有一种适合所有情况 的解决方案,而基于JavaSpaces 和 Jini 技术的解决方案能够自适应地部署以满足不同的要 求。 在 J2EE 体系结构中应用服务器驻留的 Web 层,应用程序状态信息通常是以服务器端会 话的形式保存的。通过将这些会话外部化、并将它们拷贝到一组联网的服务器中,就可以创 建一个可伸缩和高度可用的群集,用以执行 Java Web 应用程序和 Web 服务。在本系统的第 一篇文章“ 利用JavaGroups扩展Web服务及应用”中,我们分析了如何用 JavaGroups 通信工具包实现内存中的会话复制。 在这第二篇文章中,我们将采用稍微不同的方式跨越联网的服务器群集扩展 Web 应用程 序和 Web 服务。我们要使用的技术是 JavaSpaces,这是一个作为 Jini 技术家族的一部分 发布的软件服务(参阅 参考资源)。JavaSpaces 使您可以采用更高级别的方法设计常规的分 布式系统(特别是群集的系统),减少设计的复杂性并增强自适应能力。通过用 JavaSpaces 实现分布式的共享内存模型,使我们可以将设计重点放到服务器群集中共享会话数据上(而不 是像在第一篇文章中那样放在复制上)。 设计有三个基本操作的分布式系统 在概念上,JavaSpaces 是分布式的袋子,在其中我们可以放入称为 实体的 Java 对象( 参阅侧栏“ Jini 实体”)。一个空间可以同时被多个用户(客户)共享。用户通常 是网络上其他节点或者独立的 Java 虚拟机(Java virtual machines JVM)。将一个 Java 对 象放到空间(带写操作)后,这个空间的所有用户都可以通过将它从空间中移出(用 take 操作 )或者让它保持原样(用 read 操作)而读取其内容。 这三种简单的操作(write、 take 和 read)很好地封装了 JavaSpaces 的所有假定,并使 得分布式的、整体并行的、或者群集的计算网络配置成为可能。图 1 说明了用 JavaSpaces 进行的操作: 图 1. JavaSpaces 的基本操作 在图1中,JavaSpaces 的模板匹配机制(参阅侧栏“ JavaSpaces 中的模板匹配 ”)使客户可以选择读对象或者从空间中取出对象。 JavaSpaces的本质 本系列的第一篇文章处理的是一组过程:跟踪组成员、以及协调、发送或者接收消息(就 像在 JavaGroups 中一样)。JavaSpaces 使我们可以无需知道消息、组或者成员数量就可以 设计分布式系统。事实上,在只使用 read、write 和 take 操作时,JavaSpaces 分布式应 用程序可以完全编写到一个线程中 -- 没有并发的内容!换句话说,在用 JavaSpaces 设计 群集系统时,可以在一个很高的抽象级别上工作。在这种高级别上工作的两个主要好处是可 以: Jini项 一个 Jini 项是一个实现了 net.core.jini.Entry 接口的 Java 对象。这个接口是一个 marker 接口,它继承了 java.io.Serializable ,没有需要实现的方法。每一个 Jini 项都 可以包含 Java 对象字段。这些字段也必须是序列化的。在使用 JavaSpaces 时,项的每一 个字段都是独立序列化的。项不是序列化的对象图的根,这意味着如果两个字段引用了同一 个对象,那么会分别序列化被引用的同一个对象的两个副本。 保持设计非常简单和容易理解,有助于长期的维护 根据不同的要求迅速调整,不需做大的代码改变 这些好处是几乎所有软件系统以及传统的复杂分布式应用程序都欢迎的。当然,分布式问 题的总体复杂性并没有改变。改变 的是在哪里对这种复杂性进行处理。使用 JavaSpaces, |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |