分散クエリーのシャード・ルーティング

DSE Searchノードで、分散クエリーのシャード選択アルゴリズムは、一連の基準を使用して最も処理能力の高いノードにサブクエリーをルーティングします。

dse.yaml

dse.yamlファイルの場所は、インストールのタイプによって異なります。
パッケージ・インストール /etc/dse/dse.yaml
tarボール・インストール installation_location/resources/dse/conf/dse.yaml
DSE Searchノードで、分散クエリーのシャード選択アルゴリズムは、一連の基準を使用して最も処理能力の高いノードにサブクエリーをルーティングします。最良のノードは一連のノード比較により決定されます。ノードは以下の基準に従って順番に選択されます。
  1. ノードがアクティブかどうか。

    アクティブ・ノードが優先されます。

  2. 要求されたコアのインデックスが作成されているか、またはインデックスの作成が失敗しているか。

    ノードがどちらの状態でもない場合は最良のノードが選択されます。

  3. ノードの健全性ランク。値は0と1の間で指数関数的に増加します。このスコアはノードの健全性を示すため、ここまでの基準が同じ場合はスコアが高いノードから選択されます。このノードの健全性ランク値は、JMXメトリクスとしてShardRouterに公開されています。
    ノードの健全性ランクは、稼働時間と削除されたミューテーションを比較したものです。
    node health = uptime / (1 + drop_rate)
    ここで、
    • drop_rate:構成可能な長さのスライディング・ウィンドウにおいて、1分間にミューテーションが削除された割合。

      履歴時間枠を構成するには、dse.yamldropped_mutation_window_minutesを設定します。

      ミューテーション削除率が高い場合、ノードが過負荷であることを示しています。たとえば、データベースの挿入時や更新時などです。

    • uptime:0と1の間のスコア。より直近のダウンタイムに大きい重み付けをします。
  4. そのノードがクエリーを発行しているノードに近いかどうか。

    ノードの選択では、エンドポイント・スニッチの近接度が使用されます。より近いノードが優先されます。

以上の基準を使用した後のノードの選択はランダムです。

シャード・ルーターを確認するには、shards.info=trueを検索クエリーに追加します。