Kafka 핵심 구성요소
1) Topic
- 메세지를 넣는 “큰 통” 같은 것.
- 예: click-log, order-event, user-activity
Kafka의 Topic은 내부가 ‘파티션(Partition)’으로 나뉜다.
2) Partition
메시지를 “샤딩”하여 분산 저장하고 병렬로 처리하기 위한 논리적 조각
Kafka의 핵심. Topic 안에 여러 개의 독립된 로그 파일(append-only file) 이 있다고 보면 된다.
Kafka는 Partition = 병렬 처리 단위 로 보는 시스템이다.
Topic: user-event
├── Partition 0
├── Partition 1
└── Partition 2
파티션의 핵심 성질
- 각 파티션은 완전히 독립된 append-only 로그 파일
- 브로커 여러대에 분산 저장 가능
- 각 파티션을 서로 다른 Consumer가 병렬로 읽음 → 처리량 폭발적으로 증가
- 파티션 수 = Topic의 병렬처리 한계
즉, Kafka의 고성능 비밀은 파티션에 있다. Kafka는 Partition으로 수평 확장이 무한함.
3) Broker
- Kafka 서버 1개 = Broker 1개
- 여러 브로커가 모여 클러스터
파티션은 여러 브로커에 분산되어 저장된다.
Broker 1 : Partition 0
Broker 2 : Partition 1
Broker 3 : Partition 2
4) Replica (복제)
데이터 안정성을 위해 파티션을 복제한다.
Partition 1
├── Leader replica (Broker 2)
└── Follower replicas (Broker 1, 3)
- Producer/Consumer는 항상 Leader와 통신
- Follower는 내부적으로 Leader와 데이터를 맞춤
5) Producer
- Topic의 특정 Partition에 메시지를 append한다
- Partition 결정 방식:
- Key hash
- Round-robin
- Custom partitioner
6) Consumer & Consumer Group
🔥 Consumer Group이 Kafka의 또다른 핵심
Group A
├── Consumer 1 → Partition 0
├── Consumer 2 → Partition 1
└── Consumer 3 → Partition 2
특징
- 컨슈머 그룹은 하나의 애플리케이션(하나의 기능) 단위
- 한 파티션은 한 그룹 내에서 한 소비자만 읽을 수 있다.
- 하지만 여러 그룹이 동일 데이터를 각각 독립적으로 읽을 수 있다.
7) Offset
- Kafka는 메시지가 “삭제되지 않는다”
- “그 메시지를 어디까지 읽었는가”는 Consumer Group이 오프셋으로 관리
RabbitMQ와 결정적인 차이:
- RabbitMQ = Consumer가 메시지 consume하면 큐에서 삭제됨
- Kafka = 메시지는 그대로 보존되고 Consumer만 offset을 이동함
'개발기술 > 통신 인터페이스, 프로토콜' 카테고리의 다른 글
| 장기연결 소켓통신 (1) | 2025.12.19 |
|---|---|
| MessageBroker : RabbitMQ, (0) | 2025.09.22 |
| 응용계층 : HTTP와 그 외 (0) | 2025.08.22 |
| RabbitMQ : Java Client 통신구조 (1) | 2025.07.07 |
| 전송계층 : TCP와 UDP (0) | 2025.04.30 |