서버 선택 알고리즘
MongoDB 드라이버는 서버 선택 알고리즘 을 사용하여 사용할 복제본 세트 멤버를 선택하거나, 여러 mongos
인스턴스에 연결된 경우 사용할 mongos
인스턴스 를 선택합니다.
서버 선택은 작업마다 한 번씩 발생합니다.
이 페이지의 정보는 다음 환경에서 호스팅되는 배포에 적용됩니다.
MongoDB Atlas: 클라우드에서의 MongoDB 배포를 위한 완전 관리형 서비스
MongoDB Enterprise: MongoDB의 구독 기반 자체 관리 버전
MongoDB Community: MongoDB의 소스 사용 가능 무료 자체 관리 버전
복제본 세트에 대한 읽기 설정 (read preference)
서버 선택은 각 작업마다 한 번씩 발생하며, 읽기에 대한 멤버 자격을 결정하기 위해 읽기 설정 (read preference) 설정과 localThresholdMS
설정에 의해 관리됩니다. 읽기 설정 (read preference)은 각 작업마다 다시 평가됩니다.
읽기 설정 모드 | 선택 프로세스 |
---|---|
primary (기본값) |
|
| |
| |
| |
|
샤딩된 클러스터에 대한 읽기 설정 (read preference)
부하 분산
연결 시드 목록에 mongos
인스턴스가 두 개 이상 있는 경우 드라이버는 가장 "가까운" mongos
(즉, 평균 네트워크 왕복 시간이 가장 짧은 멤버)를 결정하고, 이 "가장 가까운" mongos
인스턴스의 평균 왕복 시간과 localThresholdMS
를 더하여 지연 시간 창을 계산합니다. 드라이버는 지연 시간 창에 속하는 mongos
인스턴스들 사이에서 무작위로 부하를 분산합니다.
읽기 설정 및 샤드
복제본 세트 샤드가 있는 샤딩된 클러스터의 경우 mongos
는 샤드에서 읽을 때 읽기 설정 (read preference)을 적용합니다. 서버 선택은 읽기 설정 (read preference) 및 replication.localPingThresholdMs
설정에 따라 결정됩니다. 읽기 설정 (read preference)은 각 작업마다 다시 평가됩니다.
헤지된 읽기
중요
MongoDB 8.0 부터 헤지된 읽기(hedged read)는 더 이상 사용되지 않습니다. 읽기 설정 nearest
을 지정하는 쿼리는 더 이상 기본적으로 헤지된 읽기(hedged read)를 사용하지 않습니다. 헤지된 읽기(hedged read)를 명시적으로 지정하면 MongoDB는 헤지된 읽기(hedged read)를 수행하고 경고를 기록합니다.
는 가 아닌 읽기 설정 (read preference) mongos
모드에 대한 헤지된 읽기( hedged readprimary
)를 지원합니다. 즉, primary
가 아닌 읽기 설정을 사용하는 경우 mongos
은(는) 읽기 작업을 헤지하기 위해 다른 멤버에게 추가 읽기를 보낼 수 있습니다(사용 가능한 경우). 읽기 작업을 헤지하기 위해 전송된 추가 읽기는maxTimeMSForHedgedReads
의 maxTimeMS
값을 사용합니다
다음 작업에 대해 헤지된 읽기(hedged read)가 지원됩니다:
헤지된 읽기(hedged read)를 사용하려면 다음을 수행합니다.
mongos
가 헤지된 읽기(hedged read) 지원을 활성화해야 합니다(기본값).readHedgingMode
매개변수를 참조하세요.primary
가 아닌 읽기 설정에서 헤지된 읽기(hedged read)를 활성화해야 합니다.
읽기 설정 모드 | 선택 프로세스 |
---|---|
primary (기본값) |
|
| |
| |
| |
[1] | (1, 2) 기본 임계값은 15밀리초입니다. |