본문 바로가기

개발기술/통신 인터페이스, 프로토콜

Message Broker : Kafka

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