본문 바로가기
ETC

Kafka 01 - 정의 및 특징

by soojitasan 2023. 2. 23. 20:14

정의

  • 오픈소스 분산 메시지 스트리밍 플랫폼
  • Pub/Sub 모델을 지향하는 형태

 

Publisher / Subscriber 모델

  • 중앙 집중형 메시지 관리 방식 : 메시지 생성/소비가 완전히 독립되어있는 구조 (비동기 처리)
  • Publisher에서 메시징 플랫폼에 메시지를 발행(push)하면 Subscriber가 데이터를 수신(pull)
  • 수신자가 정해져있지 않음 → 송신자가 ‘전송’ 하는게 아니라 수신자가 ‘Polling’ 하는 방식

 

 

Kafka 아키텍쳐 요소

  • Zookeeper : 분산 코디네이팅 시스템, Kafka Borker 정보 및 Topic 메타정보를 보유함.
  • Broker : 메시지 관리자, Kafka가 실질적으로 구동되는 서버단
  • Producer : 메시지 생산자, 토픽의 Leader Partition을 보유한 Broker에 쓰기 연산 요청을 함.
  • Consumer : 메시지 소비자, 호스팅하고있는 토픽의 Leader Partition을 보유한 Broker에 pull 방식의 읽기 연산 요청을 함.

 

 

타 메시징 시스템과의 차이점

  • 페이지 캐싱 처리 : 읽고 쓰기 시 디스크가 아닌 잔여 메모리 내 페이지 캐시를 활용해 처리속도 향상
  • 메모리가 아닌 디스크에 저장 : 보관 주기에 따라 디스크에 저장하여 메시지 손실 최소화
  • 배치 전송 처리 : I/O들을 묶어서 배치 처리를 함으로써 처리속도 향상

 

 

Topic / Partition / Offset

  • Topic : 메시지 그룹
  • Partition : Topic에 속하는 메시지 단위 — 분산환경에서는 복제되어 여러 Broker에 저장 (Leader와 Follower로 역할 구분), but 읽고 쓰기 행위는 원본 Partition (Leader Partition)에서만 가능 
  • Offset : Consumer Group별 지금까지 읽은 메시지 위치, 동일 파티션 내 고유한 값 유지

 

 

저장 단위

  • .log : 메시지 내용 저장
  • .index : 메시지의 물리적 위치 및 Offset 저장 (log 파일에서 Offset을 찾기 위한 인덱스 파일)
  • .timeindex : 메시지의 타임스탬프 저장

 

 

 

 

 

참고문서

Apache Kafka 의 기본 아키텍쳐 (velog.io)

Apache Kafka(아파치 카프카)란 무엇인가? (velog.io)