
앞으로 회사에서 Kafka를 활용하여 개발해야할 상황이 생길 것 같아, 기본 개념을 정리하고 기록하고자 작성합니다.
아파치 카프카(Apache Kafka)는 고성능, 내구성, 확장성을 갖춘 분산 스트리밍 플랫폼입니다. 카프카는 실시간 데이터 파이프라인과 스트리밍 애플리케이션을 구축하기 위해 사용됩니다. 다음 표는 카프카의 주요 개념과 각 개념의 설명을 제공합니다.
| 개념 | 설명 |
|---|---|
| 브로커 (Broker) | Kafka 클러스터의 각 서버를 브로커라고 합니다. 각 브로커는 특정 개수의 파티션을 관리하며, 브로커들이 협력하여 전체 Kafka 클러스터를 구성합니다. |
| 토픽 (Topic) | Kafka에서 데이터를 분류하는 카테고리 또는 스트림입니다. 프로듀서가 데이터를 게시하고, 컨슈머가 구독하여 데이터를 소비하는 논리적 채널입니다. |
| 파티션 (Partition) | 토픽은 파티션으로 나누어집니다. 각 파티션은 순서가 있는 불변 로그의 단일 부분으로, 각 메시지는 고유한 오프셋을 가집니다. 파티션을 통해 병렬 처리와 데이터 복제를 할 수 있습니다. |
| 오프셋 (Offset) | 파티션 내의 각 메시지는 고유한 식별자인 오프셋을 가집니다. 오프셋은 파티션 내에서 메시지의 순서를 나타냅니다. 컨슈머는 오프셋을 기반으로 메시지를 읽습니다. |
| 프로듀서 (Producer) | 데이터를 토픽에 게시하는 역할을 합니다. 프로듀서는 데이터를 특정 토픽에 보내며, 각 메시지는 특정 파티션에 기록됩니다. |
| 컨슈머 (Consumer) | 토픽으로부터 데이터를 읽는 역할을 합니다. 컨슈머는 특정 오프셋부터 메시지를 읽기 시작하며, 컨슈머 그룹을 구성하여 병렬로 데이터를 처리할 수 있습니다. |
| 컨슈머 그룹 (Consumer Group) | 여러 컨슈머가 협력하여 메시지를 병렬로 처리하기 위한 그룹입니다. 각 컨슈머는 그룹 내에서 고유한 파티션을 할당받아 메시지를 처리합니다. |
| 리더 (Leader) | 각 파티션은 리더와 여러 팔로워 복제본을 가집니다. 리더는 모든 읽기 및 쓰기 요청을 처리하며, 팔로워는 리더의 데이터를 복제하여 데이터 내구성을 보장합니다. |
| 팔로워 (Follower) | 리더 파티션의 데이터를 복제하여 데이터의 내구성을 보장합니다. 리더가 실패할 경우, 팔로워 중 하나가 새로운 리더로 승격됩니다. |
| 주키퍼 (Zookeeper) | Kafka 클러스터의 메타데이터를 관리하고 브로커를 조정하는 데 사용됩니다. Zookeeper는 클러스터 구성, 리더 선출, 컨슈머 오프셋 저장 등의 역할을 수행합니다. |
| 복제 (Replication) | 각 파티션은 여러 브로커에 복제되어 저장됩니다. 복제는 데이터의 내구성과 고가용성을 보장합니다. |
| 스트림 (Stream) | Kafka 스트림 API를 사용하여 실시간 데이터 처리 애플리케이션을 구축할 수 있습니다. 스트림은 Kafka 토픽에서 데이터를 읽고, 실시간으로 변환, 처리, 출력할 수 있는 기능을 제공합니다. |
브로커 (Broker):
토픽 (Topic):
파티션 (Partition):
오프셋 (Offset):
프로듀서 (Producer):
컨슈머 (Consumer):
컨슈머 그룹 (Consumer Group):
리더 (Leader):
팔로워 (Follower):
주키퍼 (Zookeeper):
복제 (Replication):
스트림 (Stream):
이와 같은 개념들을 이해하고 활용하면 Kafka를 통해 대규모 실시간 데이터 스트리밍과 처리 시스템을 효율적으로 구축할 수 있습니다.