クラス: Mongo::ServerSelector::Base
- 継承:
-
オブジェクト
- オブジェクト
- Mongo::ServerSelector::Base
- 定義:
- lib/mongo/server_selector/base.rb
Overview
インスタンス属性の概要を折りたたむ
-
#hedge ⇒ Hash | nil
readOnly
ヘッジ ヘッジされた読み取りを有効にするかどうかを指定するドキュメント。
-
#max_staleness ⇒ Integer
readOnly
Max_staleness セカンダリが発生しても読み取りの対象となる最大レプリケーションラグ(秒単位)。
-
#options ⇒ Hash
readOnly
オプション のオプション。
-
#tag_sets ⇒ Array
readOnly
tags_sets サーバーを選択するために使用されるタグセット。
インスタンス メソッドの概要を折りたたむ
-
== (その他) ===(その他) ======================================
2 つのサーバー セレクターの等価性を確認します。
-
#candidates(クラスター, deprioritized = []) ⇒ 配列<Server>
private
クラスターから許容タイプのサーバーを返します。
-
#initialize(options = nil) ⇒ Base
コンストラクター
private
サーバー セレクターを初期化します。
-
詳しくは、 を 検査し ますstring
サーバー セレクターを調べます。
-
# local_threshold =浮動小数点数
非推奨
非推奨。
この設定は、サーバーが選択されているときにクラスター オプションから取得されるようになりました。 バージョン3.0で削除されます。
- #local_threshold_with_cluster (クラスター) = オブジェクト private
-
# select_server(クラスター, ping =nil, セッション = nil, write_aggregation: false, 非優先: [], タイムアウト: nil) = Mongo::Server
指定されたセッションの mongos 固定 を考慮して、指定されたクラスターからサーバーを選択します。
-
# server_Selection_timeout =浮動小数点数
非推奨
非推奨。
この設定は、サーバーが選択されているときにクラスター オプションから取得されるようになりました。 バージョン3.0で削除されます。
-
#suitable_servers(クラスター, deprioritized = []) ⇒ 配列<Server>
private
クラスターからサーバー セレクターを満たすサーバーを返します。
-
#try_select_server(クラスター、write_aggregation: false、depriorized: [])============================== nil
private
適切なサーバーを検索しようとすると、 は、サーバーが使用可能な場合はサーバーを返し、適切なサーバーがない場合は nil を返します。
コンストラクターの詳細
#initialize(options = nil) ⇒ Base
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
サーバー セレクターを初期化します。
45 46 47 48 49 50 51 52 53 54 |
ファイル 'lib/mongo/server_selector/base.rb' 行 45 デフォルト 初期化( = nil) = ? .dup : {} .削除(:max_staleness) 場合 [:max_staleness] == -1 @options = @tag_sets = [: tags_sets] || [] @max_staleness = [:max_staleness] @hedge = [:hedge] validate! end |
インスタンス属性の詳細
ハッシュ| nil (読み取り専用)
ヘッジされた読み取りを有効にするかどうかを指定するドキュメントを返します。
70 71 72 |
ファイル 'lib/mongo/server_selector/base.rb' 行 70 デフォルト ヘッジ @hedge end |
# max_staleness =整数(読み取り専用)
max_staleness セカンダリが発生しても読み取りの資格がある最大レプリケーションラグ(秒単位)を返します。
66 67 68 |
ファイル 'lib/mongo/server_selector/base.rb' 行 66 デフォルト max_staleness @max_staleness end |
オプション=ハッシュ(読み取り専用)
オプション オプションを返します。
57 58 59 |
ファイル 'lib/mongo/server_selector/base.rb' 行 57 デフォルト @options end |
# tags_セット =配列(読み取り専用)
tags_sets サーバーを選択するために使用されるタグセットを返します。
60 61 62 |
ファイル 'lib/mongo/server_selector/base.rb' 行 60 デフォルト tags_sets @tag_sets end |
インスタンス メソッドの詳細
# == (その他) === (その他) ==================================================================================
2 つのサーバー セレクターの等価性を確認します。
130 131 132 133 |
ファイル 'lib/mongo/server_selector/base.rb' 行 130 デフォルト ==(その他) name == その他.name & & ヘッジ == その他.ヘッジ & & max_staleness == その他.max_staleness & & tags_sets == その他.tags_sets end |
#候補数(クラスター、優先順位付け = []) = 配列<Server>==========================================
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
クラスターから許容タイプのサーバーを返します。
古い検証、古いフィルタリング、またはレイテンシフィルタリングを実行しません。
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 ます
サーバー セレクターを調べます。
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で削除されます。
最も近い選択のローカルしきい値の境界を秒単位で取得します。
99 100 101 |
ファイル 'lib/mongo/server_selector/base.rb' 行 99 デフォルト local_threshold @local_threshold ||= [:local_threshold] || ServerSelector::Local_threshold end |
#local_threshold_with_cluster (クラスター) =オブジェクト
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
104 105 106 |
ファイル 'lib/mongo/server_selector/base.rb' 行 104 デフォルト local_threshold_with_cluster(クラスター) [:local_threshold] || クラスター.[:local_threshold] || Local_threshold end |
# select_server(クラスター, ping =nil, セッション = nil, write_aggregation: false, 非優先: [], タイムアウト: nil) = Mongo::Server
指定されたセッションの mongos 固定 を考慮して、指定されたクラスターからサーバーを選択します。
セッションが指定され、サーバーが固定されている場合、このサーバーが選択対象として考慮される唯一のサーバーです。 サーバーが mongos 型の場合は、すぐに返されます。このサーバーのステータスを更新するために開始され、サーバー選択タイムアウト内にサーバーが mongos になった場合は、それが返されます。
セッションが指定されない場合、またはセッションに固定されたサーバーがない場合、このサーバー セレクター オブジェクトの優先順位に一致する指定されたクラスター内のすべてのサーバー間で通常のサーバー選択プロセスが実行されます。 モニタリング チェックは、適切なサーバーが見つかるまで、サーバー選択タイムアウトまでクラスター内のサーバーに対して開始されます。
サーバー選択タイムアウト内に適切なサーバーが見つからない場合、このメソッドは Error::NoServerAvalable を発生させます。
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で削除されます。
サーバー選択のタイムアウトを取得します。
83 84 85 86 |
ファイル 'lib/mongo/server_selector/base.rb' 行 83 デフォルト server_Selection_timeout @server_Selection_timeout ||= [:server_Selection_timeout] || ServerSelector::SERVER_SELECTion_TIMEOUT end |
#suitable_servers(クラスター, deprioritized = []) ⇒ 配列<サーバー>
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
クラスターからサーバー セレクターを満たすサーバーを返します。
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 を返します。
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 |