# リクエストのロード・バランシングとルーティング

このトピックでは、Oracle Big Data DiscoveryにおけるStudioノードからDgraphノードへのリクエストのロード・バランシングおよびルーティングについて説明します。

## リクエストのロード・バランシング

デプロイメント戦略に応じて、外部クライアントに対して、Big Data Discoveryクラスタのオンプレミス・デプロイメントとの通信エントリ・ポイントを、クラスタのStudioホスティング・ノードまたはStudioインスタンスの前に構成された外部ロード・バランサにすることができます。

Big Data Discoveryクラスタでは、リクエストのロード・バランシングにおいて次の2つのレベルに依存します。

1. Studioの複数のインスタンスをホストしているノード間でのリクエストのロード・バランシング。デプロイメントで使用するように選択した場合、このタスクは外部ロード・バランサで実行する必要があります(外部ロード・バランサはBig Data Discoveryパッケージに含まれていません)。

   外部ロード・バランサが使用されている場合、すべてのリクエストを受信して、StudioアプリケーションをホストするBig Data Discoveryクラスタ・デプロイメントにおけるすべてのノードに分散します。リクエストは、Studioノードから受信すると、BDDによって適切なDgraphノードにルーティングされます。

   外部ロード・バランサが使用されていない場合、Studioノードに外部リクエストを送信できます。これらは、Dgraphをホストしているノード間でロード・バランシングされます。

2. Dgraphノード間でのリクエストのロード・バランシング。このタスクは、BDDクラスタで自動的に処理されます。Big Data Discoveryソフトウェアは、Dgraphをホストしているノード上のStudioおよびデータ処理コンポーネントからリクエストを受け入れ、クラスタ内の他のDgraphホスティング・ノード間でこれらのリクエストの内部ロード・バランシングを行います。

## リクエストのルーティング

Big Data Discoveryクラスタは、Dgraphインスタンスをホストしているクラスタ・ノードのサブセットにリクエストを自動的に送信します。

次の記述では、DgraphノードへのリクエストのルーティングにおけるBDDクラスタの動作について説明します。

- リクエストはStudioまたはデータ処理コンポーネントからBDDクラスタ内のDgraph Gatewayに送信でき、BDDクラスタはリクエストを適切なDgraphノードにルーティングします。

  たとえば、リクエストが更新リクエスト(データ・ロード・リクエストや構成更新など)の場合、クラスタのリーダーDgraphノードにルーティングされます。リクエストが更新でない(問合せ処理)リクエストを表す場合、リーダーDgraphノードまたは任意のフォロワDgraphノードにルーティングされます。BDDクラスタにDgraphをホストしているノードが1つのみある場合、このノードはリーダーとして機能します(フォロワはありません)。

- 更新でないリクエストは、処理用に、Dgraphノード間でラウンドロビン・アルゴリズムを使用してロード・バランシングされます。
- Big Data Discoveryクラスタは、各StudioリクエストのヘッダーにあるセッションIDに応じて、StudioからDgraphに届くすべてのリクエストに対してセッション・アフィニティを利用します。同じセッションIDのリクエストは、常にクラスタ内の同じDgraphノードにルーティングされます。これにより、効率的にDgraphキャッシュを利用することで、問合せ処理パフォーマンスが向上し、キャッシュ・エンティティ(Studioでビューと呼ばれる)のパフォーマンスが向上します。