브로커 안의 파티션을 쪼개서 메시지를 병렬처리하여 발행하고(produce) 소비한다(consume)
즉 카프카의 성능은 가상서버/ 혹은 온프렘 서버에 성능 의해 결정됀다
1개 topic : 1개 broker
kafka-partition
멀티 컨슈머
컨슈머 그룹으로 관리가능
클러스터 개념으로 컨슈머 그룹에서 멀티 컨슈머가 하나의 토픽을 동시 다발적으로 소비할수도 있다
다중 토픽 별 컨슈머
각 토픽별로 컨슈머와 프로듀서가 독립적으로 작동함
topic 간 유기적인 소비와 발행이 가능함
코디네이터
파티션과 컨슈머 사이를 관리해줌 (카프카 내부에서 작동)
alb 처럼 그룹 상태 관리, 파티션 할당등 워크로드를 리밸런싱 해줌 ( 토픽 메타데이터처리 등 )
디스크 기반? 메모리 기반?
카프카 자체는 디스크 기반 메시지 브로커지만 메모리를 활용해서 성능이 빠른거임.
메시지 저장 :disk
메시지 기록 : topic에 따라 partition별로 (bytecode)로그 형태로 저장
메시지 복구: 디스크 기반이라 데이터 유지가능.
페이지 캐시: file IO를 memroy cache 를 활용함
프로토콜: tcp/ip to disk
배치 처리 : 병렬 처리 속도 향상


배치 처리: [큰 덩어리] → 처리 → [결과]
스트림 처리: [데이터1] → [데이터2] → [데이터3] → 실시간 처리
❌ 1개 topic : 1개 broker
✅ 1개 topic : 여러 partition (여러 broker에 분산 가능)
예시:
Topic: user-events (3 partitions)
├── Partition 0 → Broker 1
├── Partition 1 → Broker 2
└── Partition 2 → Broker 3
Consumer Group: analytics
├── Consumer A → Partition 0,1
└── Consumer B → Partition 2
한 파티션은 그룹 내 한 컨슈머만 처리 (중복 방지)
Topic: user-events
├── Group1 (analytics) → 모든 메시지 소비
└── Group2 (notification) → 모든 메시지 소비 (독립적)
게임 해킹:
메모리 주소 0x1000 → 체력값
메모리 주소 0x1004 → 돈
Kafka:
Partition 0, Offset 100 → 메시지 위치
Partition 1, Offset 250 → 메시지 위치
공통점:
1. 메시지 쓰기 → OS 페이지 캐시 → 디스크
2. 메시지 읽기 → 페이지 캐시 (캐시 히트) → 빠른 응답
3. Zero-copy: 커널 → 소켓 직접 전송 (애플리케이션 메모리 거치지 않음)