클래스: Mongo::ServerSelector::Base
- 상속:
-
객체
- 객체
- Mongo::ServerSelector::Base
- 다음에 정의됨:
- build/ruby-driver-v2.19/lib/mongo/server_selector/base.rb
개요
직접 알려진 하위 클래스
Nearest, Primary, PrimaryPreferred, Secondary, SecondaryPreferred
인스턴스 속성 요약 접기
-
#hedge ⇒ Hash | nil
읽기 전용
헤지 헤지된 읽기(hedged read)를 활성화할지 여부를 지정하는 문서입니다.
-
#max_staleness ⇒ Integer
읽기 전용
Max_staleness 세컨더리 가 겪을 수 있고 여전히 읽기에 적합할 수 있는 최대 복제 지연 (초)입니다.
-
옵션 #개 ⇒ 해시
읽기 전용
옵션 옵션입니다.
-
#tag_sets ⇒ 배열
읽기 전용
Tag_sets 서버를 선택하는 데 사용되는 태그 세트입니다.
인스턴스 메서드 요약 접기
-
#==(기타) ⇒ true, false
두 서버 선택기가 동일한지 확인합니다.
-
#후보(클러스터) ⇒ Array<Server>
비공개
클러스터에서 허용되는 유형의 서버를 반환합니다.
-
#initialize(options = nil) ⇒ Base
생성자
비공개
서버 선택기를 초기화합니다.
-
#검사 ⇒ string
서버 선택기를 검사합니다.
-
#local_threshold ⇒ Float
사용 중단
더 이상 사용되지 않습니다.
이제 서버 를 선택하면 클러스터 옵션에서 이 설정을 가져옵니다. 버전 3.0 에서 제거될 예정입니다.
- #local_threshold_with_cluster(클러스터) ⇒ 객체 비공개
-
#select_server(클러스터, 핑 = nil, session = nil, write_aggregation: false) ⇒ Mongo::Server
지정된 세션에 대한 mongos 고정을 고려하여 지정된 클러스터 에서 서버 를 선택합니다.
-
#server_selection_timeout ⇒ Float
사용 중단
더 이상 사용되지 않습니다.
이제 서버 를 선택하면 클러스터 옵션에서 이 설정을 가져옵니다. 버전 3.0 에서 제거될 예정입니다.
-
#적합한 _서버(클러스터) ⇒ Array<Server>
비공개
클러스터에서 서버 선택기를 충족하는 서버를 반환합니다.
-
#try_select_server(클러스터, write_aggregation: false) ⇒ 서버 | nil
비공개
적합한 서버를 찾으려고 시도하고, 사용 가능한 경우 서버를 반환하고, 적합한 서버가 없는 경우 nil을 반환합니다.
생성자 세부 정보
#initialize(options = nil) ⇒ Base
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
서버 선택기를 초기화합니다.
49 50 51 52 53 54 55 56 57 58 59 60 |
# 파일 ' 빌드/ Ruby-driver-v2.19/lib/mongo/server_selector/base.rb', 줄 49 def 초기화( = nil) = ? .dup : {} 만약 [:max_staleness] == -1 .삭제(:max_staleness) end @options = @tag_sets = [:tag_sets] || [] @max_staleness = [:max_staleness] @hedge = [:hedged] 유효성을 검사합니다! end |
인스턴스 속성 세부 정보
#헤지 ⇒ 해시 | nil (읽기 전용)
헤지된 읽기(hedged read)를 활성화할지 여부를 지정하는 문서를 반환합니다.
76 77 78 |
# 파일 ' 빌드/ Ruby-driver-v2.19/lib/mongo/server_selector/base.rb', 줄 76 def 헤지 @hedge end |
#max_staleness ⇒ 정수 (읽기 전용)
세컨더리 가 겪을 수 있지만 여전히 읽기에 적합할 수 있는 최대 복제 지연 (초)을 반환합니다.
72 73 74 |
# 파일 ' 빌드/ Ruby-driver-v2.19/lib/mongo/server_selector/base.rb', 줄 72 def max_staleness @max_staleness end |
#options ⇒ 해시 (읽기 전용)
반환값 options options.
63 64 65 |
# 파일 ' 빌드/ Ruby-driver-v2.19/lib/mongo/server_selector/base.rb', 줄 63 def @options end |
#tag_sets ⇒ 배열 (읽기 전용)
반환값 tag_sets 서버를 선택하는 데 사용되는 태그 세트입니다.
66 67 68 |
# 파일 ' 빌드/ Ruby-driver-v2.19/lib/mongo/server_selector/base.rb', 줄 66 def tag_sets @tag_sets end |
인스턴스 메서드 세부 정보
#==(기타) ⇒ true, false
두 서버 선택기가 동일한지 확인합니다.
136 137 138 139 |
# 파일 ' 빌드/ Ruby-driver-v2.19/lib/mongo/server_selector/base.rb', 줄 136 def ==(기타) 이름 == 기타.이름 && 헤지 == 기타.헤지 && max_staleness == 기타.max_staleness && tag_sets == 기타.tag_sets end |
#후보(클러스터) ⇒ 배열<MongoDB 서버>
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
클러스터에서 허용되는 유형의 서버를 반환합니다.
부실 유효성 검사, 부실 필터링 또는 지연 시간 필터링을 수행하지 않습니다.
379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 |
# 파일 ' 빌드/ Ruby-driver-v2.19/lib/mongo/server_selector/base.rb', 줄 379 def 후보자(cluster) 서버 = cluster.서버 서버.각 do |서버| validate_max_staleness_support!(서버) end 만약 cluster.싱글? 서버 elsif cluster.? 서버 elsif cluster.replica_set? select_in_replica_set(서버) other # 알 수 없는 클러스터 - 서버 없음 [] end end |
#검사 ⇒ string
서버 선택기를 검사합니다.
122 123 124 |
# 파일 ' 빌드/ Ruby-driver-v2.19/lib/mongo/server_selector/base.rb', 줄 122 def 검사 "#<#{self.class.name}:0x#{object_id} tag_sets=#{tag_sets.검사} max_staleness=#{max_staleness.검사} 헤지=#{헤지}>" end |
#local_threshold ⇒ Float
이제 서버 를 선택하면 클러스터 옵션에서 이 설정을 가져옵니다. 버전 3.0 에서 제거될 예정입니다.
가장 가까운 선택 항목에 대한 로컬 임계값 경계를 초 단위로 가져옵니다.
105 106 107 |
# 파일 ' 빌드/ Ruby-driver-v2.19/lib/mongo/server_selector/base.rb', 줄 105 def local_threshold @local_threshold ||= ([:local_threshold] || ServerSelector::LOCAL_THRESHOLD) end |
#local_threshold_with_cluster(클러스터) ⇒ 객체
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
110 111 112 |
# 파일 ' 빌드/ Ruby-driver-v2.19/lib/mongo/server_selector/base.rb', 줄 110 def local_threshold_with_cluster(cluster) [:local_threshold] || cluster.[:local_threshold] || LOCAL_THRESHOLD end |
#select_server(cluster, ping = nil, session = nil, write_aggregation: false) ⇒ Mongo::Server
지정된 세션에 대한 mongos 고정을 고려하여 지정된 클러스터 에서 서버 를 선택합니다.
세션이 제공되고 고정된 서버 가 있는 경우 이 서버 가 선택 대상으로 고려되는 유일한 서버 입니다. 서버 가 mongos 유형이면 즉시 반환됩니다. 그렇지 않으면 이 서버 에 대한 모니터링 검사가 시작되어 상태를 업데이트 하고, 서버 선택 제한 시간 내에 서버 가 mongos 가 되면 반환됩니다.
세션이 지정되지 않았거나 세션에 고정된 서버 가 없으면 이 서버 선택기 객체 의 기본 설정과 일치하는 지정된 클러스터 의 모든 서버 중에서 일반 서버 선택 프로세스 가 수행됩니다. 서버 선택 제한 시간까지 적절한 서버 를 찾을 때까지 클러스터 의 서버에 대한 모니터링 검사가 시작됩니다.
서버 선택 제한 시간 내에 적절한 서버를 찾지 못하면 이 메서드는 Error::NoServerAvailable을 발생시킵니다.
177 178 179 180 181 182 183 |
# 파일 ' 빌드/ Ruby-driver-v2.19/lib/mongo/server_selector/base.rb', 줄 177 def select_server(cluster, ping = nil, Session = nil, write_aggregation: 거짓) select_server_impl(cluster, ping, Session, write_aggregation).탭 do |서버| 만약 Lint.활성화? && !서버.풀.준비됐나요? 올리다 오류::LintError, '서버 선택기가 준비되지 않은 풀이 있는 서버 를 반환합니다.' end end end |
#server_selection_timeout ⇒ Float
이제 서버 를 선택하면 클러스터 옵션에서 이 설정을 가져옵니다. 버전 3.0 에서 제거될 예정입니다.
서버 선택에 대한 제한 시간을 가져옵니다.
89 90 91 92 |
# 파일 ' 빌드/ Ruby-driver-v2.19/lib/mongo/server_selector/base.rb', 줄 89 def server_selection_timeout @server_selection_timeout ||= ([:server_selection_timeout] || ServerSelector::SERVER_SELECTION_TIMEOUT) end |
#적합한 _서버 (클러스터) ⇒ Array<Server>
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
클러스터에서 서버 선택기를 충족하는 서버를 반환합니다.
403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 |
# 파일 ' 빌드/ Ruby-driver-v2.19/lib/mongo/server_selector/base.rb', 줄 403 def 적합 서버(cluster) 만약 cluster.싱글? 후보자(cluster) elsif cluster.? local_threshold = local_threshold_with_cluster(cluster) 서버 = 후보자(cluster) near_servers(서버, local_threshold) elsif cluster.replica_set? validate_max_staleness_value!(cluster) 후보자(cluster) other # 알 수 없는 클러스터 - 서버 없음 [] end end |
#try_select_server(cluster, write_aggregation: false) ⇒ MongoDB Server | nil
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
적합한 서버를 찾으려고 시도하고, 사용 가능한 경우 서버를 반환하고, 적합한 서버가 없는 경우 nil을 반환합니다.
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 |
# 파일 ' 빌드/ Ruby-driver-v2.19/lib/mongo/server_selector/base.rb', 줄 328 def try_select_server(cluster, write_aggregation: 거짓) 서버 = 만약 write_aggregation && cluster.replica_set? # 1. 클러스터 의 모든 서버가 세컨더리 쓰기를 지원 하는지 확인합니다. is_write_supported = cluster.서버.reduce(true) do |res, 서버| res && 서버.기능.merge_out_on_secondary_enabled? end 만약 is_write_supported # 2. 모든 서버가 세컨더리 쓰기를 지원 경우 읽기 설정 (read preference) 을 준수합니다. 적합 서버(cluster) other # 3. 그렇지 않으면 복제본 세트에 대해 프라이머리로 대체됩니다. [cluster.서버.감지(&: 프라이머리?)] end other 적합 서버(cluster) end # 이 서버 목록은 특정 방식으로 정렬할 수 있습니다. # 셀렉터로 지정(예: 세컨더리 기본 설정의 경우 첫 번째 # 서버는 세컨더리, 두 번째 서버는 프라이머리일 수 있음) # 그리고 여기서 첫 번째 서버 를 가져와야 합니다. 서버 = 서버.first 만약 서버 만약 Lint.활성화? # 여기서는 서버 가 평균 RTT가 nil일 수 있습니다. # ATT는 업데이트될 수 있는 설명에서 제공되기 때문입니다. # 서버 선택이 실행되는 동안 백그라운드 스레드에 의해 실행됩니다. # 현재 린트 모드 는 공개 기능 이 아닙니다. # 변경 사항 (https://jira.mongodb.org/browse/RUBY-1576) the # ATT가 nil이 아니려면 요구 사항을 제거해야 합니다. 만약 서버.평균 왕복 시간.nil? 올리다 오류::LintError, "MongoDB Server #{서버.주소} 의 평균 rtt는 nil" end end end 서버 end |