4

私は次のように定義されたヘーゼルキャストマップを持っています。100万エントリー。

IMap<Integer, Employee> employeeMap = hazelcastInstance.getMap("employeeMap");

employeeObj.isCool()指定された従業員が「かっこいい」かどうかを返します。

からすべてのクールな従業員を見つけるメカニズムが必要employeeMapです。私は、次のいずれかを行うことができることを理解しています。

オプション 1 :employeeMap.keySet(predicate);クラスター内の各メンバーで並列に実行され、fork/join メカニズムを使用して呼び出し元によって結合される呼び出し。

質問 1 : ただし、これにより、述語を各エントリに適用する前に、各ノードのエントリ セットが一度にメモリに読み込まれると思います。確認してください。

オプション 2 : employeeMap.executeOnEntries(entryProcessor);entryprocessor のprocess()メソッドは次のようになります。

@Override
public Object process(Entry<Integer, Employee> entry) 
{
    return entry.getValue().isBad() ? true : null;
}

質問 2EntryProcessor :がパーティション スレッドで実行されることは理解しています。process()メソッドが呼び出される 前に、ローカル ノード内のすべてのローカル エントリを一度にロード (デシリアライズ) (および一時的に保存) するかどうかを知りたいです。

質問 3 : 利用可能な最良のオプション (時間と空間の複雑さの観点から) とその根拠を知りたいです。

4

0 に答える 0