Чтобы понять поведение Infinispan в режиме ребалансировки и асинхронности

Я новичок в Infinispan. Даже после изучения Руководства пользователя Infinispan и поиска в Google я не могу понять поведение Infinispan в следующих случаях:

1) Блокируется ли чтение на HotRod Client во время перебалансировки?

2) Как Infinispan ведет себя в режиме REPL с async & nearCache на стороне клиента HotRod? (Я обнаружил, что если nearCache отключен, то он может получать данные, но не с nearCache. Имеет ли это отношение к обновлению nearCache?)

Код сервера:

GlobalConfigurationBuilder globalConfig = GlobalConfigurationBuilder.defaultClusteredBuilder();
globalConfig.transport().clusterName("infiniReplicatedCluster").globalJmxStatistics().enable().allowDuplicateDomains(Boolean.TRUE);
ConfigurationBuilder configBuilder = new ConfigurationBuilder();
EmbeddedCacheManager embeddedCacheManager = new DefaultCacheManager(globalConfig.build());

configBuilder.dataContainer().compatibility().enable().clustering().cacheMode(CacheMode.REPL_ASYNC)
    .async().replQueueInterval(120, TimeUnit.SECONDS).useReplQueue(true).hash();
embeddedCacheManager.defineConfiguration("TestCache", configBuilder.build());

Cache<String, TopologyData> cache = embeddedCacheManager.getCache("TestCache");
cache.put("00000", new TopologyData());

HotRodServerConfiguration build = new HotRodServerConfigurationBuilder().build();
HotRodServer server = new HotRodServer();
server.start(build, embeddedCacheManager);

Код клиента:

ConfigurationBuilder remoteBuilder = new ConfigurationBuilder();
remoteBuilder.nearCache().mode(NearCacheMode.EAGER).maxEntries(100);
RemoteCacheManager remoteCacheManager = new RemoteCacheManager(remoteBuilder.build());
remoteCache = remoteCacheManager.getCache("TestCache");
System.out.println(remoteCache.get(fetchKey));

С помощью приведенного выше кода сценарии и результаты перечислены ниже (все прогоны были выполнены несколько раз, что привело к одному и тому же результату):

-Без ключа NearCache 1 -> получил значение, как и ожидалось

- С ключом nearCache (LAZY/EAGER) 1 -> ноль

-При одном запуске, один и тот же ключ два раза с nearCache (LAZY/EAGER) -> null(в первый раз) - ожидаемое значение (в следующий раз)

Требуется пояснение: если образец кода для повторной проверки поведения балансировки нагрузки (RoundRobin) клиента HotRod в режиме DIST. (Я успешно могу проверить его в режиме REPL, и он работает, как он утверждает)

1 ответ

  1. Государственный перевод в Infinispan не блокирует
  2. Не уверен, что я полностью понимаю: вы хотите сказать, что при включении почти кэширования на клиенте Hot Rod чтение из асинхронного кэша REPL не работает? Это просто висит? У вас есть код, которым вы можете поделиться?

Пояснение: Hot Rod переходит к основному владельцу как в режиме DIST, так и в режиме REPL (REPL - это просто специальный режим DIST, где количество владельцев равно размеру кластера), хэшируется в соответствии с ключом и будет использовать Round Robin, только если Основной не отвечает.

Другие вопросы по тегам