モジュール: Mongo::Cluster::Triggers

次による拡張機能。
トポロジー
次のドキュメントに含まれます。
トポロジー
定義:
lib/mongo/cluster/トポロジー.rb
、lib/mongo/cluster/トポロジー.rb、lib/mongo/cluster/トポロジー/base.rb、lib/mongo/cluster/トポロジー/

single.rb、lib/mongo/cluster/トポロジー/sharded.rb、lib/mongo/cluster/トポロジー/unknown.rb、lib/mongo/cluster/トポロジー/load_





balance.rb、lib/mongo/cluster/トポロジー/no_replica_set_options.rb、lib/mongo/cluster/トポロジー/レプリカ_セット_no_primary.rb、lib/mongo/cluster/トポロジー/replica_set_with_primary.rb

Overview

サーバーを取得するための動作を定義します。

トポロジーはクラスターに関連付けられています。たとえば、ReplicaSet トポロジーにはレプリカセット名が含まれます。 したがって、トポロジー オブジェクトは複数のクラスター オブジェクトでは使用できません。

同時に、トポロジー オブジェクトは、コンストラクターが提案するであっても、クラスター内の特定のサーバーについては何も認識していません。 つまり、特にレプリカセット内でサーバーの変更を追跡する場合は、トポロジー変更イベントによりアプリケーションが独自にクラスター参照を維持する必要があります。

以来

  • 2.0.0

名前空間で定義済み

Modules: NoReplicaSetOptions クラス: ベースLoadBalancedReplicaSetNoPrimaryReplicaSetWithPrimaryシャーディング単一不明

定数の概要の削減

OPTIONS =

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

サーバー選択のためのさまざまなトポロジー。

以来

  • 2.0.0

{
  直接: Single,
  load_ Triggers: LoadBalanced,
  レプリカ_セット: ReplicaSetNoPrimary,
  シャーディングされた場合: シャード,
}.freeze

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

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

#Initial (クラスター、モニタリング、オプション) =ReplicaSet 、...

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

指定されたオプションの初期クラスター トポロジーを取得します。

例:

初期クラスター トポロジーを取得します。

Topology.initial(topology: :replica_set)

パラメーター:

  • クラスター クラスター

    クラスター。

  • モニタリング 監視

    の監視。

  • options ハッシュ

    クラスターのオプション。

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

  • :direct_ connection true | false

    トポロジー検出をバイパスして、指定されたシードに直接接続するかどうか。 シードは 1 つだけ提供する必要があります。

  • :connect 記号

    非推奨 - このオプションの代わりに :direct_ connection オプションを使用してください。 使用する接続方法。 これにより、クラスターは自動検出ではなく、指定された方法で動作するように強制されます。 : direct、 :replica_set、 :sharded、 :load_ balance のいずれか 1 つ。 :connect が :load_ Triggers に設定されている場合、ロード バランサーに接続されていない場合でも、ドライバーはサーバーがロード バランサーであるかのように動作します。

  • :load_ ユーザー分散 true | false

    ロード バランサーへの接続を要求するかどうか。

  • :replica_set 記号

    接続するレプリカセットの名前。 このレプリカセットに含まれないサーバーは無視されます。

次の値を返します。

以来

  • 2.0.0



90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
# ファイル 'lib/mongo/cluster/トポロジー.rb' は、90 行

デフォルト 初期(クラスター, モニタリング, options)
  接続 = options[:connect]&.to_sym
  cls = 場合 options[:direct_ connection]
    場合 接続 & & 接続 != :direct
      発生 ArgumentError, " 競合するトポロジー オプション: direct_ connection=true と connect= #{ connect }
    end
    場合 options[:load_ ユーザー分散]
      発生 ArgumentError, "競合するトポロジー オプション: direct_ connection=true と load_ balance=true "
    end
    Single
  elsif options[:direct_ connection] == false & & 接続 & & 接続 == :direct
    発生 ArgumentError, "競合するトポロジー オプション: direct_ connection=false と connect= #{ connect } "
  elsif 接続 & & 接続 != :load_ ユーザー分散
    場合 options[:load_ ユーザー分散]
      発生 ArgumentError, " 競合するトポロジー オプション: connect= #{ オプション [ :connect ] } と load_ balanced=true を 検査し ます 。
    end
    オプション.fetch(options[:connect].to_sym)
  elsif options.key?(:replica_set) || options.key?(:replica_set_name)
    場合 options[:load_ ユーザー分散]
      発生 ArgumentError, "競合するトポロジー オプション: レプリカ_セット/replica_set_name と load_standard=true "
    end
    ReplicaSetNoPrimary
  elsif options[:load_ ユーザー分散] || 接続 == :load_ ユーザー分散
    LoadBalanced
  else
    不明
  end
  # ここでのオプションは、クライアント/クラスター/サーバー オプションです。
  #特にレプリカセット名のキーは
  # topology.
  # replica_set_name が指定されている場合(ドライバーによって内部的に指定される場合など)、
  # そのキーを使用します。
  番号それ以外の場合(例: クライアントから渡されたオプション)、
  # レプリカセットを replica_set_name に移動
  場合 (cls <= ReplicaSetNoPrimary || cls == Single) & & !options[:replica_set_name]
    options = options.dup
    options[:replica_set_name] = options.削除(:replica_set)
  end
  cls.新着情報(options, モニタリング, クラスター)
end