如何运行两个共享单一数据结构的Hazelcast节点?

时间:2013-12-12 16:12:39

标签: java distributed hazelcast

假设我有2个IP 192.168.5.101192.168.5.102的节点。我想首先启动一个任务初始化分布式地图,然后在几分钟内启动第二个(在这两个主机上)。我应该如何配置它们以便能够看到彼此并分享该地图?

UPD。我瞥了一眼Hazelcast文档,并设法使用以下代码运行两个实例:

Config config = new Config();
config.getNetworkConfig().getJoin().getMulticastConfig().setEnabled(false);
config.getNetworkConfig().getJoin().getTcpIpConfig().addMember("192.168.4.101").addMember("192.168.4.102").setRequiredMember("192.168.4.101").setEnabled(true);
config.getNetworkConfig().getInterfaces().setEnabled(true).addInterface("192.168.4.*");

进一步的地方:

HazelcastInstance hazelcast = Hazelcast.newHazelcastInstance(config);
MultiMap<Long, Long> idToPids = hazelcast.getMultiMap("mapName");
IMap<Long, EntityDesc> idToDesc = hazelcast.getMap("multiMapName");

所有这些都是一些工作执行代码。 我在两个不同的节点上运行这个类,他们成功地看到对方并进行通信(甚至可以分享资源,据我所知)。

但问题是两个节点的工作似乎很多比单个本地节点的情况慢。我做错了什么?

1 个答案:

答案 0 :(得分:0)

速度减慢的原因之一是任务中使用的数据(我对它们一无所知)可以存储在与运行任务不同的成员上。使用单节点群集,您没有此问题。但是对于多节点集群,地图将被分区,因此每个成员只会存储数据的子集。

同样使用单个节点,没有备份,因此它比真正的集群设置(因此> 1个成员)快得多。

这些是事情可能放缓的一些明显原因。但是如果没有其他信息,很难猜出原因是什么。

相关问题