如何在infinispan分发模式下将一个节点作为特定条目的所有者?

时间:2017-10-30 07:01:49

标签: infinispan

我目前正致力于infinispan 8.1.3的项目。我想确保创建对象的节点必须始终是分发模式中该条目的所有者。是否有任何选项可以满足我的要求?我听到了标志LOCAL_MODE.but,它只在本地存储条目。我不知道该节点是否已关闭,本地cahe条目是否会被共享到另一个节点?感谢

1 个答案:

答案 0 :(得分:3)

除非你确切知道自己在做什么,否则不要使用旗帜。 Flag.CACHE_MODE_LOCAL表示在执行该操作时不会执行任何RPC,但如果密钥未路由到此节点,则写入将导致noop,read将返回null。< / p>

不可能将条目专门绑定到节点 - 如果此节点崩溃,您会怎么做?

但是,如果群集足够稳定,那么Key Affinity Service将为您提供属于此节点的密钥。请参阅下一章有关分组的内容,它可能适合您的用例。

编辑:您可以将数据移至执行节点,而不是将数据移至执行节点。使用Grouping API,您可以使用

找到该组的数据
Address owningNode = cache.getAdvancedCache().getDistributionManager()
   .getCacheTopology().getDistributionInfo(group).primary();
ClusterExecutor executor = cache.getCacheManager().executor()
   .filterTargets(Collections.singleton(owningNode));
executor.submit(...)