クラス: Mongo::ServerSelector::Base

継承:
オブジェクト
  • オブジェクト
すべて表示
定義:
lib/mongo/server_selector/base.rb

Overview

以来

  • 2.0.0

既知のサブクラスを直接確認

最も近いプライマリ、 プライマリ優先セカンダリセカンダリ優先

インスタンス属性の概要を折りたたむ

インスタンス メソッドの概要を折りたたむ

コンストラクターの詳細

#initialize(options = nil) ⇒ Base

このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。

サーバー セレクターを初期化します。

例:

セレクターを初期化します。

Mongo::ServerSelector::Secondary.new(:tag_sets => [{'dc' => 'nyc'}])

オプションなしで 設定を初期化します。

Mongo::ServerSelector::Secondary.new

パラメーター:

  • options ハッシュ (デフォルトはnil

    サーバー設定オプション。

オプション ハッシュ( options ):

  • :local_threshold 整数

    最も近い選択のローカルしきい値(秒単位)。

  • :max_staleness 整数

    セカンダリで発生しても読み取りの対象となる最大レプリケーションラグ(秒単位)。 - 1の値は nil と同様に扱われます。これは最大の古さがないようにします。

  • :hedge ハッシュ | nil

    サーバーで ヘッジされた読み取り を有効にするかどうかを指定するハッシュ。 ヘッジされた読み取りは、デフォルトでは有効になっていません。 このオプションを指定する場合、形式は { enabled: true } である必要があり、 : 有効キーの値はブール値です。

次の値が発生します。

以来

  • 2.0.0



45
46
47
48
49
50
51
52
53
54
ファイル 'lib/mongo/server_selector/base.rb' 行 45

デフォルト 初期化(options = nil)
  options = options ? options.dup : {}
  options.削除(:max_staleness) 場合 options[:max_staleness] == -1
  @options = options
  @tag_sets = options[: tags_sets] || []
  @max_staleness = options[:max_staleness]
  @hedge = options[:hedge]

  validate!
end

インスタンス属性の詳細

ハッシュ| nil (読み取り専用)

ヘッジされた読み取りを有効にするかどうかを指定するドキュメントを返します。

次の値を返します。

  • (ハッシュ | nil )

    hedge ヘッジされた読み取りを有効にするかどうかを指定するドキュメント。

以来

  • 2.0.0



70
71
72
ファイル 'lib/mongo/server_selector/base.rb' 行 70

デフォルト ヘッジ
  @hedge
end

# max_staleness =整数(読み取り専用)

max_staleness セカンダリが発生しても読み取りの資格がある最大レプリケーションラグ(秒単位)を返します。

次の値を返します。

  • (整数)

    max_staleness セカンダリが発生しても読み取りの対象となる最大レプリケーションラグ(秒単位)。

以来

  • 2.4.0



66
67
68
ファイル 'lib/mongo/server_selector/base.rb' 行 66

デフォルト max_staleness
  @max_staleness
end

オプション=ハッシュ(読み取り専用)

オプション オプションを返します。

次の値を返します。

  • ハッシュ

    options のオプション。

以来

  • 2.0.0



57
58
59
ファイル 'lib/mongo/server_selector/base.rb' 行 57

デフォルト options
  @options
end

# tags_セット =配列(読み取り専用)

tags_sets サーバーを選択するために使用されるタグセットを返します。

次の値を返します。

  • 配列

    tags_sets サーバーを選択するために使用されるタグセット。

以来

  • 2.0.0



60
61
62
ファイル 'lib/mongo/server_selector/base.rb' 行 60

デフォルト tags_sets
  @tag_sets
end

インスタンス メソッドの詳細

# == (その他) === (その他) ==================================================================================

2 つのサーバー セレクターの等価性を確認します。

例:

サーバー セレクターの等価性を確認します。

preference == other

パラメーター:

  • その他 オブジェクト

    その他の設定。

次の値を返します。

  • truefalse

    オブジェクトが等しいかどうか。

以来

  • 2.0.0



130
131
132
133
ファイル 'lib/mongo/server_selector/base.rb' 行 130

デフォルト ==(その他)
  name == その他.name & & ヘッジ == その他.ヘッジ & &
    max_staleness == その他.max_staleness & & tags_sets == その他.tags_sets
end

#候補数(クラスター、優先順位付け = []) = 配列<Server>==========================================

このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。

クラスターから許容タイプのサーバーを返します。

古い検証、古いフィルタリング、またはレイテンシフィルタリングを実行しません。

パラメーター:

  • クラスター クラスター

    クラスター。

  • 非優先 配列 (デフォルトは[]

    他のサーバーが使用できない場合にのみ選択する必要があるサーバーのリスト。

次の値を返します。

  • 配列 < Server >

    候補サーバー。

以来

  • 2.0.0



386
387
388
389
390
391
392
393
394
395
396
397
398
ファイル 'lib/mongo/server_selector/base.rb' 行 386

デフォルト 候補者(クラスター, 非優先 = [])
  サーバー = クラスター.サーバー.拒否 { |s| 非優先.include?(s) }
  場合 クラスター.単一か
    サーバー
  elsif クラスター.シャーディングされたかどうか
    サーバー
  elsif クラスター.replica_set?
    選択_in_replica_set(サーバー)
  else
    # 不明なクラスター - サーバーなし
    []
  end
end

詳しくは、 を 検査しstring ます

サーバー セレクターを調べます。

例:

サーバー セレクターを調べます。

selector.inspect

次の値を返します。

  • ( string )

    検査。

以来

  • 2.2.0



116
117
118
ファイル 'lib/mongo/server_selector/base.rb' 行 116

デフォルト 検査する
  " # は、{10 } 0#{ object_id } } tags_sets = # { { tags_sets . analyze } } max_staleness = # { { max_staleness . explain } ================================================================ } > "
end

# local_threshold =浮動小数点数

非推奨。

この設定は、サーバーが選択されているときにクラスター オプションから取得されるようになりました。 バージョン3.0で削除されます。

最も近い選択のローカルしきい値の境界を秒単位で取得します。

例:

ローカルしきい値を取得します。

selector.local_threshold

次の値を返します。

  • 浮動小数

    ローカルしきい値。

以来

  • 2.0.0



99
100
101
ファイル 'lib/mongo/server_selector/base.rb' 行 99

デフォルト local_threshold
  @local_threshold ||= options[:local_threshold] || ServerSelector::Local_threshold
end

#local_threshold_with_cluster (クラスター) =オブジェクト

このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。

以来

  • 2.0.0



104
105
106
ファイル 'lib/mongo/server_selector/base.rb' 行 104

デフォルト local_threshold_with_cluster(クラスター)
  options[:local_threshold] || クラスター.options[:local_threshold] || Local_threshold
end

# select_server(クラスター, ping =nil, セッション = nil, write_aggregation: false, 非優先: [], タイムアウト: nil) = Mongo::Server

指定されたセッションの mongos 固定 を考慮して、指定されたクラスターからサーバーを選択します。

セッションが指定され、サーバーが固定されている場合、このサーバーが選択対象として考慮される唯一のサーバーです。 サーバーが mongos 型の場合は、すぐに返されます。このサーバーのステータスを更新するために開始され、サーバー選択タイムアウト内にサーバーが mongos になった場合は、それが返されます。

セッションが指定されない場合、またはセッションに固定されたサーバーがない場合、このサーバー セレクター オブジェクトの優先順位に一致する指定されたクラスター内のすべてのサーバー間で通常のサーバー選択プロセスが実行されます。 モニタリング チェックは、適切なサーバーが見つかるまで、サーバー選択タイムアウトまでクラスター内のサーバーに対して開始されます。

サーバー選択タイムアウト内に適切なサーバーが見つからない場合、このメソッドは Error::NoServerAvalable を発生させます。

パラメーター:

  • クラスター Mongo::Cluster

    適格なサーバーを選択するクラスター。

  • ping truefalse (デフォルトはnil

    選択する前にサーバーをpingするかどうか。 非推奨となり無視されます。

  • セッション (Session | nil) (デフォルトはnil

    mongos の固定を考慮する任意のセッション。

  • write_aggregation true | false (デフォルトはfalse

    セカンダリに集計をサポートするサーバーが必要かどうか(例: $merge/$out と)。

  • 非優先 配列 (デフォルトは[]

    他のサーバーが使用できない場合にのみ選択する必要があるサーバーのリスト。

  • :timeout (Float | nil)

    操作のタイムアウト(秒)(存在する場合)。

次の値を返します。

  • Mongo::Server

    サーバー設定 に一致するサーバー。

次の値が発生します。

  • Error::NoServerAvalable

    サーバー選択タイムアウトで指定された優先順位/固定要件に一致するサーバーが見つかりませんでした。

  • (Error::LintError)

    予期しない条件が検出され、リンティング モードが有効になりました。

以来

  • 2.0.0



176
177
178
179
180
181
182
183
184
185
186
187
188
189
ファイル 'lib/mongo/server_selector/base.rb' 行 176

デフォルト [select_server](
  クラスター,
  ping = nil,
  セッション = nil,
  write_aggregation: false,
  非優先: [],
  timeout: nil
)
  select_server_impl(クラスター, ping, セッション, write_aggregation, 非優先, タイムアウト).タップ 行う |サーバー|
    場合 Lint.有効か & & !サーバー.プール.準備はできていますか?
      発生 エラー::LintError, '準備ができていないプールを持つサーバーを返すサーバー セレクター'
    end
  end
end

# server_Selection_timeout =浮動小数点数

非推奨。

この設定は、サーバーが選択されているときにクラスター オプションから取得されるようになりました。 バージョン3.0で削除されます。

サーバー選択のタイムアウトを取得します。

例:

サーバー選択タイムアウトを秒単位で取得します。

selector.server_selection_timeout

次の値を返します。

  • 浮動小数

    タイムアウト。

以来

  • 2.0.0



83
84
85
86
ファイル 'lib/mongo/server_selector/base.rb' 行 83

デフォルト server_Selection_timeout
  @server_Selection_timeout ||=
    options[:server_Selection_timeout] || ServerSelector::SERVER_SELECTion_TIMEOUT
end

#suitable_servers(クラスター, deprioritized = []) ⇒ 配列<サーバー>

このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。

クラスターからサーバー セレクターを満たすサーバーを返します。

パラメーター:

  • クラスター クラスター

    クラスター。

  • 非優先 配列 (デフォルトは[]

    他のサーバーが使用できない場合にのみ選択する必要があるサーバーのリスト。

次の値を返します。

  • 配列 < Server >

    適切なサーバー。

以来

  • 2.0.0



409
410
411
412
413
ファイル 'lib/mongo/server_selector/base.rb' 行 409

デフォルト pretty_servers(クラスター, 非優先 = [])
  結果 = pretty_servers_impl(クラスター, 非優先)
  結果 = pretty_servers_impl(クラスター, []) 場合 結果.空の場合 & & 非優先.any?
  結果
end

#try_select_server(クラスター、write_aggregation: false、depriorized: [])============================== nil

このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。

適切なサーバーを検索しようとすると、 は、サーバーが使用可能な場合はサーバーを返し、適切なサーバーがない場合は nil を返します。

パラメーター:

  • クラスター Mongo::Cluster

    適格なサーバーを選択するクラスター。

  • write_aggregation true | false (デフォルトはfalse

    セカンダリに集計をサポートするサーバーが必要かどうか(例: $merge/$out と)。

  • 非優先 配列 (デフォルトは[]

    他のサーバーが使用できない場合にのみ選択する必要があるサーバーのリスト。 これは、 コマンドを再試行するときに同じサーバーを2 回続けて選択しないようにするために使用されます。

次の値を返します。

  • (Server | nil)

    適切なサーバー(存在する場合)。

以来

  • 2.0.0



337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
ファイル 'lib/mongo/server_selector/base.rb' 行 337

デフォルト try_select_server(クラスター, write_aggregation: false, 非優先: [])
  サーバー = 場合 write_aggregation & & クラスター.replica_set?
              # 1 。 クラスター内のすべてのサーバーがセカンダリ書込み (write) をサポートしているかどうかを確認します。
              is_write_supported = クラスター.サーバー.reduce(true) 行う |レス, サーバー|
                レス & & サーバー.機能.merge_out_on_secondary_enabled
              end

              場合 is_write_supported
                # 2 。 すべてのサーバーがセカンダリ書込みをサポートしている場合は、 読み込み設定(read preference) を尊重します。
                pretty_servers(クラスター, 非優先)
              else
                # 3 。 そうでない場合、レプリカセットのプライマリにフォールバックします。
                [ クラスター.サーバー.検出(&: プライマリ?) ]
              end
            else
              pretty_servers(クラスター, 非優先)
            end

  #このサーバーのリストは特定の方法で順序付けられます
  セレクターによる#(例:セカンダリ優先の場合は最初の
  # サーバーはセカンダリ、2 番目のサーバーはプライマリである場合があります)
  # と の順序に従って最初のサーバーを取得する必要があります。
  サーバー = pretty_server(サーバー)

  場合 サーバー & & Lint.有効か & & サーバー.Average_round_drop_time.nil?
    #ここでサーバーの平均 RTT は nil にすることができます
    # は、ART が更新される可能性のある説明から取得されているためです。
    サーバー選択が実行されている間にバックグラウンド スレッドによって が実行されます。
    #現在、リンティング モードはパブリック機能ではありませんが、
    変更回数( https://JIRA.mongodb.org/browse/Ruby-{0 1576 ) この
    RTPP が nil 以外になるための # 要件は削除する必要があります。
    発生 エラー::LintError, "サーバー#{サーバー.アドレス}の平均 rtt は nil です"
  end

  サーバー
end