Kafka

MONA·2025년 6월 19일

나혼공

목록 보기
77/92

Kafka

실시간 데이터 스트리밍을 위한 분산 메시지 브로커
분산 스트리밍 플랫폼. 로기 기반 메시지 저장 및 처리. 실시간 데이터 파이프라인 구축에 최적화

  • 발행/구독(Pub/Sub) 방식
  • 실시간 로그 수집, 이벤트 처리, 모니터링 등에 적합
  • LinkedIn에서 개발되어 오픈소스로 제공됨

핵심 개념

개념설명
Producer메시지를 Kafka로 보내는 주체
Consumer메시지를 Kafka에서 읽는 주체
Topic메시지가 전달되는 이름/채널 (subject 개념)
PartitionTopic을 나눈 조각. 병렬성과 성능 향상에 기여
BrokerKafka 서버 인스턴스
KRaftKafka의 클러스터 상태 관리

동작 플로우

[Producer] → [Kafka Topic (Partition)] → [Consumer]
  1. Producer가 특정 Topic으로 메시지 전송
  2. 메시지는 Topic의 Partition에 저장됨
  3. Consumer는 특정 Topic을 구독하여 메시지를 읽음
  4. 메시지는 디스크에 로그 형태로 저장되며, 일정 기간 동안 유지됨

장점

  • 고성능: 초당 수백만 건의 메시지 처리 가능
  • 내결함성(Fault-tolerance): 복제 기반
  • 확장성: 브로커와 파티션 수 증가로 수평 확장 가능
  • 내구성: 디스크에 저장

사용처

  • 로그 수집(ELK+Kafka)
  • 주문/결제 처리 시스템(비동기 메시지)
  • 모니터링/알림 시스템
  • IoT/센서 데이터 수집
  • 실시간 분석 시스템(Kafka+Flink/Spark)

핵심 정리

  • Kafka는 분산 메시지 큐+ 로그 저장소의 특성을 가진 스트리밍 플랫폼이다.
  • Producer가 메시지를 Topic에 발행하고, Consumer가 이를 구독해서 읽는다.
  • Topic은 Partition 단위로 분산 저장되어 고성능을 제공한다.

실습

docker 기반, Cli로 실습해보았다.

  • Kafka와 Zookeeper를 docker로 실행하고
  • Kafka Topic을 생성
  • 메시지 생산(Producer)과 소비(Consumer)
  1. docker-compose up

  1. kafka cli 접속

  1. topic 생성

  1. 메시지 생산-producer

  1. 메시지 소비-consumer

profile
고민고민고민

0개의 댓글