Overview :: Spring Kafka
<aside>
💡
[PARAGON] Kafka
notebookLM Apache Kafka 기본 개념 음성 :
아파치 카프카 기본 개념.wav
</aside>
1. Apache Kafka 개요
Apache Kafka는 분산 이벤트 저장소이자 실시간 스트리밍 플랫폼입니다.
LinkedIn에서 처음 개발되었으며 현재는 Apache Foundation에서 관리하는 오픈 소스 프로젝트입니다.
데이터 파이프라인, 스트리밍 분석, 데이터 통합, 미션 크리티컬 애플리케이션 등 다양한 분야에서 고성능의 대규모 데이터 처리를 위해 사용됩니다.
핵심 특징:
- 분산 시스템: Kafka는 하나 이상의 Kafka 브로커로 구성된 클러스터 형태로 운영됩니다.
이를 통해 확장성과 내결함성을 확보합니다.
- 이벤트 스트리밍: 데이터를 이벤트 스트림 형태로 처리하며, 실시간 데이터 처리에 강점을 보입니다.
- 내결함성: 여러 브로커에 데이터를 복제하여 노드 실패 시에도 데이터 손실 없이 지속적인 서비스가 가능합니다. (리더/팔로워 모델 사용)
- 확장성: 필요에 따라 브로커 수를 늘려 처리량을 확장할 수 있습니다.
- 지속성: 구성된 정책에 따라 데이터를 디스크에 저장하여 소비자가 언제든지 과거 데이터를 소비할 수 있도록 합니다.
핵심 구성 요소:
- 메시지 (Message): Kafka에서 처리하는 모든 데이터 단위입니다.
헤더(메타데이터), 키(데이터 구성에 도움), 값(실제 페이로드)의 세 부분으로 구성됩니다.
- 토픽 (Topic): 메시지를 체계적으로 분류하는 카테고리입니다.
데이터 스트림을 구조화하는 데 사용되며, 각 토픽은 고유한 이름을 가집니다.
- 파티션 (Partition): 토픽은 확장성을 위해 하나 이상의 파티션으로 분할됩니다.
파티션을 통해 메시지를 병렬로 처리하여 높은 처리량을 달성할 수 있습니다.
- 오프셋 (Offset): 각 파티션 내 메시지에 순차적으로 할당되는 ID입니다.
오프셋은 변경되지 않으며, 소비자는 오프셋을 통해 어디까지 메시지를 소비했는지 추적합니다.
- 브로커 (Broker): Kafka 서버입니다.
메시지를 저장하고 관리하며, 프로듀서와 소비자 간의 메시지 교환을 중개합니다.
- 프로듀서 (Producer): Kafka에 데이터를 보내는 애플리케이션입니다.
메시지를 배치로 전송하여 네트워크 트래픽을 줄이며, 파티셔너를 사용하여 메시지를 특정 파티션으로 보냅니다.
- 컨슈머 (Consumer): Kafka 브로커에서 메시지를 읽거나 소비하는 애플리케이션입니다.