Зажечь AffinityKeyMapped и AffinityKeyMapper - PullRequest
0 голосов
/ 31 августа 2018

Использование Ignite 2.6.0
Что я хотел бы сделать: использовать метод класса для вычисления значения ключа сродства для кэша. Другими словами, для IgniteCache<Key, Value> я хочу использовать Key::someMethod для вычисления ключа схожести.

Класс GridCacheDefaultAffinityKeyMapper по умолчанию, по-видимому, не поддерживает использование методов класса.

Поэтому я подумал об использовании CacheConfiguration::setAffinityMapper(AffinityKeyMapper) с пользовательским классом, реализующим AffinityKeyMapper. Но AffinityKeyMapper помечен как устаревший.

Если я правильно понимаю вещи, у меня есть два варианта:
1. Вычислите требуемое сродство во время строительства объекта и используйте AffinityKeyMapped
2. Игнорируйте предупреждение об устаревании и используйте CacheConfiguration::setAffinityMapper(AffinityKeyMapper)

Какой из этих путей правильный или существует третий путь?

1 Ответ

0 голосов
/ 31 августа 2018

Ignite хранит данные в двоичном формате и не десериализует объекты на стороне сервера, если вы явно не спросите об этом в коде (например, если вы запускаете вычислительное задание и получаете что-то из кэша). На самом деле, в общем случае на узлах сервера вообще нет классов ключ / значение, поэтому нет способа вызвать метод или использовать AffinityKeyMapper. Вот почему это устарело.

Я бы рекомендовал предварительно задавать значение ключа сродства при создании ключевого объекта (т. Е. Перейти к параметру # 1).

...