快速业务通道

高影响力的Web层群集,第一部分: 利用JavaGroups扩展 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-17
        // set our local state           cstate = (CartState) state;          }           orderModel.changeData(cstate);    }

4. 在接收到 GET_STATE 请求之后――一般是从加入群集的新成员处接收到――我们需要 返回当前状态。PullPushAdapter 类将回调 MessageListener 接口的 getState() 方法。清 单 5 显示我们对了这一方法的实现。我们只是复制了一份状态,然后将它作为对象返回。

清单 5. 处理 GET_STATE 请求public Object getState() {  System.out.println("-- PullPush callback: GetState has    been called!");  return cstate.Copy();  }

值得注意的是,必须对状态做一份 深拷贝(每个引用对象的逐个成员的拷贝),因为状态 在线路上传输之前, STATE_TRANSFER 协议有可能保留一会状态。如果状态引用的任何对象 在这时被修改了,传输的状态就会变得不一致。实际上,因为深拷贝操作本身要花一定的时 间,所以在复制期间要防止对状态的并发访问,以确保状态操作的同步。

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

时间:2011-04-16 IBM Sing Li

5. 最后,我们需要在 JGCart 启动期间调用 getState()。清单 3 中以绿色高亮显示的 一行负责这一动作,并且是 PrepareChannel() 方法的一部分。注意 getState() 调用是异 步的。它只是启动 STATE_TRANSFER 协议以从群集获得状态,但是它立即返回。 PullPushAdapter 类对 MessageListener 接口的 setState() 的回调将在以后某一时间发生 。

清单 3 到 5 中的代码都在源代码中 (参见 参考资料),但是都被注释掉了。要获得状态 传输支持功能,请删除注释并重新编译。

有了 STATE_TRANSFER 支持之后,我们就作好了再次尝试 JGCart 群集模拟的准备。首先 ,启动一个 JGCart 实例,然后添加几件商品到购物车。现在通过启动另一个 JGCart 实例 来模拟添加新机器到群集。该实例现在启动了,就像第一个实例一样,所有的商品都在购物 车中。在它启动之后,我们可以使用任何一个 JGCart 来继续购物。JavaGroups 的状态传输 协议允许我们在任何时候添加新机器到群集中。

当然,如果需要传输的状态非常大,那么将它通过线路发送给每台加入群集的新机器是不 切实际的,甚至是不可能的。当机器经常性地加入和离开群集时尤其如此。幸运的是,J2EE Servlet/JSP 容器级别的实现通常涉及到较低的成员关系计数,并且成员关系很少改变 (例 如,机器崩溃或者拿到群集外面去维护)。

廉价机器群集可以为部署 Web 应用和 Web 服务提供一个可伸缩的、高度可用的平台。然 而,这种群集所需的网络软件通常是针对于某一特定应用的,并且是难以编写和测试的。 JavaGroups 是一个开放源代码的分布式系统工具,通过提供以下马上可以部署的、高级别的 特性,对于这一难题可以有所帮助:

组成员关系管理。

基于多播和单播消息的组通信。

状态传输协议。

功能分布式数据结构。

一些可重用的、经常使用的通信编码模式组成的库。

利用 JavaGroups 的特性,我们创建了群集购物车 Web 应用(JGCart)的会话复制机制 的一个可视化演示。通过对 JGCart 进行实验,我们看到了会话复制如何才能改善 Web 层应 用的可用性和可伸缩性。

通过使用 JavaGroups 来处理群集解决方案的组通信、状态传输和数据复制等方面,设计 者可以将精力集中于其他特定于应用的需求。

本文配套源码

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号