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