Broker 서비스
Broker 서비스 (Broker service)
Broker 서비스는 분산 클러스터 구성에서 쿼리를 라우팅해요. ZooKeeper에 게시된 segment 분포 메타데이터를 해석해 쿼리를 적절히 라우팅하고, 개별 서비스들의 결과 집합을 통합해요.
출처: 문서
본문
Broker 서비스는 분산 클러스터 구성에서 쿼리를 라우팅해요. 서비스 간 segment 분포에 대해 ZooKeeper에 게시된 메타데이터를 해석하고, 그에 따라 쿼리를 라우팅해요. 또한 Broker 서비스는 개별 서비스의 결과 집합을 통합(consolidate)해요.
설정 (Configuration)
Apache Druid Broker 서비스 설정은 Broker Configuration을 참고하세요.
Broker 서비스에 대한 기본 튜닝 지침은 Basic cluster tuning을 참고하세요.
HTTP 엔드포인트
Broker가 지원하는 API 엔드포인트 목록은 Broker API를 참고하세요.
실행 (Running)
org.apache.druid.cli.Main server broker
쿼리 전달 (Forwarding queries)
대부분의 Druid 쿼리는 데이터가 요청되는 시간 범위를 나타내는 interval 객체를 포함해요. 마찬가지로 Druid는 segment를 특정 시간 interval의 데이터를 포함하도록 파티셔닝하고, 클러스터 전체에 segment를 분산해요. 일주일의 각 날에 대한 데이터를 담은 segment 7개가 있는 간단한 데이터소스를 생각해 봐요. 하루 이상의 데이터에 대해 데이터소스에 발행된 모든 쿼리는 둘 이상의 segment에 도달해요. 이 segment들은 여러 서비스에 분산되어 있을 가능성이 높으므로, 쿼리는 여러 서비스에 도달할 가능성이 높아요.
쿼리를 전달할 서비스를 결정하기 위해 Broker 서비스는 먼저 ZooKeeper의 정보로 "세상에 대한 그림"을 구성해요. ZooKeeper는 Historical과 스트리밍 ingestion Peon 서비스, 그리고 이들이 서비스하는 segment에 대한 정보를 유지해요. ZooKeeper의 모든 데이터소스에 대해 Broker 서비스는 segment와 이를 서비스하는 서비스들의 타임라인을 구성해요. 특정 데이터소스와 interval에 대한 쿼리를 받으면, Broker 서비스는 쿼리 데이터소스와 연관된 타임라인에서 쿼리 interval을 조회해 그 쿼리에 대한 데이터를 포함한 서비스들을 찾아내요. 그런 다음 Broker 서비스는 쿼리를 선택된 서비스들로 전달해요.
캐싱 (Caching)
Broker 서비스는 LRU 캐시 무효화 전략을 가진 캐시를 사용해요. Broker 캐시는 세그먼트별 결과를 저장해요. 캐시는 각 Broker 서비스에 지역적이거나, memcached 같은 외부 분산 캐시를 사용해 여러 서비스가 공유할 수 있어요. Broker 서비스가 쿼리를 받을 때마다 먼저 쿼리를 segment 집합에 매핑해요. 이 segment 결과의 일부는 이미 캐시에 있을 수 있어 결과를 캐시에서 직접 가져올 수 있어요. 캐시에 없는 segment 결과에 대해서는 Broker 서비스가 쿼리를 Historical 서비스로 전달해요. Historical 서비스가 결과를 반환하면 Broker는 그 결과를 캐시에 저장해요. 실시간 segment는 절대 캐시되지 않으므로 실시간 데이터 요청은 항상 실시간 서비스로 전달돼요. 실시간 데이터는 끊임없이 변해서 결과를 캐시하면 신뢰할 수 없기 때문이에요.
더 알아보기 (Learn more)
- Historical 서비스 — Broker가 쿼리를 전달하는 Historical 서비스를 알아봐요.
- Peon 서비스 — 스트리밍 ingestion Peon을 이해해요.
- Segment — 쿼리 interval과 segment 분포의 관계를 살펴봐요.
- Broker Configuration — Broker 서비스 설정을 자세히 알아봐요.