从4.2.0.CR4版本开始, Infinispan 自带了一个预定义的 JGroups栈,可以使你更加容易的进行集群配置。
使用外部的JGroups 文件
如果你是通过编程的方式来配置缓存,你可以按照下面的方式进行:
// ...
GlobalConfiguration gc = ....
Properties p = new Properties();
p.setProperty("configurationFile", "jgroups.xml");
gc.setTransportProperties(p);
// ...
如果你是通过XML文件的方式来配置Infinispan,你可以这么做:
<infinispan>
<global>
<transport>
<properties>
<property name="configurationFile" value="jgroups.xml" />
</properties>
</transport>
</global>
...
</infinispan>
在上面的例子中,Infinispan 都假设在classpath下包含了jgroups.xml文件或者指定了该文件的绝对路径。
使用预定义的 JGroups 文件
Infinispan 自带了一系列不同的JGroups文件 (打包在 infinispan-core.jar),也就是说默认classpath下已经包含了这些配置。你所有要做的就是指定文件的名字,例如,指定groups-tcp.xml来代替上面的 jgroups.xml。
可用的配置包含:
- jgroups-udp.xml - 使用UDP作为传输方式并且通过UDP多播进行服务器发现。通常这种方式比较适合大集群(超过100节点)或者你正在使用复制(replication)或者失效(invalidation)。减少打开socket的数量。
- jgroups-tcp.xml - 使用TCP作为传输方式并且通过UDP多播进行服务器发现。因为TCP是一种高效率的点对点协议,所以更适用于小集群(少于100个节点)并且使用分布式的情况。
- jgroups-ec2.xml - 使用TCP作为传输方式并且通过S3_PING进行服务器发现。 适合于不能使用UDP多播的Amazon EC2 节点。
调整 JGroups 设置
在不编辑xml文件的情况下你也可以对上面的设置进行进一步的调整。在启动时向JVM传入某些系统参数可以影响一些设置的行为。 下面的表格显示了哪些参数可以通过这种方式进行设置。 例如
$ java -cp ... -Djgroups.tcp.port=1234 -Djgroups.tcp.address=10.11.12.13
jgroups-udp.xml
系统属性 | 描述 | 默认值 | 是否必须 |
---|---|---|---|
jgroups.udp.mcast_addr | 指定多播地址 (用于通信和服务器发现)。 必须是一个有效的D类IP地址,用于IP广播。 | 228.6.7.8 | No |
jgroups.udp.mcast_port | 多播使用的端口。 | 46655 | No |
jgroups.udp.ip_ttl | 指定IP多播报文的time-to-live (TTL)。这个值的表示一个数据包被弃用前所允许的网络hop数。 | 2 | No |
jgroups-tcp.xml
系统属性 | 描述 | 默认值 | 是否必须 |
---|---|---|---|
jgroups.tcp.address | TCP 传输使用的IP地址。 | 127.0.0.1 | No |
jgroups.tcp.port | TCP socket使用的端口。 | 7800 | No |
jgroups.udp.mcast_addr | 指定多播地址 (用于通信和服务器发现)。 必须是一个有效的D类IP地址,用于IP广播。 | 228.6.7.8 | No |
jgroups.udp.mcast_port | 多播使用的端口。 | 46655 | No |
jgroups.udp.ip_ttl | 指定IP多播报文的time-to-live (TTL)。这个值的表示一个数据包被弃用前所允许的网络hop数。 | 2 | No |
jgroups-ec2.xml
系统属性 | 描述 | 默认值 | 是否必须 |
---|---|---|---|
jgroups.tcp.address | TCP 传输使用的IP地址。 | 127.0.0.1 | No |
jgroups.tcp.port | TCP socket使用的端口。 | 7800 | No |
jgroups.s3.access_key | 用于访问一个S3 bucket的Amazon S3 访问键值 | Yes | |
jgroups.s3.secret_access_key | 用于访问一个S3 bucket的Amazon S3 加密访问键值 | Yes | |
jgroups.s3.bucket | Amazon S3 bucket使用的名称。 必须唯一存在。 | Yes |
进阶
JGroups 还支持一些系统属性的覆写,更多信息请参照SystemProps
此外,自带的JGroup配置文件用作一个启动和运行的起点。 然而大多数情况下,你想要进一步调整你的Groups 栈来了解对网络设备的性能影响。因此, 下面你要做的就是参照包含了JGroup配置文件中的协议详细信息的JGroups手册。
評論