티스토리 뷰

Programming

Apache Pulsar란?

ipxy 2025. 3. 31. 13:14
728x90

 

🧩  Apache Pulsar 란 무엇인가요?

🐳 경량화 단일 노드 Pulsar 개발/테스트용 standalone 모드로 실행하는 환경
⚙️ Pulsar 기능 제한형 구성 Function, KoP, Tiered Storage 등을 제외한 최소 기능 셋
🎈 IoT, Edge 용 경량 Pulsar 리소스 제한 환경을 위한 맞춤형 빌드 (예: ARM 등)
☁️ Pulsar Proxy 기반 게이트웨이 Kafka 클라이언트 또는 REST 게이트웨이만 얹은 경량 Pulsar Wrapper

✅ PulsarLite = 흔히 “개발/테스트용 경량화 구성”을 의미

예시 1: Docker로 띄우는 Standalone Pulsar

docker run -it -p 6650:6650 -p 8080:8080 apachepulsar/pulsar:latest bin/pulsar standalone

👉 이게 흔히 말하는 “PulsarLite”로 불리는 형태입니다.

 

💻 개발 환경 Kafka처럼 빠르게 로컬에서 돌리고 테스트하고 싶을 때
🧪 CI/CD 테스트 테스트 컨테이너로 빠르게 띄우고 기능 확인
🚀 빠른 프로토타이핑 클러스터 구성 없이 이벤트 기반 구조 실험

🧱 PulsarLite의 특징 (vs 정식 Pulsar 클러스터)

 

항목  PulsarLite (standalone 등)  Pulsar 클러스터
구성 단일 노드, 간단 실행 Broker + BookKeeper + ZooKeeper
운영 개발용 운영용, 고가용성
기능 일부 비활성화 가능 전체 기능 사용 가능
확장성 낮음 매우 높음 (수평 확장)
대표 포트 6650 / 8080 동일

📌 오해 방지

  • Standalone Pulsar (개발용)
  • Embedded Pulsar (애플리케이션 내에서 내장 실행)
  • Mini Pulsar Cluster (1 브로커 + 1 BookKeeper)
  • K8s용 lightweight Helm Chart
PulsarLite는 공식 이름은 아니며, **“간단하게 쓰는 Pulsar”**를 의미  
흔히 Docker 또는 Standalone 형태로 사용  
개발/테스트, Kafka 대체 실험용 등으로 매우 유용  
운영용 고가용성 구성을 위해서는 정식 Pulsar 클러스터 필요  

 

 

🔄 Kafka-on-Pulsar (KoP) 활성화 시 작동 방식

항목 설명

Kafka API 호환 Kafka의 Producer, Consumer 클라이언트를 그대로 사용 가능
브로커 포트 Kafka 포트를 따로 열어야 함 (기본: 9092)
백엔드 메시지는 Pulsar 내부에서 처리됨 (BookKeeper, 토픽 구조 등은 Pulsar 방식)
토픽 매핑 Kafka 토픽 → Pulsar 네임스페이스 + 토픽으로 매핑됨

🧪 예제 비교

아래는 Kafka Java 코드를 그대로 PulsarLite(KoP 활성화)에서 사용할 수 있음을 보여주는 예입니다.

✅ PulsarLite + KoP 환경 설정 (서버 측)

# pulsar broker.conf 또는 standalone.conf에 다음 항목이 있어야 함
messagingProtocols=kafka
kafkaListeners=PLAINTEXT://0.0.0.0:9092
kafkaAdvertisedListeners=PLAINTEXT://localhost:9092

☕ 동일 코드 테스트

Kafka Producer (변경 없음)

ProducerRecord<String, String> record = new ProducerRecord<>("test-topic", "key", "Hello Kafka!");
  • ✅ Kafka → Kafka 브로커: OK
  • ✅ Kafka → PulsarLite (KoP): OK!

Kafka Consumer (변경 없음)

consumer.subscribe(Collections.singletonList("test-topic"));
  • ✅ Kafka → Kafka 브로커: OK
  • ✅ Kafka → PulsarLite (KoP): OK!

🧠 내부 작동 비교

 

항목  Kafka  Pulsar + KoP
클라이언트 코드 Kafka Java API Kafka Java API (그대로 사용)
브로커 처리 방식 직접 디스크에 저장 Pulsar → BookKeeper에 저장
소비 그룹 Kafka의 Consumer Group Pulsar의 Subscription으로 변환됨
Offset 관리 Kafka 내부 관리 Pulsar에서 별도 처리
Topic 구조 test-topic persistent://public/default/test-topic

🔧 참고: 제한 사항 및 고려할 점

항목  설명
Kafka Streams, Connect 등 완전한 호환은 아님 (일부 기능 미지원)
AdminClient 일부 기능 일부 Kafka Admin API는 미지원 가능
Latency Kafka-native보다 다소 느릴 수 있음
보안 (SASL, ACL) KoP는 보안 구성이 복잡할 수 있음

 

📊 KoP vs Kafka 성능 벤치마크 요약

테스트 도구: OpenMessaging Benchmark (OMB)
클러스터 구성: 동일한 HW 스펙에서 Kafka vs KoP 비교
테스트 기준: 1KB 메시지, 100개 토픽, 1000개 파티션, 1M 메시지
메트릭: TPS(Throughput), 평균 지연(latency), p99 지연

항목 Apache Kafka Pulsar with KoP

최대 TPS 🟢 1,300,000 msg/s 🔵 1,000,000 msg/s
평균 지연 시간 🟢 5~10ms 🔵 10~15ms
99% 지연 시간 (p99) 🟢 <20ms 🔵 30~50ms
Disk I/O 사용량 🔵 낮음 (BookKeeper 사용) 🟢 높음 (Broker 직접 기록)
CPU 사용률 🟢 낮음 🔵 상대적으로 높음
백프레셔 대응력 🔵 약함 🟢 강함

 

728x90
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함