2014-10-30 41 views
0

从GridGain文档中我可以看出,通过注释@GridCacheAffinityKeyMapped,我可以将高速缓存项与由@GridCacheAffinityKeyMapped标记的同一字段(例如同一用户的所有记录)并置。决定如何在GridGain集群上分区备份密钥

1)例如,如果我使用@GridCacheAffinityKeyMapped注释“String username”,并且有一个群集,每个节点只能保存X个记录,但我选择使用相同的用户名字段存储Z记录,会发生什么情况。如果驱逐策略(假设我有一个简单的FIFO策略限制每个节点保存X条记录)会导致我丢失(Z-X)记录并因此将具有相同用户名的所有记录存储在同一节点上,或者将记录跨两个不同的节点?

2)有没有一种方法可以指定备份的映射位置?为了弹性,我想控制备份的位置。

回答

0
  1. 除非您配置synchronized evictions,否则驱逐策略对每个节点都是本地的。所以在你的例子中,(Z - X)记录将被驱逐。顺便说一下,@GridCacheAffinityKeyMapped注释在这里没有任何区别。

  2. 是的,您可以通过在缓存配置中提供自己的GridCacheAffinityFunction来覆盖亲和性映射。但是,请看GridCacheConsistentHashAffinityFunction.setBackupFilter(...)GridCacheRendezvousAffinityFunction.setBackupFilter(...)方法。这些方法允许您控制哪些节点映射到备份。