高影响力的Web层群集, 第二部分: 用JavaSpaces构建 - 编程入门网
支持自修复的、长寿的网络的概念。一个租约用是当以客户的 名义要求或者占有网络资源(像内存这样的物理资源或者像事务这样的概念资源)时,由资源 拥有者授予的。例如,一个由事务管理程序创建的事务是有租约的。这保证在创建了事务的 Jini 客户崩溃并再也不加入网络时,资源也会最终释放。想要在租约期后继续租用的 Jini 客户必须在其失效前更新其租约。
注意在清单 5 中我们使用了一个 JavaSpaces LeaseRenewalManager 帮助器类以保证对 事件的租约得到更新。远程事件注册在 Jini 中是有租约的,因为每一个注册会占用一定的 网上资源。通过为 LeaseRenewalManager 帮助器类指派租约更新,我们可以保证当这个 JSCart 实例运行时租约不会失效。另一个值得注意的地方是在 exporter 对象中使用 export() 方法,以便可以用 RMI 访问我们的对象。现在 Jini 2.0 对 RMI 的增强要求显式 导出远程对象-- 如果我们是从 exporter 对象继承的话,自动 stub 插入将不再发生。 图 6 显示了事件注册和远程通知序列,显示了共享会话状态改变通知是如何实现的: 图 6. 事件注册和远程通知序列 为了试验支持分布式通知的 JSCart,需要从 JSCart 和 CartSessionManager 类的源代码中小心地去掉明确标记出的一段代码注释。用 code\src 目录中的 rcompile.bat 文件重新编译。这还会创建所需要的RMI stub,并生成 jscart-dl.jar 文件。更多细节参阅源代码中的 README.TXT 文件。 结束语 使用 JavaSpaces 和 Jini 技术使我们可以在更高的级别上设计群集系统。使用三种基本 的 read 、 take 和 write 操作,我们创建了一个在群集中共享应用服务器会话的分布式共 享内存模型。JavaSpaces 对事务和租约的支持使我们可以围绕部分故障进行设计并把注意力 放到会话共享机制上。 每一个分布式应用程序都有自己独特的需求,创建一个一般性地满足所有应用程序的基本 API 是很困难的 -- 如果不是不可能的话。我们分析了主机/备用机容错会话共享群集与完全 负载平衡的会话共享群集配置所带来的需求的不同之处。JavaSpaces 可以在更高的级别上进 行调整,使我们可以创建只需要很少的改变就可以进行调整满足这些应用程序的解决方案。 我们的可视化购物车实际上需要分布式会话写通知才可以正确地工作。JavaSpaces 通过其对 空间-写的远程通知的支持再次发挥了作用。不需要重新设计,只用很少的代码修改就实现了 定制的解决方案。 图 7 显示了设计可能性的连续频谱,从最顶部的概念性到最底部的物理性: 图 7. 可用的群集技术从概念性到物理性的频谱 在频谱的顶部,解决方案设计要容易得多,因为我们可以使用与要处理的问题更接近的对 象和组件。例如,我们可以在“会话”对象的基础上工作。在领域的底部是原始 的实现细节(如“在网络上发送这个包”)。虽然在较低的级别上可能提供了更多 的控制和灵活性,但是工程师也需要做多得多的设计、编码和测试工作。在更高的级别上工 作使工程师可以迅速地创建定制的解决方案并注重实际的问题,但是同时需要有对底层的实 现有更多的信赖和信任。 群集解决方案设计者可以在频谱中任何位置选择支持技术。我们可以看到 JavaSpaces 解 决方案处于相当高的位置,而我们上一次讨论的 JavaGroups 解决方案就要低一些。在本系 列的下一篇、也是最后一篇文章中,我们将进一步分析正在出现的分布式系统组装技术,它 比 JavaSpaces 更高,处在概念性频谱位置。我们将讨论它是如何帮助我们在设计高影响力 的 Web 层群集解决方案时用更少的代码做更多的事情的。 本文配套源码 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |