私はInfinispanを初めて使用しています。 Infinispanユーザガイド&を通過した後でも、私は以下の場合Infinispanの動作を把握することができません:リバランス&非同期モードでのInfinispan動作の理解
1)リバランスが行われているときにHotRod Clientの読み取りでロックされますか?
2)HotRodクライアント側でasync & nearCacheを使用してInfinispanがREPLモードでどのように動作しますか? (私はなく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));
、シナリオ&結果は、(すべてのランは、同じ結果が得られ、複数回行われた)以下に列挙する:
-Without nearCache 1つのキー - >
- 抜けnearCache(LAZY/EAGER)1つのキー予想通りだ値 - >ヌル
-In同じ実行、nearCache(LAZY/EAGERで同じキーを2回) - > null(初回) - 期待値(次回)
明確化の必要性:DISTモードでHotRodクライアントの負荷分散(RoundRobin)動作を再検証するためのサンプルコード。あなたはそれを言うことを意味し、有効にする場合:Infinispanでの状態転送が
より新しいInfinispanのバージョンでは、レプリケーションキューを削除しているため、構成から判断すると古いInfinispanバージョンを使用しているようです。キャッシュを非同期レプリケートに設定するだけです。それだけです。私があなただったら、問題が最新のInfinispan安定リリース(9.1.2 –