Azure Event Hubs + Kafka API 사용하기

Keno Kim·2025년 2월 12일

Event hubs 프로토콜

  • AMQP
    • (ex). RabbitMQ : AMQP 기반 메시지 브로커
      • RabbitMQ 는 AMQP, MQTT, STOMP, WebSockets 멀티 프로토콜을 지원함.
  • HTTP
  • Kafka API - Kafka Wire Protocol (자체 프로토콜)
    • TCP 기반의 바이너리 프로토콜

브로커 설정

  • Kafka broker 의 topic 은 한 개 이상의 partition 으로 구성되어 있다.
  • replication.factor 로 리더 파티션과 팔로워 파티션의 수를 조정할 수 있다.
    • Event Hubs 에서 replication.factor 는 3이다. (조정 불가능)
  • min.insync.replicas 값을 통해 ACKS=all 을 반환하기 위한 최소 ISR 값을 설정할 수 있다.

kafka producer

  • ACKS 값을 통해 메시지 안정성을 설정할 수 있다.
  • acks=0 : Producer가 메시지를 보내기만 하고, 브로커의 응답(ACK)을 기다리지 않음. (최대 성능, 데이터 유실 가능)
  • acks=1 : 리더 브로커가 메시지를 받으면 즉시 ACK 반환. (빠르지만, 리더 장애 시 데이터 손실 가능)
  • acks=all : 모든 ISR(In-Sync Replica)에 메시지가 저장될 때까지 ACK 반환. (가장 안전한 설정)

Message delievery semantics

  • 메시지 전송 전략, 메시지 전달 안정성과 성능의 trade-off
  • Producer 설정을 통해 전략을 설정할 수 있음.
    • at-most-once : acks=0, retries=0
    • at-least-once: acks=all, retries=many
    • exactly-once: enable.idempotence=true, transactional.id=id
  • Q) 시스템에서 적절한 메시지 전송 전략은 무엇일까?
profile
개발자의 생각 로그

0개의 댓글