AI 에이전트의 경우: 문서 인덱스는 https://www.mongodb.com/ko-kr/docs/llms.txt에서 사용할 수 있으며, 모든 페이지의 마크다운 버전은 어떤 URL 경로에 .md를 추가하여 사용할 수 있습니다.
Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
MongoDB Branding Shape
Click here >
Docs Menu

MongoDB 서버 선택 사용자 지정

모든 MongoDB 드라이버는 읽거나 쓰기 (write) 서버 선택할 때 정의된 알고리즘 따릅니다. MongoClientSettings 객체 의 ClusterSettings 속성 사용하면 이 알고리즘 사용자 지정하여 애플리케이션 에 가장 적합한 서버 선택할 수 있습니다.

중요

서버 선택 알고리즘 사용자 지정하면 읽기 또는 쓰기 (write) 성능이 저하되는 등 의도하지 않은 결과가 발생할 수 있습니다.

코틀린 동기 (Kotlin Sync) 운전자 읽기 작업을 실행할 때 MongoDB deployment 선택하기 위해 다음 단계를 순서대로 수행합니다.

  1. 운전자 사용할 수 없거나 문제가 있다고 판단하는 서버를 제외하고 요청된 작업에 적합한 알려진 서버 목록에서 모든 서버를 선택합니다.

    1. 읽기의 경우 활성 읽기 설정 (read preference) 일치하는 모든 서버를 선택합니다.

    2. 쓰기의 경우 쓰기 가능한 모든 서버를 선택합니다.

  2. 사용자가 제공하는 경우 사용자 정의 서버 선택기 함수를 호출하고 이전 단계의 목록을 전달합니다.

  3. 함수에서 반환된 서버 목록에 localThreshold 연결 설정을 적용합니다.

  4. 이전 기준과 일치하는 서버 목록에서 최대 2개의 무작위 서버를 선택한 다음, 처리되지 않은 동시 작업이 더 적은 서버 선택합니다.

코틀린 동기 (Kotlin Sync) 운전자 쓰기 (write) 작업을 실행할 때 활성 읽기 설정 (read preference) 일치하는 서버뿐만 아니라 알려진 서버 목록에서 모든 쓰기 가능한 서버를 선택하는 것으로 시작합니다. 나머지 단계는 앞의 목록과 동일합니다.

MongoDB 서버 선택 알고리즘에 대해 자세히 학습하려면 MongoDB Server 매뉴얼의 서버 선택 알고리즘 을 참조하세요.

ServerSelector 인터페이스를 구현하는 클래스를 만들어 자체 사용자 지정 서버 선택 로직을 구현 수 있습니다. 다음 예시 type 값이 ServerType.REPLICA_SET_SECONDARY인 서버를 선택하는 간단한 사용자 지정 서버 선택 클래스를 보여 줍니다.

class CustomServerSelector : ServerSelector {
override fun select(cluster: ClusterDescription): List<ServerDescription> {
return cluster.serverDescriptions.filter { it.type == ServerType.REPLICA_SET_SECONDARY }
}
}

applyToClusterSettings() 메서드를 사용하여 이 클래스의 인스턴스 MongoClientSettings에 전달합니다. 다음 예시 이전 예시 의 사용자 지정 서버 선택기 클래스의 인스턴스 를 사용하여 MongoClient 를 만드는 방법을 보여 줍니다.

val settings = MongoClientSettings.builder()
.applyConnectionString(ConnectionString("<connection URI>"))
.applyToClusterSettings { builder ->
builder.serverSelector(CustomServerSelector())
}
.build()
val mongoClient = MongoClient.create(settings)

MongoClient 객체 또는 연결 URI에서 다음과 같은 서버 선택 설정을 지정할 수 있습니다.

설정
설명

localThreshold

서버 자격에 대한 지연 시간 창 . 서버의 왕복
시간이 가장 빠른 서버의 왕복 시간에 이 값을 더한 것보다 오래 걸리는 경우 해당 서버
선택할 수 없습니다.ClusterSettings 연결 URI 외에도 객체 에 이 설정을 지정할 수 있습니다.

데이터 유형: Integer
기본값: 15 밀리초
연결 URI 예시: localThresholdMS=0

readPreference

클라이언트의 기본값 읽기 설정입니다. 읽기 설정 (read preference) 옵션에 대한 자세한 내용은 MongoDB Server 매뉴얼의 읽기 설정을 참조하세요.MongoClientSettings 연결 URI 외에도 객체 에 이 설정을 지정할 수 있습니다.

데이터 유형: ReadPreference
기본값: ReadPreference.primary()
연결 URI 예시:

readPreference=primaryPreferred
&maxStalenessSeconds=90
&readPreferenceTags=dc:ny,rack:1

serverSelectionTimeout

운전자 시간이 초과되기 전에 서버 선택하려고 시도하는 시간입니다.ClusterSettings 연결 URI 외에도 객체 에 이 설정을 지정할 수 있습니다.

데이터 유형: Long
기본값: 30 초
연결 URI 예시: serverSelectionTimeoutMS=15000

이 가이드 에 사용된 클래스 및 메서드에 대해 자세히 학습 다음 API 설명서를 참조하세요.