[Apache Kafka] Kafka REST Proxy란?

Dragony·2023년 8월 10일
0

Kafka

목록 보기
5/7

공식 문서

REST Proxy 란?

Confluent에서 제공하는 Apache Kafka 클러스터를 위한 RESTful 인터페이스입니다.
네이티브 Kafka 프로토콜이나 Kafka Connect, Kafka Client를 사용하지 않고도 REST API 를 통해 카프카 클러스터에 메세지를 전달하고, 클러스터의 상태를 모니터링 및 관리할 수 있습니다.

특징

MetaData

  • 브로커, 토픽, 파티션, Config 등 카프카 클러스터에 대한 대부분의 메타 데이터를 GET 요청 방식으로 조회할 수 있습니다.

Producers

  • API가 특정 토픽이나 파티션으로 들어오는 Produce Requests를 받아, 작은 프로듀서 풀을 통해 라우팅 시킵니다.
  • Producer 인스턴스는 공유되기 때문에 요청별로 Producer 설정을 조정할 수 없습니다. 그러나, REST Proxy 에서 새로운 Producer 설정을 전달하여 전역적으로 설정을 조정할 수 있습니다.
    • 예를 들어, 저장소 및 네트워크 오버헤드를 줄이기 위해 compression.type 옵션을 전달할 수 있습니다.

Consumers

  • Consumer는 Stateful아므로 특정 REST Proxy 인스턴스와 관련이 있습니다.
  • Offset Commit은 자동으로 진행되거나 사용자가 명시적으로 요청할 수도 있습니다.
  • 현재 Consumer 당 하나의 스레드로 제한됩니다. 더 높은 처리량을 위해 여러개의 Consumer를 사용하세요.
  • Consumer 인스턴스는 공유되지 않지만 기본 서버 리소스를 공유합니다. 그러므로, 제한된 설정 옵션들이 API를 통해 전달됩니다. 그러나 REST Proxt 설정에서 Consumer 설정을 전달하여 전역적으로 설정을 조정할 수 있습니다.

Data Formats

  • REST Proxy는 JSON, Base64로 인코딩된 원시 바이트, Json 인코딩된 Avro, Protobuf 혹은 JSON 스키마를 사용하여 데이터를 읽고 쓸 수 있습니다.
  • Avro, Protobuf, JSON Schema를 사용하면 스키마가 등록되고 Schema Registry에 대해 검증됩니다.

REST Proxy Clusters and Load Balancing

  • REST Prxoy는 함께 실행되는 다중 인스턴스에 부하가 분산되도록 설계되었습니다.
  • 다양한 로드밸런싱 메커니즘을 지원합니다. (Round Robin DNS, Service Discovery, Load Balancer)

Admin operations

  • API v3 을 사용하여 토픽을 생성하거나 삭제하고, 토픽 설정을 업데이트하거나 초기화할 수 있습니다.

아직 지원되지 않는 항목은 아래와 같습니다.

  • 다중 토픽 Produce 요청
    • 현재 각 Produce 요청은 단일 토픽 혹은 토픽 파티션만 처리할 수 있습니다.
    • 대신, 클라이언트는 필요한 경우 여러 요청으로 데이터를 분할할 수 있습니다.
  • 요청에서 대부분의 Producer/Consumer 재정의
    • 몇가지 주요 재정의만 API에 노출됩니다. (단, 전역 재정의는 관리자가 설정할 수 있음)
  • 키-값에 대해 다른 직렬 변환기 허용 (serializer)
    • 현재 REST Proxy는 Content-Type 헤더를 기반으로 직렬 변환기를 선택합니다. 결과적으로 키와 값에 대한 직렬 변환기는 이 디자인에서 동일해야 합니다.
profile
안녕하세요 :) 제 개인 공부 정리 블로그입니다. 틀린 내용 수정, 피드백 환영합니다.

0개의 댓글