2016-03-30 61 views
0

我在Hazelcast集群中有一个IAtomicReference。Hazelcast IAtomicReference仅在集群中的某些节点上

IAtomicReference<Monitor> ref = ... 

当我更新使用alterAndGetIFunction<Monitor, Monitor>一个值传递到分布式原子参考。

提供的函数可以在群集中的任何Hazelcast节点上执行,但是我想确保它只在一些节点上执行(总共8个节点中的节点1,2,3或4)。

我的理解是,Hazelcast可能会选择在任何节点上存储IAtomicReference,并且这是执行提供的更改函数的节点。所以我想我需要的是指定IAtomicReference只能存储在某些节点上。

也许值得一提的是,其他节点(5,6,7和8)根本不需要访问IAtomicReference。

我该如何做到这一点?

回答

1

因为分区可以四处移动,所以如果依靠分区,则无法完美控制该分区。所以在某些时候它可能在成员1上,但稍后它可能在成员2上。

如果您确实想要控制任务要运行的位置;你可以看看IExecutorService.submit(任务,某些成员)

+0

另一个选项是启动一些成员为“精简版成员” - 这是Hazelcast 3.6中的一项新功能。 Lite会员不拥有任何数据。然而,这是全部或没有任何情况。 –

+0

我不明白,是IAtomicReference分区?也不是我想要在特定节点上运行代码,我只是不希望它在一系列节点上运行。我能否以某种方式指定给定的IAtomicReference可能只能在一系列节点上? – Neovibrant

+0

@Jaromir Hamala不幸的是,我不能使用lite成员,因为我有其他类型的数据(主要是地图),我需要在这些其他节点上... – Neovibrant

相关问题