4

"countries" というキャッシュに分散キャッシュ スキーマを使用しているとします。私は3つのノードを持っています。一部のデータをキャッシュに入れました。このキャッシュの各ノードに存在するデータを知りたいです。ツールがあるかどうか、またはプログラムでそれを知る方法を教えてください

4

1 に答える 1

3

あなたが尋ねるかもしれないいくつかのことがあります:

  • 可用性のためにデータに冗長コピーがあることを知りたい場合は、JMX で簡単に見つけることができます。「ServiceMBean」mbean には「StatusHA」属性があり、その説明は次のとおりです。

このサービスの高可用性 (HA) ステータス。MACHINE-SAFE の値は、特定のコンピューターで実行されているすべてのクラスター メンバーを、データを失うことなく停止できることを意味します。NODE-SAFE の値は、どのクラスタ メンバーもデータを失うことなく停止できることを意味します。ENDANGERED の値は、このサービスを実行するクラスター メンバーが異常終了すると、データが失われる可能性があることを示します。

  • キーがどのパーティションに属しているかを知りたい場合は、キャッシュのサービスを取得し (CacheService サービス = cache.getCacheService())、そこから KeyPartitioningStrategy を取得します (KeyPartitioningStrategy strategy = ((PartitionedService) service).getKeyPartitioningStrategy()),次に、キーがどこにあるかを戦略に尋ねます (int パーティション = strategy.getKeyPartition(key))。

  • キー アフィニティを使用してキャッシュ データの場所を制御する場合は、明らかにそれよりも少し複雑です ;-) .. 詳細については、KeyPartitioningStrategy.getKeyPartition の JavaDoc を参照してください。

  • パーティションが属するクラスター メンバーを特定するには、PartitionedService.getKeyOwner(Object oKey) を呼び出すだけです。

  • 上記のすべてに相当するサーバー側は BackingMapManagerContext.getKeyPartition() であり、便利なメソッド BackingMapManagerContext.isKeyOwned() もあります。

Coherence の優れた点は、すべての操作が 1 回限りの操作であることが保証されているため、通常はデータの場所を気にする必要がないことです。 HA 要件を達成しました。

完全な開示のために、私はオラクルで働いています。この投稿で表明された意見や見解は私自身のものであり、必ずしも私の雇用主の意見や見解を反映するものではありません.

于 2014-02-14T17:44:50.213 に答える