Kafka 개요 및 설정

Apache Kafka의 주요 개념을 정리했습니다.

데이터 흐름

Source Application ➝ Kafka ➝ Target Application Producer Queue 역할 (Topics) Consumer

  • Producer: json, tsv, avro 등의 데이터를 전송
  • Consumer: 데이터를 소비
  • Producer와 Consumer는 라이브러리로 구현

주요 개념 및 용어

Fault-Tolerant (고가용성)

  • 랙이 내려가더라도 데이터 손실 없이 복구 가능
  • 낮은 지연, 높은 처리량 (low latency, high throughput)

Topic

  • 데이터가 들어가는 공간
  • 일반적인 AMQP와 다름
  • 테이블이나 폴더와 비슷한 개념
  • 하나의 토픽은 여러 개의 파티션으로 구성될 수 있음

Broker, Replication, ISR

  • Replication (복제): Kafka의 가용성을 보장
  • Broker: Kafka가 설치된 서버 단위, 보통 3개 이상의 서버로 구성
  • ISR (In-Sync Replica): 복제된 데이터의 일관성을 유지

Acknowledgment (ack)

  • ack=0: 속도는 빠르지만 데이터 손실 여부를 알 수 없음
  • ack=1: 복제 여부를 알 수 없음
  • ack=all: 데이터 유실은 없지만 속도가 느림

Partitioner

  • 메시지 키 또는 메시지 값에 따라 파티션을 결정
  • 기본값은 UniformStickyPartitioner

Consumer Lag

  • Producer가 데이터를 빠르게 전송하고 Consumer가 느리게 처리할 때 발생
  • 이 현상은 상황에 따라 좋을 수도, 나쁠 수도 있음
  • records-lag-max == 31

Burrow

  • 오픈소스 Kafka consumer lag 모니터링 툴

메시지 브로커 플랫폼

  • 메시지 브로커: 이벤트 브로커 역할 불가능
  • 이벤트 브로커: 메시지 브로커 역할 가능
  • 단일 진실 공급원: 장애 발생 시 해당 시점으로 복구 가능
  • 스트림 데이터 처리: 많은 양의 데이터를 효과적으로 처리
  • MSA에서 중요한 역할:
    • 메시지 브로커 예: RedisQ, RabbitMQ
    • 이벤트 브로커 예: Kafka, AWS Kinesis

Kafka 설치 및 실습

1개 노드에 Homebrew로 설치

  • Kafka는 3개 이상의 브로커로 구성된 클러스터에서 성능을 발휘
  • AWS EC2 서버 3대를 발급받고 Kafka 설치
  • console producer, console consumer 실습

주키퍼 (Zookeeper)

  • Kafka 관련 정보 저장 역할

참고 링크