10.4. 分散実行
分散エグゼキューターが Red Hat Data Grid 9.1 で非推奨となりました。Cluster Executor または Distributed Stream のいずれかを使用して、以前の操作を実行する必要があります。
Red Hat Data Grid は、標準の JDK ExecutorService インターフェースを介して分散実行を提供します。ローカル JVM で実行されるのではなく、実行用に送信されたタスクは、Red Hat Data Grid ノードのクラスター全体で実行されます。DistributedExecutorService はすべて特定の 1 つのキャッシュにバインドされます。送信されたタスクは、送信されたタスクが DistributedCallable のインスタンスである場合にのみ、その特定のキャッシュからキーと値のペアにアクセスできます。また、ユーザーが他の ExecutorService と同様に一般的な Runnable または Callable を送信することを妨げるものは何もありません。しかし、DistributedExecutorService の名前が示すように、送信された Callable または Runnable を Red Hat Data Grid クラスターの別の JVM に移行し、タスクインカーカーに結果を返す可能性があります。Callable、Runnable、DistributedCallable 提出はすべて他のノードへの移行が生じる可能性があるため、この送信は 336 または Externalizable のいずれかである必要があります。また、呼び出し不可能な値も外部化可能である必要があります。返された値がシリアライズ不可能な場合は、Not336Exception がスローされます。
Red Hat Data Grid の分散タスクエグゼキューターは、Red Hat Data Grid キャッシュノードのデータを実行タスクの入力として使用します。他の分散フレームワークの多くは活用されず、ユーザーは既知の場所から分散タスクの入力を指定する必要があります。さらに、Red Hat Data Grid 分散実行フレームワークのユーザーは、中間および最終的な結果にストアを設定する必要がないため、複雑さとメンテナンスの別のレイヤーが取り除かれます。
この分散実行フレームワークは、Red Hat Data Grid の Data Grid のファクト入力データをすでに負荷分散しています(DIST モードの場合)。入力データはすでに分散されている実行タスクも自動的に分散されるため、ユーザーは明示的に作業タスクを特定の Red Hat Data Grid ノードに割り当てる必要はありません。ただし、このフレームワークでは、ユーザーは分散実行タスクの入力として任意のキャッシュキーのサブセットを指定できます。
10.4.1. DistributedCallable API リンクのコピーリンクがクリップボードにコピーされました!
タスクを実行するために Red Hat Data Grid キャッシュデータにアクセスする必要がある場合は、DistributedCallable インターフェースでタスクをカプセル化することを推奨します。DistributedCallable は、java.util.concurrent パッケージから既存の Callable パッケージのサブタイプで、DistributedCallable はリモート JVM で実行し、Red Hat Data Grid キャッシュから入力を受け取ることができます。タスクのメインアルゴリズムは基本的に変更できず、入力ソースのみが変更されます。DistributedCallable が Red Hat Data Grid キャッシュから入力を取得している間に、既存の呼び出し可能実装は Java オブジェクト/プリミティブ形式で入力を取得する可能性があります。したがって、呼び出し可能なインターフェースがすでに実装されているユーザーは、DistributedCallable を拡張し、Red Hat Data Grid 実行環境からのキーをタスクの入力として使用するだけです。DistributedCallable(Implentation of DistributedCallable)は、分散可能な拡張により、既存の呼び出し可能の実装を引き続きサポートしますが、同時に実行する準備ができています。