2017-11-07 23 views
0

私は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での状態転送が

  • 私は完全に理解していないが、非ブロッキングさ

  • +0

    より新しいInfinispanのバージョンでは、レプリケーションキューを削除しているため、構成から判断すると古いInfinispanバージョンを使用しているようです。キャッシュを非同期レプリケートに設定するだけです。それだけです。私があなただったら、問題が最新のInfinispan安定リリース(9.1.2 –

    答えて

    1
    1. (私はそれが主張としてそれが動作&、成功しREPLモードでそれを確認することができています) Hot Rodクライアントでのキャッシュの近くで、非同期REPLキャッシュからの読み取りが機能しません。それだけでハングアップしますか?あなたが共有できるコードがありますか?

    説明:Hot Rodは、DISTモードとREPLモードの両方でプライマリオーナーに行きます(REPLは、所有者の数がクラスタのサイズと等しい特殊なDISTモードです)。プライマリが応答していない場合は、ラウンドロビンのみを使用してください。

    +0

    )であるかどうかを確認します。つまり、100%ラウンドロビンではありません。まず、プライマリノードは値を返そうとします。失敗した場合は、ラウンドロビンのみが適用されます。私の理解は正しいのですか? 「はい」の場合、いつでも、特定のキーについて、そのキーの主な所有者は、むしろすべての要求を処理します。 –

    +0

    &プライマリオーナーが生きているが応答できない場合を説明してください(&HotRodクライアントは他のノードから鍵を入手する必要があります)? –

    +0

    はい、あなたの理解は正しいです。 2番目のqについては、クライアントとサーバー間のネットワーク上でさまざまな理由で応答しないことがあります。ノード間通信は異なるスイッチを使用してもよい。また、ノードが過負荷になっているか、GCとクライアントがタイムアウトしている可能性があります(タイムアウトが低く設定されている場合)。それはネットワークで、奇妙なことが起こる可能性があります。 –

    関連する問題