모듈: 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 토폴로지 에는 복제본 세트 이름이 포함됩니다. 따라서 토폴로지 객체 는 여러 클러스터 객체와 함께 사용할 수 없습니다.
동시에 토폴로지 객체는 생성자가 제안하는 내용에도 불구하고 클러스터의 특정 서버 에 대해 아무것도 알지 못합니다. 즉, 특히 토폴로지 변경 이벤트의 경우 애플리케이션이 복제본 세트 내에서 서버 변경 사항을 추적하려는 경우 애플리케이션이 자체적으로 클러스터 참조를 유지해야 합니다.
네임스페이스 아래에 정의됨
모듈: NoReplicaSetOptions 클래스: Base, LoadBalanced, ReplicaSetNoPrimary, ReplicaSetWithPrimary, Sharded, Single, Unknown
상수 요약 접기
- OPTIONS =
이 상수는 비공개 API의 일부입니다. 이 상수는 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
서버 선택을 위한 다양한 토폴로지.
{ direct: Single, load_balancing: 로드 밸런싱, replica_set: ReplicaSetNoPrimary, 샤딩된: 샤드, }.동결
인스턴스 메서드 요약 접기
-
#initial(cluster, monitoring, options) ⇒ ReplicaSet, ...
비공개
제공된 옵션에 대한 초기 클러스터 토폴로지를 가져옵니다.
인스턴스 메서드 세부 정보
#initial(클러스터, 모니터링, options) ⇒ ReplicaSet, ...
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
제공된 옵션에 대한 초기 클러스터 토폴로지를 가져옵니다.
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=#{[: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 |