라우팅
라우팅 (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이 필요할 수 있어요. - 적응형 서버 선택과 함께 사용하면 서버 부하를 더 효과적으로 반영해요.