MongoDB 드라이버는 서버 선택 알고리즘 을 사용하여 사용할 복제본 세트 멤버를 선택하거나, 여러 mongos
인스턴스에 연결된 경우 사용할 mongos
인스턴스 를 선택합니다.
서버 선택은 작업마다 한 번씩 발생합니다.
이 페이지의 정보는 다음 환경에서 호스팅되는 배포에 적용됩니다.
참고
분산 트랜잭션 에 포함된 읽기 작업은 primary
로 읽기 설정을 사용해야 합니다. 특정 트랜잭션의 모든 작업은 동일한 노드로 라우팅되어야 합니다.
서버 선택은 각 작업마다 한 번씩 발생하며, 읽기에 대한 멤버 자격을 결정하기 위해 읽기 설정 (read preference) 설정과 localThresholdMS
설정에 의해 관리됩니다. 읽기 설정 (read preference)은 각 작업마다 다시 평가됩니다.
| |
---|
| |
| 드라이버는 자격이 있는 세컨더리 멤버 목록을 구성합니다. 읽기 설정 (read preference)에 지정된 maxStalenessSeconds 및 태그 집합으로 멤버의 자격을 더욱 제한할 수 있습니다. 자격 있는 멤버 목록이 비어 있지 않다면, 드라이버는 가장 "가까운" (즉, 평균 네트워크 왕복 시간이 가장 낮은) 자격 있는 멤버를 결정하고, 이 "가장 가까운" 서버의 평균 왕복 시간과 localThresholdMS 를 더하여 지연 시간 창을 계산합니다. 드라이버는 이 지연 시간 창을 사용하여 대기 시간 창 내에 있는 멤버들로 자격 있는 멤버 목록을 줄입니다. 이 지연 시간 창 내에 있는 자격 있는 멤버 목록에서 드라이버는 무작위로 자격 있는 멤버를 선택합니다.
|
| 드라이버는 자격 있는 멤버들(프라이머리와 세컨더리)의 목록을 구성합니다. 읽기 설정 (read preference)에 지정된 maxStalenessSeconds 및 태그 집합으로 멤버의 자격을 더욱 제한할 수 있습니다. 자격 있는 멤버 목록이 비어 있지 않다면, 드라이버는 가장 "가까운" (즉, 평균 네트워크 왕복 시간이 가장 낮은) 자격 있는 멤버를 결정하고, 이 "가장 가까운" 서버의 평균 왕복 시간과 localThresholdMS 를 더하여 지연 시간 창을 계산합니다. 드라이버는 이 지연 시간 창을 사용하여 대기 시간 창 내에 있는 멤버들로 자격 있는 멤버 목록을 줄입니다. 이 지연 시간 창 내에 있는 자격 있는 멤버 목록에서 드라이버는 무작위로 자격 있는 멤버를 선택합니다.
|
| 프라이머리를 사용 가능한 경우, 드라이버는 프라이머리를 선택합니다. 프라이머리를 사용할 수 없는 경우 읽기 설정 (read preference) secondary 에 대한 서버 선택 프로세스를 따라 자격 있는 세컨더리 멤버를 선택합니다.
|
| 읽기 설정 (read preference) secondary 에 대한 서버 선택 프로세스를 따라, 자격 있는 세컨더리 멤버 목록이 비어 있지 않으면, 드라이버는 자격 있는 세컨더리 멤버를 선택합니다. 그렇지 않고 목록이 비어 있다면, 드라이버는 주를 선택합니다.
|
연결 시드 목록에 mongos
인스턴스가 두 개 이상 있는 경우 드라이버는 가장 "가까운" mongos
(즉, 평균 네트워크 왕복 시간이 가장 짧은 멤버)를 결정하고, 이 "가장 가까운" mongos
인스턴스의 평균 왕복 시간과 localThresholdMS
를 더하여 지연 시간 창을 계산합니다. 드라이버는 지연 시간 창에 속하는 mongos
인스턴스들 사이에서 무작위로 부하를 분산합니다.
복제본 세트 샤드가 있는 샤딩된 클러스터의 경우 mongos
는 샤드에서 읽을 때 읽기 설정 (read preference)을 적용합니다. 서버 선택은 읽기 설정 (read preference) 및 replication.localPingThresholdMs
설정에 따라 결정됩니다. 읽기 설정 (read preference)은 각 작업마다 다시 평가됩니다.
| |
---|
| |
| |
| |
| 프라이머리을 사용할 수 있는 경우 mongos 는 프라이머리을 선택합니다.
- # . 프라이머리 를 사용할 수 없는 경우 서버
- 선택은 읽기 설정 (read preference)
secondary 에 대한 프로세스 를 따릅니다.
|
| 읽기 설정 secondary 에 대한 서버 선택 프로세스에 따라 적합한 세컨더리 멤버 목록이 비어 있지 않은 경우 mongos 는 적격 세컨더리 멤버를 선택합니다. 적격 세컨더리 멤버 목록이 비어 있으면 mongos 에서 프라이머리 선택합니다.
|