Apache Kafka는 API를 통해 사용할 수 있습니다. Kafka는 기본적으로 Producer API, Consumer API, Streams API, Admin API 등을 제공하며, 다양한 프로그래밍 언어에서 이를 활용할 수 있습니다.
Kafka API 종류
• Producer API : 데이터를 Kafka 토픽에 전송 (Publish)
• Consumer API : 토픽에서 데이터를 읽음 (Subscribe)
• Streams API : Kafka 내 데이터를 실시간으로 처리
• Admin API : 토픽 및 클러스터 관리
Kafka API 사용 방법
• Kafka는 Java 기반 API를 제공하지만, Python, Go, Node.js 등 다양한 언어의 클라이언트 라이브러리를 사용할 수 있습니다.
• Java API 예제 : Java에서는 Kafka의 org.apache.kafka.clients 패키지를 사용하여 API를 호출할 수 있습니다.
// Kafka Producer 예제 (Java)
import org.apache.kafka.clients.producer.*;
import java.util.Properties;
public class KafkaProducerExample {
public static void main(String[] args) {
Properties props = new Properties();
props.put("bootstrap.servers", "localhost:9092");
props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");
Producer<String, String> producer = new KafkaProducer<>(props);
ProducerRecord<String, String> record = new ProducerRecord<>("my_topic", "key", "Hello Kafka!");
producer.send(record);
producer.close();
}
}
• Python API (kafka-python) : Python에서는 kafka-python 라이브러리를 사용하여 API를 활용할 수 있습니다.
from kafka import KafkaProducer
producer = KafkaProducer(
bootstrap_servers='localhost:9092',
value_serializer=lambda v: v.encode('utf-8')
)
producer.send('my_topic', 'Hello Kafka from Python!')
producer.flush()
REST API 활용 (Kafka REST Proxy)
• Kafka를 직접 API로 호출하지 않고, Kafka REST Proxy를 사용하면 HTTP 요청을 통해 Kafka와 상호작용할 수 있습니다.
• 예제 :
curl -X POST "http://localhost:8082/topics/my_topic" \
-H "Content-Type: application/vnd.kafka.json.v2+json" \
--data '{"records":[{"value":{"message":"Hello Kafka via REST API"}}]}'
Kafka API 확장
• Confluent Kafka API : Kafka의 확장 버전으로, Schema Registry, REST Proxy, ksqlDB 등을 포함
• Spring Kafka : Spring Boot와 Kafka를 쉽게 연동할 수 있는 라이브러리
Kafka REST Proxy
• Kafka REST Proxy는 HTTP API를 통해 Kafka와 상호작용할 수 있도록 하는 Kafka의 RESTful 인터페이스입니다.
• 즉, Kafka 클라이언트를 사용하지 않고도, REST API 요청만으로 토픽에 메시지를 생산(Producer)하거나 소비(Consumer)할 수 있습니다.
• Kafka REST Proxy는 Confluent Platform에서 제공하는 서비스 중 하나로, Kafka 브로커와 직접 통신하지 않아도 HTTP 기반으로 Kafka를 사용할 수 있도록 지원합니다.
• 주요 기능
기능 | 설명 |
Producer 기능 (메시지 전송) | HTTP POST 요청으로 Kafka 토픽에 메시지를 보낼 수 있음 |
Consumer 기능 (메시지 읽기) | HTTP GET 요청으로 Kafka에서 메시지를 읽어올 수 있음 |
토픽 관리 | Kafka 토픽 리스트 조회, 토픽 생성 등 관리 기능 제공 |
Schema Registry 통합 지원 | JSON, Avro, Protobuf 등 다양한 데이터 포맷을 지원 |
Kafka 클라이언트 없이 사용 가능 | Java, Python 등 Kafka 라이브러리를 설치하지 않고도 HTTP API로 간편하게 Kafka 사용 가능 |
• Kafka REST Proxy 사용 예제
✓ Kafka REST Proxy는 기본적으로 http://localhost:8082에서 실행됩니다.
✓ 예 : "message":"Hello Kafka via REST API" 메시지를 my_topic에 전송
curl -X POST "http://localhost:8082/topics/my_topic" \
-H "Content-Type: application/vnd.kafka.json.v2+json" \
--data '{"records":[{"value":{"message":"Hello Kafka via REST API"}}]}'
✓ Kafka REST Proxy를 사용하여 토픽 조회 : 현재 Kafka 클러스터에 존재하는 모든 토픽 리스트 조회
curl -X GET "http://localhost:8082/topics"
✓ Kafka REST Proxy를 사용하여 메시지 읽기 : Kafka의 Consumer Group을 생성하고 메시지를 읽을 수 있습니다.
• 장점
✓ Kafka 클라이언트 설치 불필요 → REST API로 간편하게 Kafka 사용
✓ 언어 제한 없음 → Java, Python, JavaScript 등 모든 환경에서 Kafka 사용 가능
✓ 보안 및 네트워크 제약이 있는 환경에서 유용 → 방화벽 내부에서 Kafka 브로커에 직접 접근할 필요 없음
✓ Schema Registry와 통합 가능 → Avro, Protobuf 등의 데이터 포맷 지원
• Kafka REST Proxy vs Kafka 클라이언트
비교 항목 | Kafka REST Proxy | Kafka 클라이언트 (Java/Python 등) |
설치 필요 | 여부 없음 (REST API 사용) | Kafka 라이브러리 필요 |
언어 | 제약 없음 (HTTP 요청만 필요) | 특정 언어의 Kafka 라이브러리 필요 |
성능 | 낮음 (HTTP 오버헤드) | 높음 (Kafka 네이티브 API 사용) |
보안/네트워크 | 방화벽 내에서도 사용 가능 | 브로커와 직접 연결 필요 |
사용 용도 | 간단한 메시지 전송 및 조회 | 대량 데이터 처리, 실시간 스트리밍 |
• Kafka REST Proxy 사용 시 고려할 점
✓ HTTP 오버헤드가 발생하므로 성능이 다소 낮음
✓ 대량의 메시지를 처리할 때는 Kafka 클라이언트를 사용하는 것이 더 적합
✓ Kafka REST Proxy 자체가 추가적인 서비스이므로 유지보수 필요
✓ 일부 고급 기능은 지원하지 않음
✓ 예: Kafka Streams, Interactive Queries 등
관련 블로그
Apache Kafka 소개
Apache Kafka는 분산 이벤트 스트리밍 플랫폼으로, 대용량의 데이터를 실시간으로 처리하고 저장하는 데 최적화된 메시징 시스템입니다. 주요 특징1. 고성능 및 확장성 • 분산 시스템 구조로, 여
make2t.tistory.com
Apache Kafka - 신뢰성 보증 방안
Apache Kafka는 데이터 신뢰성을 보장하기 위해 다양한 메커니즘을 제공합니다. 데이터 손실 없이 안정적으로 메시지를 처리할 수 있도록 복제(Replication), Acknowledgment(ACK), 정확한 한 번 처리(Exactly-On
make2t.tistory.com
'IT > Kafka' 카테고리의 다른 글
Kafka 메시지를 구독하는 자바 소스 예시 (2) | 2025.02.28 |
---|---|
Apache Kafka 구성요소 (1) | 2025.02.26 |
Apache Kafka 유사한 오픈소스 및 상용솔루션 사례 (0) | 2025.02.26 |
Apache Kafka - 신뢰성 보증 방안 (0) | 2025.02.26 |
Apache Kafka 소개 (4) | 2025.02.25 |