JBoss企业级应用服务平台群集指南(十一)

2.1.4      可靠的传输协议

    JGroups 栈里的可靠传输协议(reliable delivery protocols)确保数据包按正确的顺序(FIFO)正确地递送到目的节点。可靠的信息递送的基础是肯定和否定的递送确认(delivery acknowledgments)(ACK  NAK)。在 ACK 模式下,发送者重新发送信息直到收到接收者的确认。在 NAK 模式下,当接收者发现一个间断时,它会请求重新传送。
2.1.4.1        UNICAST
    UNICAST  协议用于单播信息。它使用  ACK 。它被配置成  JGroups Config  元素下的一个子元素。这里有一个配置 UNICAST  协议的例子。
< UNICAST  timeout ="100,200,400,800" />
UNICAST 元素里只有一个可配置属性。
  timeout 指定重新传送的超时时间(毫秒数)。例如,如果这个超时时间是 "100,200,400,800",如果发送者在 100毫秒后还没有接到 ACK,它会重新发送信息,第二此重发会在 200 毫秒后,以此类推。
2.1.4.2        NAKACK
    NAKACK  协议用于多点传送信息。它使用  NAK 。在这个协议下,每个信息用一个序列号标识。接收者根据这个序列号来按顺序递送信息。当检测到序列号存在一个间断时,接收者会要求发送者重新传送丢失的信息。 NAKACK  协议被配置为  JGroups Config  元素下的 pbcast.NAKACK  子元素。这里有一个配置示例。
< pbcast.NAKACK 
max_xmit_size ="8192" 
use_mcast_xmit ="true" 
retransmit_timeout ="600,1200,2400,4800" />
下列是pbcast.NAKACK 元素的可配置属性。
  retransmit_timeout 指定重发的超时时间(毫秒数)。它和 UNICAST 协议里的 timeout 属性是一样的。
  use_mcast_xmit 决定发送者是否应该重发给整个群集而不只是请求的节点。这在发送者取消数据包时很有用 - 我们不需要对每个节点都重发。
  max_xmit_size 指定当多个数据包丢失时,捆绑在一起的重发的最大规模。
  discard_delivered_msgs 指定是否丢弃接收节点上的递送信息。在缺省情况下,我们保存所有的递送的信息。然而,如果我们只需要发送者重发信息,我们就可以启用这个选项来丢弃递送的信息。

2.1.5      其他的配置选项

    除了协议栈以外Config 元素中你也可以配置JGroups网络服务。
2.1.5.1        组成员资格
    JGroups  栈里的组成员资格( group membership )服务维护一个活动节点的列表。它处理加入和离开群集系统的请求。它也处理故障检测协议( failure detection protocols )发送的可疑 (SUSPECT) 信息。当组成员资格有变动时,它通知群集系统里的所有节点,负载平衡系统( load balancer )和客户端拦截器( client side interceptors )。组成员资格( group membership )服务可以在  JGroups Config  元素下的  pbcast.GMS  子元素里配置。这里是一个配置示例。
< pbcast.GMS  print_local_addr ="true" 
join_timeout ="3000"  down_thread ="false"  join_retry_timeout ="2000"  shun ="true" />
下列是pbcast.GMS元素里的可配置属性。
  join_timeout 指定了等待新节点 JOIN 请求成功的最长时间(毫秒数)。 然后再试。
  join_retry_timeout 指定 JOIN 失败后重新递交JOIN前所等待的时间(毫秒数)。
  print_local_addr 指定是否在启动时输出节点自己的地址。
  shun 指定如果收到指明自己并非成员节点的群集视图,节点是否剔除(shun)自己。
  disable_initial_coord 指定是否阻止这个节点成为群集控制点(cluster coordinator)。
2.1.5.2        流程控制
     流量控制( flow control )服务试图在节点间控制发送和接收数据传输率。如果一个节点发送的过快,它可能会使接收节点难以负荷,导致数据包的丢失而且不得不重新发送。在  JGroups  里,流量控制通过基于信用值( credit-based )的系统来实现。发送和接收节点具有相同的初始信用值( credits )(字节数)。发送者减去所发送信息的字节数,而接收者积累它接收到的信息的字节数。当发送者的信用值减少至某一极限时,接收者将把一些信用值发送给发送者。如果发送者的信用值被用光了,发送者将暂停,直到它收到接收者的信用值为止。流量控制服务在  JGroups Config  元素下的  FC  子元素里配置。下面是一个配置示例。
< FC  max_credits ="1000000"  down_thread ="false" 
min_threshold ="0.10" />
下列是 FC 元素的可配置属性。
  max_credits指定最大的信用值(字节数)。这个值应该小于 JVM  heap size
  min_credits 指定发送者的极限信用值,如果低于这个值,接收者就应该发送更多的信用值给发送者。
  min_threshold 指定极限值的百分比。它可以覆盖 min_credits 属性。
2.1.5.3        状态转移
     状态迁移服务从一个现有的节点 ( 例如 .,  集群协调者 传输状态到一个新加入的节点。它的配置在 JGroups Config  元素之下的 pbcast.STATE_TRANSFER sub-element 它没有一些配置属性 . 这是一个配置实例 .
< pbcast.STATE_TRANSFER  down_thread ="false"  up_thread ="false"
/>
2.1.5.4        分布式的垃圾回收
     在一个 JGroups 集群里 所有的节点不得不存放收到的所有消息,为了万一出现故障的潜在重发。可是 如果我们永远存储所有的消息 我们将用完内存。所以 JGroups 中的分布式的碎片收集服务周期性的,从我们能看到的所有节点的各自的内存中清理消息。分布式碎片收集配置在 JGroups Config 元素之下的  pbcast.STABLE sub-element  。这是一个配置实例 .
< pbcast.STABLE  stability_delay ="1000"  desired_avg_gossip ="5000"  down_thread ="false"  max_bytes ="250000" />
pbcast.STABLE 元素里的配置属性如下.
  desired_avg_gossip 指定碎片收集运行的时间间隔(单位是毫秒). 当值设置成0时,将禁用此服务。
  max_bytes 指定在集群触发一个碎片收集运行之前,收到的字节的最大数量当值设置成0时,将禁用此服务。
  max_gossip_runs指定在一些修改之前最大碎片收集运行。
这个数值到达之后,直到这个消息被接收,否则没有碎片收集。
注意 
    当你有一个高效的通信群集的时候设置 max_bytes 属性.
2.1.5.5        合并
     当一个网络出现错误的时候,集群可以被分割为几个不同的分区。 JGroups 有一个 MERGE  服务,允许协调者在分区中互相通话。 and form a single cluster back again. flow  控制服务配置在 JGroups Config 元素之下的 MERGE2 sub-element  里面。这有一个实例配置。
< MERGE2  max_interval ="10000"  min_interval ="2000" />
FC元素里可配置的属性如下。
  max_interval指定发送一个MERGE消息的最大时间,单位是毫秒。
  min_interval指定发送一个MERGE消息的最小时间,单位是毫秒。
JGroups  min_interval   max_interval 之间选择一个随机的数值来发送 MERGE 消息。
注意 
    在一个合并里集群的状态是不合并的。这需要应用程序来完成。

本文转自xudayu 51CTO博客,原文链接:http://blog.51cto.com/xudayu/70656,如需转载请自行联系原作者

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值