load_balancing
- ランダム (デフォルト)
- Nearest ホスト名
- ホスト名のレーベンシュタイン距離
- ホスト名の最長共通プレフィックス
- ホスト名の最長共通接尾辞
- In order
- First or random
- ラウンドロビン
ランダム (デフォルトで使用)
Nearest Hostname
ホスト名のレーベンシュタイン距離
nearest_hostname と同様ですが、レーベンシュタイン距離に基づいてホスト名を比較します。たとえば:
ホスト名の最長共通プレフィックス
nearest_hostname と同様ですが、ローカルの ホスト名 と最長の共通プレフィックスを持つ ホスト名 のレプリカが優先されます (共通プレフィックスが長いほど優先度が高くなります) 。文字ごとの差分を位置ごとに数える nearest_hostname とは異なり、この戦略では、数値セグメントの長さが異なる ホスト名 があっても誤判定しません。たとえば、ローカルの ホスト名 が sfe301 の場合:
sfe301 と最長の共通プレフィックス (sfe、長さ 3) を持つため、sfe10101 が優先されます。
共通プレフィックスの長さが同じレプリカは、ランダムに選択されます。特に、どのレプリカもローカルの hostname と共通のプレフィックスを持たない場合 (共通プレフィックス長がすべて 0 の場合) 、この戦略は random とまったく同じように動作します。
ホスト名の最長共通接尾辞
hostname_longest_common_prefix と同様ですが、プレフィックスではなく、最長の共通 接尾辞 を比較します。これは、データセンターの識別子が ホスト名 の接尾辞としてエンコードされている場合に有用です。たとえば、ローカル ホスト名 が et46gtghn.qc.localdomain の場合:
ab999.qc.localdomain は et46gtghn.qc.localdomain と最長の共通接尾辞 (.qc.localdomain、長さ 15) を持つため、優先されます。
共通接尾辞の長さが同じレプリカは、ランダムに選択されます。特に、ローカルのホスト名と接尾辞を共有するレプリカが 1 つもない場合 (共通接尾辞の長さがすべて 0 の場合) 、この戦略は random とまったく同じように動作します。
設定順
First またはランダム
first_or_random アルゴリズムは、in_order アルゴリズムの問題を解決します。in_order では、1 つのレプリカがダウンすると、次のレプリカに負荷が集中して 2 倍になり、残りのレプリカは通常どおりのトラフィック量を処理します。first_or_random アルゴリズムを使用すると、負荷は引き続き利用可能なレプリカ間で均等に分散されます。
設定 load_balancing_first_offset を使用すると、どのレプリカを最初のレプリカとするかを明示的に指定できます。これにより、レプリカ間でクエリ workload を再配分する際の制御性が高まります。
ラウンドロビン
round_robin ポリシーのクエリのみです) 。