两个Hazelcast Nodes行为之间的配置更改?

时间:2016-05-18 12:37:32

标签: cluster-computing hazelcast

我正在使用Hazelcast(版本3.2),以便在两个运行的App实例之间有一个distributedQueue(两个不同的JVM,节点通过tcp连接)。我的每个实例都是一个Node和我的每个实例有异步客户端。

出于某种原因,我必须更改distributedQueue的最大大小和备份过程(从异步到同步)。 我需要每次运行至少一个我的实例,我将更改每个实例的hazelcast配置并一个接一个地重启实例(tomcat)。

我的问题是: 配置差异会不会成为问题?

我的分布式队列在我的每个实例(节点)的hazelcast-config文件中配置。

其他问题: 我的分布式队列是否只需要只有一个节点Hazelcast配置文件?如果两个节点是群集的一部分,则必须在每一侧声明DistributedQueue或仅声明一个?

由于

更新

我使用从localhost开始的两个节点和两个不同的配置进行了快速测试:一个带有分布式队列,名为" testQueue"最大大小= 90,另一个具有相同的队列名称但最大大小= 70。

    @Test
    public void twoNodesWithDifferentQueueConfiguration() throws Exception {


    Config config1 = new ClasspathXmlConfig("hazelcast-node-1-config.xml");
    HazelcastInstance hz1 = Hazelcast.newHazelcastInstance(config1);

    Config config2 = new ClasspathXmlConfig("hazelcast-node-2-config.xml");
    HazelcastInstance hz2 = Hazelcast.newHazelcastInstance(config2);


    System.out.println("Local Queue of Hz1 remaining capacity : "+hz1.getQueue("testQueue").remainingCapacity());
    System.out.println("Local Queue of Hz2 remaining capacity : "+hz2.getQueue("testQueue").remainingCapacity());
    HazelcastInstance hazelcastClient = HazelcastClient.newHazelcastClient(getClientConfig());

    hazelcastClient.getQueue("testQueue").add(UUID.randomUUID().toString());

    System.out.println("Local Queue of Hz1 remaining capacity : "+hz1.getQueue("testQueue").remainingCapacity());
    System.out.println("Local Queue of Hz2 remaining capacity : "+hz2.getQueue("testQueue").remainingCapacity());

}

两个节点相互连接并形成一个集群。如果使用一个简单的java客户端并将一个项添加到名为" testQueue"的队列中。每个节点的队列最大剩余大小似乎不同。

Local Queue of Hz1 remaining capacity : 90
Local Queue of Hz2 remaining capacity : 70
mai 18, 2016 3:54:30 PM com.hazelcast.core.LifecycleService
INFOS: HazelcastClient[hz.client_0_test2] is STARTING
mai 18, 2016 3:54:30 PM com.hazelcast.core.LifecycleService
INFOS: HazelcastClient[hz.client_0_test2] is STARTED
mai 18, 2016 3:54:30 PM com.hazelcast.core.LifecycleService
INFOS: HazelcastClient[hz.client_0_test2] is CLIENT_CONNECTED
mai 18, 2016 3:54:30 PM com.hazelcast.client.spi.ClientClusterService
INFOS: 

Members [2] {
  Member [127.0.0.1]:5701
  Member [127.0.0.1]:5702
}

Local Queue of Hz1 remaining capacity : 89
Local Queue of Hz2 remaining capacity : 69

但它是相同的分布式对象吗?

1 个答案:

答案 0 :(得分:1)

  

配置差异会不会成为问题?

是。所有节点的配置应该相同,并且应该在开始时定义。我相信,不支持动态配置。

  

我的分布式队列是否只需要只在一个节点中   Hazelcast配置文件?如果两个节点是群集的一部分,   必须在每一侧声明DistributedQueue还是只声明一个?

如果您使用XML方式配置Hazelcast,那么您可以在其中定义队列配置。如果以编程方式启动,那么在一个地方定义就足够了。请注意它是一个分布式数据结构,所以一旦你在一个节点中定义它,它就会被共享和放弃。分布在整个集群中。