版本 2

    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.8No
    jgroups.udp.mcast_port多播使用的端口。46655No
    jgroups.udp.ip_ttl指定IP多播报文的time-to-live (TTL)。这个值的表示一个数据包被弃用前所允许的网络hop数。2No

     

     

    jgroups-tcp.xml

     

    系统属性描述默认值是否必须
    jgroups.tcp.address TCP 传输使用的IP地址。127.0.0.1No
    jgroups.tcp.port TCP socket使用的端口。7800No
    jgroups.udp.mcast_addr

    指定多播地址 (用于通信和服务器发现)。 必须是一个有效的D类IP地址,用于IP广播。

    228.6.7.8No
    jgroups.udp.mcast_port 多播使用的端口。46655No
    jgroups.udp.ip_ttl 指定IP多播报文的time-to-live (TTL)。这个值的表示一个数据包被弃用前所允许的网络hop数。2No

     

     

     

    jgroups-ec2.xml

     

    系统属性描述默认值是否必须
    jgroups.tcp.address TCP 传输使用的IP地址。127.0.0.1No
    jgroups.tcp.port TCP socket使用的端口。7800No
    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手册。