모듈: Mongo::Cluster::Topology

확장자:
토폴로지
포함 항목:
토폴로지
다음에 정의됨:
lib/ Mongo/ 클러스터/ 토폴로지.rb,
lib/ Mongo/ 클러스터/
토폴로지.rb,
lib/ Mongo/ 클러스터/ 토폴로지/base.rb,
lib/ Mongo/ 클러스터/ 토폴로지/single.rb,
lib/ Mongo/ 클러스터/ 토폴로지/ 샤딩된.rb,
lib/ Mongo/ 클러스터/ 토폴로지/unknown.rb, lib/ Mongo/ 클러스터/ 토폴로지/load_balancing.rb,
lib/ Mongo/ 클러스터/ 토폴로지/no_replica_set_options.rb,
lib/ Mongo/ 클러스터/ 토폴로지/ replica_set_no_primary.rb,
lib/ Mongo/ 클러스터/ 토폴로지/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, : 샤딩된, :load_balancing 중 하나입니다. :connect를 :load_balancing으로 설정하다 하면 드라이버 로드 밸런서 에 연결되어 있지 않더라도 서버 로드 밸런서 인 것처럼 작동합니다.

  • :load_balancing (true | false)

    로드 밸런서에 연결할지 여부입니다.

  • :replica_set (기호)

    연결할 복제본 세트의 이름입니다. 이 복제본 세트에 없는 서버는 무시됩니다.

반환합니다:

이후:

  • 2.0.0



89
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
130
131
132
133
# 파일 'lib/ Mongo/ 클러스터/ 토폴로지.rb', 줄 89

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