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)は、分散可能な拡張により、既存の呼び出し可能の実装を引き続きサポートしますが、同時に実行する準備ができています。

public interface DistributedCallable<K, V, T> extends Callable<T> {

   /**
    * Invoked by execution environment after DistributedCallable
    * has been migrated for execution to a specific node.
    *
    * @param cache
    *           cache whose keys are used as input data for this
    *           DistributedCallable task
    * @param inputKeys
    *           keys used as input for this DistributedCallable task
    */
   public void setEnvironment(Cache<K, V> cache, Set<K> inputKeys);

}
Copy to Clipboard Toggle word wrap
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2026 Red Hat
トップに戻る