快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-17
证能接收到视图之间的同一组消息。一个视图中发送的任何消息也能保 证在该视图中接收到。尽管对于小的成员关系是稳定的,但是这种实现对于非常大的成员关 系却缺乏可伸缩性。事实上,JavaGroups 中的虚拟同步实现对于大的组成员关系是相当有问 题的。

为了支持非常大的成员关系――这种情况下,随机广播比绝对保证更加可接受―― JavaGroups 提供了一组基于 随机广播的协议。随着成员关系的增长,这些协议是可扩展的 和稳定的。

JavaGroups 通道

通道是一个类似于套接字的实体,具有大量添加进来的值,以使我们的分布式编程更加容 易。作为分布式的应用开发者,我们在通道上面编程,而通道为我们访问 JavaGroups 提供 的丰富的协议支持提供保障。

就跟套接字一样,通道有一个与之相关的地址,并且是我们用来发送和接收数据的对象。 但是与套接字不同的是,与通道相关的地址是不透明的 (应用开发者不必知道该地址的物理 细节),并且我们从通道发送和接收的数据是消息――是比套接字的分组更高级别的实体。

为了对进程组通信有用,一个通道将与一组进程相关。每个通道都有一个与之相关的文本 化的通道名称 (有时叫做 组地址) ,并且具有相同名称的通道实例在逻辑上属于相同的组。

分布式网络中的组成员关系管理解决(或者编程)起来不是一个容易的问题。事实上,组 成员关系管理是 JavaGroup 最有价值的特性之一。通道抽象下面的协议栈可以为我们执行组 成员关系管理,在成员加入和离开组时对它们进行跟踪。您甚至可以选择使用基于虚拟同步 的算法或者是基于随机广播的算法 (参见 虚拟同步与随机广播)。

地址和通道名称一起惟一地标识一个通道实例。要使用通道实例,必须首先与之连接。一 次只可以有一个进程连接到一个通道实例。您也可以断开与一个通道实例的连接,以将它释 放给其他进程使用,也可以关闭一个通道实例以永久地禁用它。图 4 演示了通道实例如何方 便进程组通信:

图 4. 利用 JavaGroups 通道进行通信

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

图 4 显示了三台机器上四个通过 LAN 的通道实例。注意,所有的通道实例具有相同的通 道名称,但是具有不同的物理地址。在这种情况下,每个物理地址包含一个 <IP 地址: 端口>, ,因而允许同一主机(一个 IP 地址)上的多个物理地址。另外注意,只有一个进 程连接到每个通道实例。四个进程全都属于同一个组。

进程组中的通信

您可以通过通道发送一个消息到组的一个特定成员 ( 单播),或者发送到组的所有成员 ( 多播)。要发送消息到组的特定成员,您需要它的地址。

既然通道为我们管理组成员关系,因此您总可以通过从通道检索成员关系列表来获得当前 “视图”中的成员。另外,您也可以在视图更改(成员关系更改通知) 发生时从通 道了解到这一更改。图 5 演示了分布式应用开发者和通道抽象之间职责的分离:

图 5. JavaGroups 通道的功能视图

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

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

时间:2011-04-16 IBM Sing Li

可重用的通信编码模式

为了进一步简化分布式的应用编程,JavaGroups 以 Java 类的形式提供了一组经常使用 的通信编码模式。您可以使用多个这些 编程模式(也叫做 构造块) ,来代替或补充对通道抽 象的直接访问。

在 org.javagroups.blocks 包中可以找到所有这些模式。表 1 显示了最有用的构造块的 部分列表:

表 1. 编码模式构造块

类名称 描述
PullPushAdapter 减少用户在通道中检查入站消息的需要。用户注册一个侦听器,而适配器 将回调入站消息的收据或者视图的更改
MessageDispatcher 封装一个到所有成员的请求的同步发送,并关联响应的收据。可以等待第 一个响应、所有响应、特定数量的响应、大多数响应,或者一直等待到超时。通过注册一个 MessageListener ,可以使用的API将更加丰富。另外,用户可以注册一个 RequestHandler , 以处理到通道的入站请求
RpcDispatcher 位于 MessageDispatcher 的上面一层,添加远程方法调用语义到消息分配 器管理的场景。允许用户调用远程方法,并且关联来自所有或一部分成员的返回值。通过对 用户提供的服务器对象使用反射,还支持来自其他 RpcDispatcher 实例的入站远程调用。
ConnectionTable 一个 TCP 连接管理器,它使用线程池来处理入站连接。重用现有的出站 TCP 连接来发送消息

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号