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

基于 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, 几乎所有更复杂的 orthogonal 考虑都推到 API 线下面了 -- 推给了 JavaSpaces 服务的特 定实现 -- 使设计者可以处理真正的应用问题。基本原则是这些复杂问题现在只需解决一次 ,可以由能干的专家工程师和理论家去做。要进一步理解这种体系结构,我们必须越过概念 看一下 JavaSpaces 的实际表现。

时间: 2024-08-22 14:54:21

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

高影响力的Web层群集,第一部分: 利用JavaGroups扩展

随着J2EE平台的日益成熟,为了在Web层上扩展Web服务及应用,可以在联网的群集配置中 部署廉价服务器(commodityservers ).这些廉价服务器通过廉价的LAN硬件相互连接在一 起,可以提供成本合适的群集解决方案.最后一个群集难题在于软件方面.在本系列文章中 ,SingLi分析了三种可以允许高影响力Web层群集的开放源代码软件基础,首先介绍 JavaGroups. 在 Internet 上,基于J2EE的Web应用及Web服务的流行,将同时处理上千个(或者更多) 用户的需求推向前台

Java 理论与实践: Web 层的状态复制

web 大多数具有一定重要性的 Web 应用程序都要求维护某种会话状态,如用户购物车的内容.如何在群集服务器应用程序中管理和复制状态对应用程序的可伸缩性有显著影响.许多 J2SE 和 J2EE 应用程序将状态存储在由 Servlet API 提供的 HttpSession 中.本月,专栏作家 Brian Goetz 分析了状态复制的一些选项以及如何最有效地使用 HttpSession 以提供好的伸缩性和性能.在本文论坛中与本文作者和其他读者分享您的观点.(可以单击文章顶部或者底部的 讨论 访问论

J2EE应用程序的Web层状态复制

大多数具有一定重要性的 Web 应用程序都要求维护某种会话状态,如用户购物车的内容.如何在群集服务器应用程序中管理和复制状态对应用程序的可伸缩性有显著影响.许多 J2SE 和 J2EE 应用程序将状态存储在由 Servlet API 提供的 HttpSession 中.本文作者分析了状态复制的一些选项以及如何最有效地使用 HttpSession 以提供好的伸缩性和性能. 不管正在构建的是 J2EE 还是 J2SE 服务器应用程序,都有可能以某种方式使用 Java Servlet -- 可能是直接

Java理论与实践: Web层的状态复制

不管正在构建的是 J2EE 还是 J2SE 服务器应用程序,都有可能以某种方式 使用 Java Servlet -- 可能是直接地通过像 JSP 技术.Velocity 或者 WebMacro 这样的表示层,也可能通过一个基于 servlet 的 Web 服务实现,如 Axis 或者 Glue.Servlet API 提供的一个最重要的功能是会话管理 -- 通过 HttpSession 接口进行用户状态的认证.失效和维护. 会话状态 几乎每一个 Web 应用程序都有一些会话状态,这些状态有可能像

七大步骤打造有影响力的完美软文

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 概要:通过七在步骤,分析怎么样打造一篇有影响力的软文.无论你是初学者还是已经从事多年的行内人士,相信对你对你有很大的帮助. 随着搜索引挚对博客的权重越来越小,博客作为营销工具的作用正在日趋变小,而高质量的网站具有原创性的文章的作用正在日趋变大,因此,软件营销就越来越被行业的从内人员所推崇.那么,要写一篇高质量的软文也不是简单的事,必须具备有一

全球最有影响力的网站排行

一年前我们曾报道过一个名字十分奇怪的网站URLFAN,当时我们认为这是一个不错的互联网"影响力指数".URLFAN根据博客引用次数按照受欢迎程度对网站进行排名.和Alexa和Compete等数据分析网站不同,URLFAN不是衡量网站流量,而是和Technorati类似,只不过该网站对所有网站进行排名,而不仅仅是博客. URLFAN的排名对社会性媒体用户有利,但仍然不失为一个有用的指数,因为社会性媒体用户的影响力很大.今年的排名如何呢? URLFAN目前对根据来自5948937个博客fe

16个扩大博客影响力的有效方法

你是否期待着你的博客蒸蒸日上,你是否热衷于建立一个大型的读者社区,甚至成为一个全职的职业博客作家,这些都需要博客有更大的影响力和更大的声誉,这里就总结了一些有效的方法,通过这些方法可以逐步扩大你博客的影响力,使其逐渐成为一个专业的媒体或内容平台. 虽然"内容建设"依然是博客成功的关键因素,但是还有一些技巧可以增加博客的影响力,比如用户产生内容.互动资源等等.建立一个博客网络也可以扩大博客的品牌和声誉,这需要和其它的博客建立一些相关项目进行改善.以下是16个扩大你的博客影响力的方法,请注

基于Struts技术的Web层应用设计和实现

web|设计 近年来,基于MVC(Model-View-Controller)模型的Struts框架越来越受到web系统开发者的青睐.Struts是建立在当前动态网站设计领域中JSP.Servlet.XML等相关开发技术基础之上的一种主流开发架构,具有组件模块化.灵活性和重用性的优点,同时极大地简化了Web应用程序的开发.它合理地将用户表示逻辑.业务逻辑和控制逻辑分离,使得开发过程变得简洁清晰,并提高了软件的可维护性和可重用性. Struts框架 1.Struts体系结构 Struts是一种基于

数据之美(八):Twitter 上的 140 个最有影响力的人

2006年3月21日,Twitter 创始人 Jack Dorsey 发出了第 一则 Twitter 消息,引爆了这个宇宙般扩张的社会网络.4年来,Twitter 的影响力越来越大,各色人等纷纷入驻,他们连同追随者构成了宇宙中的一个个星系.Information Architects 以 Infographics 方式,展示了 Twitter 上的 140 个最有影响力的人. 这幅 Infographics 图模拟了一个巨大的星系,Twitter 创始人 Jack Dorsey 是星系的核心,T