모듈: Mongo::Cluster::Topology

확장자:
토폴로지
포함 항목:
토폴로지
다음에 정의됨:
build/ruby-driver-v2.19/lib/mongo/cluster/topology.rb,
build/ruby-driver-v2.19/lib/mongo/cluster/topology.rb,
build/ruby-driver-v2.19/lib/mongo/cluster/topology/base.rb,
build/ruby-driver-v2.19/lib/mongo/cluster/topology/single.rb,
빌드/루비 드라이버-v2.19/lib/mongo/cluster/topology/sharded.rb,
빌드/루비 드라이버-v2.19/lib/mongo/cluster/topology/unknown.rb,
빌드/루비 드라이버-v2.19/lib/mongo/cluster/topology/load_balancing.rb,
빌드/루비 드라이버-v2.19/lib/mongo/cluster/topology/no_replica_set_options.rb,
빌드/루비 드라이버-v2.19/lib/mongo/cluster/topology/replica_set_no_primary.rb,
build/ Ruby-driver-v2.19/lib/mongo/cluster/topology/replica_set_with_primary.rb

개요

서버 가져오기 동작을 정의합니다.

토폴로지는 해당 클러스터와 연결됩니다. 예를 예시 ReplicaSet 토폴로지 에는 복제본 세트 이름이 포함됩니다. 따라서 토폴로지 객체 는 여러 클러스터 객체와 함께 사용할 수 없습니다.

동시에 토폴로지 객체는 생성자가 제안하는 내용에도 불구하고 클러스터의 특정 서버 에 대해 아무것도 알지 못합니다. 즉, 특히 토폴로지 변경 이벤트의 경우 애플리케이션이 복제본 세트 내에서 서버 변경 사항을 추적하려는 경우 애플리케이션이 자체적으로 클러스터 참조를 유지해야 합니다.

이후:

  • 2.0.0

네임스페이스 아래에 정의됨

모듈: NoReplicaSetOptions 클래스: Base, LoadBalanced, ReplicaSetNoPrimary, ReplicaSetWithPrimary, Sharded, Single, Unknown

상수 요약 접기

OPTIONS =

이 상수는 비공개 API의 일부입니다. 이 상수는 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

서버 선택을 위한 다양한 토폴로지.

이후:

  • 2.0.0

{
  direct: Single,
  load_balancing: 로드 밸런싱,
  replica_set: ReplicaSetNoPrimary,
  샤딩된: 샤드,
}.동결

인스턴스 메서드 요약 접기

인스턴스 메서드 세부 정보

#initial(클러스터, 모니터링, options) ⇒ ReplicaSet, ...

이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

제공된 옵션에 대한 초기 클러스터 토폴로지를 가져옵니다.

예시:

초기 클러스터 토폴로지를 가져옵니다.

Topology.initial(topology: :replica_set)

매개변수:

  • cluster (클러스터)

    클러스터.

  • 모니터링 (모니터링)

    모니터링.

  • 옵션 (해시)

    클러스터 옵션.

옵션 해시(options):

  • :direct_connection (true | false)

    토폴로지 검색을 우회하여 지정된 시드에 직접 연결할지 여부입니다. 정확히 하나의 시드를 제공해야 합니다.

  • :connect (기호)

    더 이상 사용되지 않음 - 이 옵션 대신 :direct_connection 옵션을 사용합니다. 사용할 연결 메서드입니다. 이렇게 하면 클러스터가 자동 검색 대신 지정된 방식으로 작동합니다. :direct, :replica_set, :sharded, :load_balancing 중 하나입니다. :connect를 :load_balancing으로 설정하면 드라이버는 로드 밸런서에 연결되어 있지 않더라도 서버가 로드 밸런서인 것처럼 작동합니다.

  • :load_balancing (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
# 파일 'build/ruby-driver-v2.19/lib/mongo/cluster/topology.rb', 줄 90

def 이니셜(cluster, 모니터링, 옵션)
  연결 = 옵션[:connect]&.to_sym
  cls = 만약 옵션[:direct_connection]
    만약 연결 && 연결 != :direct
      올리다 ArgumentError, "토폴로지 옵션 충돌: direct_connection=true 및 connect=#{connect}"
    end
    만약 옵션[:load_balancing]
      올리다 ArgumentError, "충돌하는 토폴로지 옵션: direct_connection=true 및 load_balancing=true"
    end
    Single
  elsif 옵션[:direct_connection] == 거짓 && 연결 && 연결 == :direct
    올리다 ArgumentError, "토폴로지 옵션 충돌: direct_connection=false 및 connect=#{connect}"
  elsif 연결 && 연결 != :load_balancing
    만약 옵션[:load_balancing]
      올리다 ArgumentError, "토폴로지 옵션 충돌: connect=#{options[:connect].검사} 및 load_balancing=true"
    end
    옵션.가져오기(옵션[:connect].to_sym)
  elsif 옵션.키?(:replica_set) || 옵션.키?(:replica_set_name)
    만약 옵션[:load_balancing]
      올리다 ArgumentError, "충돌하는 토폴로지 옵션: replica_set/replica_set_name 및 load_balancing=true"
    end
    ReplicaSetNoPrimary
  elsif 옵션[:load_balancing] || 연결 == :load_balancing
    로드 밸런싱
  other
    알 수 없음
  end
  # 여기서 옵션은 클라이언트/클러스터/서버 옵션입니다.
  # 특히 복제본 세트 이름 키는 다음과 다릅니다.
  # 토폴로지.
  # replica_set_name이 제공되면(드라이버에서 내부적으로 제공할 수 있음),
  # 해당 키를 사용합니다.
  # 그렇지 않으면 (예 클라이언트에서 전달된 옵션),
  # replica_set을 replica_set_name으로 이동합니다.
  만약 (cls <= ReplicaSetNoPrimary || cls == Single) && !옵션[:replica_set_name]
    옵션 = 옵션.dup
    옵션[:replica_set_name] = 옵션.삭제(:replica_set)
  end
  cls.신규(옵션, 모니터링, cluster)
end