クラス: Mongo::ServerSelector::Base
- 継承:
-
オブジェクト
- オブジェクト
- Mongo::ServerSelector::Base
- 定義:
- build/ruby-Driver-v 2.19 /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 つのサーバー セレクターの等価性を確認します。
-
候補 数(クラスター)= Array[Server]<Server>
private
クラスターから許容タイプのサーバーを返します。
-
#initialize(options = nil) ⇒ Base
コンストラクター
private
サーバー セレクターを初期化します。
-
詳しくは、 を 検査し ますstring
サーバー セレクターを調べます。
-
# local_threshold =浮動小数点数
非推奨
非推奨。
この設定は、サーバーが選択されているときにクラスター オプションから取得されるようになりました。 バージョン3.0で削除されます。
- #local_threshold_with_cluster (クラスター) = オブジェクト private
-
# select_server (クラスター、ping = nil、session = nil、write_aggregation: false) = Mongo::Server
指定されたセッションの mongos 固定 を考慮して、指定されたクラスターからサーバーを選択します。
-
# server_Selection_timeout =浮動小数点数
非推奨
非推奨。
この設定は、サーバーが選択されているときにクラスター オプションから取得されるようになりました。 バージョン3.0で削除されます。
-
# 適した サーバー<Server>
private
クラスターからサーバー セレクターを満たすサーバーを返します。
-
#try_select_server (クラスター、write_aggregation: false)==================================================================================== nil
private
適切なサーバーを検索しようとすると、 は、使用可能な場合はサーバーを返し、適切なサーバーがない場合は nil を返します。
コンストラクターの詳細
#initialize(options = nil) ⇒ Base
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
サーバー セレクターを初期化します。
49 50 51 52 53 54 55 56 57 58 59 60 |
# ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/server_selector/base.rb', 行49 デフォルト 初期化( = nil) = ? .dup : {} 場合 [:max_staleness] == -1 .削除(:max_staleness) end @options = @tag_sets = [: tags_sets] || [] @max_staleness = [:max_staleness] @hedge = [:hedge] validate! end |
インスタンス属性の詳細
ハッシュ| nil (読み取り専用)
ヘッジされた読み取りを有効にするかどうかを指定するドキュメントを返します。
76 77 78 |
# ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/server_selector/base.rb', 行76 デフォルト ヘッジ @hedge end |
# max_staleness =整数(読み取り専用)
max_staleness セカンダリが発生しても読み取りの資格がある最大レプリケーションラグ(秒単位)を返します。
72 73 74 |
# ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/server_selector/base.rb', 行72 デフォルト max_staleness @max_staleness end |
オプション=ハッシュ(読み取り専用)
オプション オプションを返します。
63 64 65 |
# ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/server_selector/base.rb', 行63 デフォルト @options end |
# tags_セット =配列(読み取り専用)
tags_sets サーバーを選択するために使用されるタグセットを返します。
66 67 68 |
# ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/server_selector/base.rb', 行66 デフォルト tags_sets @tag_sets end |
インスタンス メソッドの詳細
# == (その他) === (その他) ==================================================================================
2 つのサーバー セレクターの等価性を確認します。
136 137 138 139 |
# ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/server_selector/base.rb', 行136 デフォルト ==(その他) name == その他.name & & ヘッジ == その他.ヘッジ & & max_staleness == その他.max_staleness & & tags_sets == その他.tags_sets end |
候補# (クラスター) =配列[サーバー] >
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
クラスターから許容タイプのサーバーを返します。
古い検証、古いフィルタリング、またはレイテンシフィルタリングを実行しません。
379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 |
# ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/server_selector/base.rb', 行379 デフォルト 候補者(クラスター) サーバー = クラスター.サーバー サーバー.各 行う |サーバー| validate_max_staleness_support。(サーバー) end 場合 クラスター.単一か サーバー elsif クラスター.シャーディングされたかどうか サーバー elsif クラスター.replica_set? 選択_in_replica_set(サーバー) else # 不明なクラスター - サーバーなし [] end end |
詳しくは、 を 検査しstring ます
サーバー セレクターを調べます。
122 123 124 |
# ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/server_selector/base.rb', 行122 デフォルト 検査する " # は、{10 } 0#{ object_id } } tags_sets = # { { tags_sets . analyze } } max_staleness = # { { max_staleness . explain } ================================================================ } > " end |
# local_threshold =浮動小数点数
この設定は、サーバーが選択されているときにクラスター オプションから取得されるようになりました。 バージョン3.0で削除されます。
最も近い選択のローカルしきい値の境界を秒単位で取得します。
105 106 107 |
# ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/server_selector/base.rb', 行105 デフォルト local_threshold @local_threshold ||= ([:local_threshold] || ServerSelector::Local_threshold) end |
#local_threshold_with_cluster (クラスター) =オブジェクト
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
110 111 112 |
# ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/server_selector/base.rb', 行110 デフォルト local_threshold_with_cluster(クラスター) [:local_threshold] || クラスター.[:local_threshold] || Local_threshold end |
# select_server (クラスター、ping = nil、session = nil、write_aggregation: false) = Mongo::Server
指定されたセッションの mongos 固定 を考慮して、指定されたクラスターからサーバーを選択します。
セッションが指定され、サーバーが固定されている場合、このサーバーが選択対象として考慮される唯一のサーバーです。 サーバーが mongos 型の場合は、すぐに返されます。このサーバーのステータスを更新するために開始され、サーバー選択タイムアウト内にサーバーが mongos になった場合は、それが返されます。
セッションが指定されない場合、またはセッションに固定されたサーバーがない場合、このサーバー セレクター オブジェクトの優先順位に一致する指定されたクラスター内のすべてのサーバー間で通常のサーバー選択プロセスが実行されます。 モニタリング チェックは、適切なサーバーが見つかるまで、サーバー選択タイムアウトまでクラスター内のサーバーに対して開始されます。
サーバー選択タイムアウト内に適切なサーバーが見つからない場合、このメソッドは Error::NoServerAvalable を発生させます。
177 178 179 180 181 182 183 |
# ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/server_selector/base.rb', 行177 デフォルト [select_server](クラスター, ping = nil, セッション = nil, write_aggregation: false) select_server_impl(クラスター, ping, セッション, write_aggregation).タップ 行う |サーバー| 場合 Lint.有効か & & !サーバー.プール.準備はできていますか? 発生 エラー::LintError, '準備ができていないプールを持つサーバーを返すサーバー セレクター' end end end |
# server_Selection_timeout =浮動小数点数
この設定は、サーバーが選択されているときにクラスター オプションから取得されるようになりました。 バージョン3.0で削除されます。
サーバー選択のタイムアウトを取得します。
89 90 91 92 |
# ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/server_selector/base.rb', 行89 デフォルト server_Selection_timeout @server_Selection_timeout ||= ([:server_Selection_timeout] || ServerSelector::SERVER_SELECTion_TIMEOUT) end |
#適したサーバー
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
クラスターからサーバー セレクターを満たすサーバーを返します。
403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 |
# ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/server_selector/base.rb', 行403 デフォルト pretty_servers(クラスター) 場合 クラスター.単一か 候補者(クラスター) elsif クラスター.シャーディングされたかどうか local_threshold = local_threshold_with_cluster(クラスター) サーバー = 候補者(クラスター) near_servers(サーバー, local_threshold) elsif クラスター.replica_set? validate_max_staleness_value!(クラスター) 候補者(クラスター) else # 不明なクラスター - サーバーなし [] end end |
#try_select_server (クラスター、 write_aggregation : false)==================================================================================== nil
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
適切なサーバーを検索しようとすると、 は、使用可能な場合はサーバーを返し、適切なサーバーがない場合は nil を返します。
328 329 330 331 332 333 334 335 336 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 |
# ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/server_selector/base.rb', 行328 デフォルト 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 番目のサーバーはプライマリである場合があります) # と の順序に従って最初のサーバーを取得する必要があります。 サーバー = サーバー.最初に 場合 サーバー 場合 Lint.有効か #ここでサーバーの平均 RTT は nil にすることができます # は、ART が更新される可能性のある説明から取得されているためです。 サーバー選択が実行されている間にバックグラウンド スレッドによって が実行されます。 #現在、リンティング モードはパブリック機能ではありませんが、 変更回数( https://JIRA.mongodb.org/browse/Ruby-{0 1576 ) この RTPP が nil 以外になるための # 要件は削除する必要があります。 場合 サーバー.Average_round_drop_time.nil? 発生 エラー::LintError, "サーバー#{サーバー.アドレス}の平均 rtt は nil です" end end end サーバー end |