2017-10-18 13 views
0

ハザードキャストクラスタには2つのノードがあります。私は地図からキャッシュを取得しようとしています。これは2番目のノードに格納されている可能性があります。ネットワークに障害が発生した場合、マップからキャッシュを取得している間待機ループに入ります。 待機中ではなくマップからキャッシュを取得中に、即座のネットワーク障害を検出する方法はありますか。 getを呼び出す前にtryLockを試してみましたが、trueまたはfalseを返しますが、すべての場合に機能するかどうかはわかりません。ヘーゼルキャスト:マップからキャッシュを取得する際にネットワーク障害を検出する方法

答えて

0

0タイムアウトでLockOperationを呼び出すのは、ネットワークパーティションがある場合はすぐに戻ります。 オブジェクトを返すIMap.getAsync(key)を使用すると、同様のシナリオを達成できます。 次に、ICompletableFuture.get(timeout, timeUnit)を使用して、マップからエントリを取得するタイムアウトを設定します。

ネットワークパーティションはハートビートで検出されます。メンバーが特定のタイムアウトのハートビートを送信しない場合、メンバーは死んだとみなされます。したがって、すぐにネットワークパーティションを検出する方法はありませんが、hazelcast.heartbeat.interval.secondshazelcast.max.no.heartbeat.secondsのプロパティで動作を設定できます。 (Hazelcast DocsのSystem Propertiesを参照)

関連する問題