博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JBoss企业级应用服务平台群集指南(十一)
阅读量:5767 次
发布时间:2019-06-18

本文共 3690 字,大约阅读时间需要 12 分钟。

    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 
指定是否丢弃接收节点上的递送信息。在缺省情况下,我们保存所有的递送的信息。然而,如果我们只需要发送者重发信息,我们就可以启用这个选项来丢弃递送的信息。

    
除了协议栈以外
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,如需转载请自行联系原作者
你可能感兴趣的文章
几何画板演示空间几何体三视图的步骤
查看>>
centos7 crontab笔记
查看>>
encodeURIComponent()
查看>>
Android 扫描蓝牙设备
查看>>
Charles常用设置
查看>>
数据库优化一般思路(PLSQL、Navicat)
查看>>
【转载】verilog语法之generate语句的基本认识
查看>>
CUDA_矢量相加
查看>>
052(二十六)
查看>>
学习随笔(二)---控制台程序
查看>>
WebService之Axis2(1):用POJO实现0配置的WebService
查看>>
java基础.2——HashMap类
查看>>
【Java学习之从头开始】Java集合-1——HashTable类
查看>>
7月22日实习日志及总结
查看>>
Spring Cloud构建微服务架构:服务消费(Ribbon)
查看>>
nodejs(log4js)服务中应用splunk进行Log存储、搜索、分析、监控、警告
查看>>
JSON与DataTable(DataSet)相互转化
查看>>
操作ini文件的公共类
查看>>
将devexpress中控件添加到vs工具箱中
查看>>
inline-block元素间距问题的几种解决方案
查看>>