如何知道一个缓存条目驻留在哪个节点上

时间:2016-12-16 02:20:01

标签: ignite

我有一个包含10个节点的Ignite Cluster,我有一个分区缓存,2个备份。对于给定的缓存条目,我想知道这个条目不在哪个节点? 看起来命令行界面(ignitevisorcmd.sh)不提供此功能。

2 个答案:

答案 0 :(得分:1)

这是获取密钥的主节点的方法:

Affinity affinity = ignite.affinity("my-cache");
ClusterNode primary = affinity.mapKeyToNode(key);

Affinity API还有许多其他方法可以手动计算关联性(分区号,节点映射等)。

答案 1 :(得分:0)

我曾问过类似的问题。您可以通过以下链接查看:

Putting cache entries to specific Ignite Server

  1. 在更高级别,Ignite会在执行放置操作时获取您提供的密钥。
  2. 然后形成一个更适合散列的关联键。
  3. 它生成此关联键的哈希码,并执行模数运算(取决于Ignite服务器的数量)以均等分配它。
  4. 我认为无法找到条目所在的Ignite服务器。但是,如果您的用例是在该特定网格中执行某些计算,您可以在Ignite Compute Grid中使用Affinity Call,或者使用该键上的Entry处理器。