クラス: Mongo::ServerSelector::Base

継承:
オブジェクト
  • オブジェクト
すべて表示
定義:
build/ruby-Driver-v 2.19 /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 と同様に扱われます。これは最大の古さがないようにします。

  • ヘッジ ハッシュ | nil

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

次の値が発生します。

以来

  • 2.0.0



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

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

  validate!
end

インスタンス属性の詳細

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

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

次の値を返します。

  • (ハッシュ | nil )

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

以来

  • 2.0.0



76
77
78
# ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/server_selector/base.rb', 行76

デフォルト ヘッジ
  @hedge
end

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

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

次の値を返します。

  • (整数)

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

以来

  • 2.4.0



72
73
74
# ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/server_selector/base.rb', 行72

デフォルト max_staleness
  @max_staleness
end

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

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

次の値を返します。

  • ハッシュ

    options のオプション。

以来

  • 2.0.0



63
64
65
# ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/server_selector/base.rb', 行63

デフォルト options
  @options
end

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

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

次の値を返します。

  • 配列

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

以来

  • 2.0.0



66
67
68
# ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/server_selector/base.rb', 行66

デフォルト tags_sets
  @tag_sets
end

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

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

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

例:

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

preference == other

パラメーター:

  • その他 オブジェクト

    その他の設定。

次の値を返します。

  • truefalse

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

以来

  • 2.0.0



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 の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。

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

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

パラメーター:

次の値を返します。

  • 配列 < Server >

    候補サーバー。

以来

  • 2.0.0



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 ます

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

例:

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

selector.inspect

次の値を返します。

  • ( string )

    検査。

以来

  • 2.2.0



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で削除されます。

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

例:

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

selector.local_threshold

次の値を返します。

  • 浮動小数

    ローカルしきい値。

以来

  • 2.0.0



105
106
107
# ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/server_selector/base.rb', 行105

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

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

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

以来

  • 2.0.0



110
111
112
# ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/server_selector/base.rb', 行110

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

# select_server (クラスター、ping = nil、session = nil、write_aggregation: false) = Mongo::Server

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

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

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

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

パラメーター:

  • クラスター Mongo::Cluster

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

  • ping truefalse (デフォルトはnil

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

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

    mongos の固定を考慮する任意のセッション。 バージョン2.10.0で追加 。

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

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

次の値を返します。

  • Mongo::Server

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

次の値が発生します。

  • Error::NoServerAvalable

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

  • (Error::LintError)

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

以来

  • 2.0.0



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で削除されます。

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

例:

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

selector.server_selection_timeout

次の値を返します。

  • 浮動小数

    タイムアウト。

以来

  • 2.0.0



89
90
91
92
# ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/server_selector/base.rb', 行89

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

#適したサーバー

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

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

パラメーター:

次の値を返します。

  • 配列 < Server >

    適切なサーバー。

以来

  • 2.0.0



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 を返します。

パラメーター:

  • クラスター Mongo::Cluster

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

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

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

次の値を返します。

  • (Server | nil)

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

以来

  • 2.0.0



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