2016-12-16 16 views
0

ノードが10個あるIgnite Clusterがあり、パーティション化されたキャッシュと2個のバックアップがあります。与えられたキャッシュエントリについて、私はどのノードがこのエントリが存在しないのか知りたいですか? コマンドラインインターフェイス(ignitevisorcmd.sh)がこの機能を提供していないことを確認します。1つのキャッシュエントリが存在するノードを知る方法

答えて

1

は、これはキーのプライマリノードを得ることができる方法である。

Affinity affinity = ignite.affinity("my-cache"); 
ClusterNode primary = affinity.mapKeyToNode(key); 

Affinity APIは、他の手動での親和性を計算できるようにする方法(パーティション番号、ノードのマッピングなど)の束を持っています。

+0

助けの答えに@Valentin!ありがとうございます。アフィニティのメソッド 'public Collection mapKeyToPrimaryAndBackups(Kキー);を見て、私が欲しいものですが、同じことをするコマンドラインがあるかどうか尋ねます。 – Tom

+0

いいえ、APIのみです。 CLIからこれを行う簡単なプログラムを作成することができます。 –

+0

ありがとう@Valentin。私は、ありがとう! – Tom

0

私は同様の質問をしました。あなたは、このリンクでそれを通過することができます:put操作を実行しながら、より高いレベルで

Putting cache entries to specific Ignite Server

  1. 、のIgniteは、あなたがそれを与える鍵を取ります。
  2. その後、ハッシュに適した親和性キーを形成します。
  3. この親和性キーのハッシュコードを生成し、(Igniteサーバーの数に応じて)モジュラス演算を実行して等しく分散させます。

エントリが存在するIgniteサーバーを見つける方法がないと思います。しかし、ユースケースが特定のグリッドで計算を実行する場合は、Ignite Compute GridでAffinity Callを使用するか、そのキーのEntryプロセッサを呼び出すことができます。

関連する問題