Kafka
실시간 데이터 스트리밍을 위한 분산 메시지 브로커
분산 스트리밍 플랫폼. 로기 기반 메시지 저장 및 처리. 실시간 데이터 파이프라인 구축에 최적화
- 발행/구독(Pub/Sub) 방식
- 실시간 로그 수집, 이벤트 처리, 모니터링 등에 적합
- LinkedIn에서 개발되어 오픈소스로 제공됨
핵심 개념
| 개념 | 설명 |
|---|
| Producer | 메시지를 Kafka로 보내는 주체 |
| Consumer | 메시지를 Kafka에서 읽는 주체 |
| Topic | 메시지가 전달되는 이름/채널 (subject 개념) |
| Partition | Topic을 나눈 조각. 병렬성과 성능 향상에 기여 |
| Broker | Kafka 서버 인스턴스 |
| KRaft | Kafka의 클러스터 상태 관리 |
동작 플로우
[Producer] → [Kafka Topic (Partition)] → [Consumer]
- Producer가 특정 Topic으로 메시지 전송
- 메시지는 Topic의 Partition에 저장됨
- Consumer는 특정 Topic을 구독하여 메시지를 읽음
- 메시지는 디스크에 로그 형태로 저장되며, 일정 기간 동안 유지됨
장점
- 고성능: 초당 수백만 건의 메시지 처리 가능
- 내결함성(Fault-tolerance): 복제 기반
- 확장성: 브로커와 파티션 수 증가로 수평 확장 가능
- 내구성: 디스크에 저장
사용처
- 로그 수집(ELK+Kafka)
- 주문/결제 처리 시스템(비동기 메시지)
- 모니터링/알림 시스템
- IoT/센서 데이터 수집
- 실시간 분석 시스템(Kafka+Flink/Spark)
핵심 정리
- Kafka는 분산 메시지 큐+ 로그 저장소의 특성을 가진 스트리밍 플랫폼이다.
- Producer가 메시지를 Topic에 발행하고, Consumer가 이를 구독해서 읽는다.
- Topic은 Partition 단위로 분산 저장되어 고성능을 제공한다.
실습
docker 기반, Cli로 실습해보았다.
- Kafka와 Zookeeper를 docker로 실행하고
- Kafka Topic을 생성
- 메시지 생산(Producer)과 소비(Consumer)
- docker-compose up

- kafka cli 접속

- topic 생성

- 메시지 생산-producer

- 메시지 소비-consumer
