0

我是 Infinispan 的新手。即使在通过 Infinispan 用户指南和谷歌搜索之后,我也无法弄清楚 Infinispan 在以下情况下的行为:

1) 进行再平衡时是否锁定 HotRod 客户端读取?

2) Infinispan 在 REPL 模式下如何在 HotRod 客户端使用 async 和 nearCache 运行?(我发现如果 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 Key --> 得到了预期的值

- 使用 nearCache (LAZY/EAGER) 1 个键 --> null

- 在同一次运行中,两次相同的键使用 nearCache (LAZY/EAGER) --> null(第一次) - 预期值(下一次)

需要澄清:如果一个示例代码重新验证 HotRod 客户端在 DIST 模式下的负载平衡(RoundRobin)行为。(我能够成功地使用 REPL 模式检查它,并且它像它声称的那样工作)

4

1 回答 1

1
  1. Infinispan 中的状态转移是非阻塞的
  2. 不确定我是否完全理解:您的意思是说,在 Hot Rod 客户端上启用近缓存时,从异步 REPL 缓存中读取不起作用?它只是挂起吗?你有可以分享的代码吗?

澄清一下:Hot Rod 在 DIST 和 REPL 模式(REPL 只是一种特殊的 DIST 模式,其中所有者的数量等于集群的大小)根据密钥进行哈希处理,并且仅在以下情况下才会使用轮询初级没有响应。

于 2017-11-08T12:42:29.333 回答