2014-10-30 40 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(...)方法。這些方法允許您控制哪些節點映射到備份。