라우팅

라우팅 (Routing)

Pinot 브로커의 쿼리 라우팅 전략과 구성을 안내해요.

출처: 문서

본문

개요 (Overview)

Pinot 브로커는 쿼리를 테이블의 세그먼트를 보유한 서버들로 라우팅해요. 라우팅 전략(instance selector type)에 따라 쿼리가 어떤 서버로 전달되고 결과가 어떻게 병합되는지가 달라져요. 적절한 라우팅 구성은 부하 분산과 쿼리 성능에 큰 영향을 줘요.

라우팅 전략 (Routing strategies)

Pinot은 여러 인스턴스 선택자(instance selector)를 제공해요:

  • Balanced instance selector — 기본값으로, 세그먼트를 고르게 분산해 부하를 균형 있게 나눠요.
  • Replica-group instance selector — 레플리카 그룹 기반으로 라우팅해 쿼리가 특정 레플리카 그룹에 국한되게 해요. 알고리즘(다단계/스케줄링)에 따라 캐시 효율과 병렬성을 최적화할 수 있어요.
  • Strict replica-group instance selector — upsert 등에서 필요한 엄격하고 결정적인 레플리카 그룹 라우팅이에요.

라우팅 구성 (Routing config)

라우팅 전략은 테이블 구성의 routing 섹션에서 instanceSelectorType으로 설정해요:

"routing": {
  "instanceSelectorType": "replicaGroup"
}
  • balanced — 기본 부하 분산.
  • replicaGroup — 레플리카 그룹 라우팅(경로 기반, 알고리즘 옵션 포함).
  • strictReplicaGroup — 엄격한 레플리카 그룹 라우팅(upsert 테이블에 필요할 수 있어요).

모범 사례 (Best practices)

  • 대규모 클러스터에서는 레플리카 그룹 라우팅으로 서버 간 캐시 활용과 부하를 개선할 수 있어요.
  • upsert 테이블은 정확한 의미론을 위해 strictReplicaGroup이 필요할 수 있어요.
  • 적응형 서버 선택과 함께 사용하면 서버 부하를 더 효과적으로 반영해요.

더 알아보기 (Learn more)