kafka
- 카프카 또는 카프카 클러스터. 아파치 프로젝트 애플리케이션 이름. 여러 대의 브로커를 구성한 클러스터를 의미한다.
broker
- 카프카 애플리케이션이 설치된 서버 또는 노드
producer
- 카프카로 메시지를 보내는 역할을 하는 클라이언트를 총칭한다.
consumer
- 카프카 애플리케이션이 설치된 서버 또는 노드
message
- 프로듀서가 브로커로 전송하거나 컨슈머가 읽어가는데이터 조각
topic
- 카프카는 메시지 피드를 토픽으로 구분하고, 각 토픽의 이름은 카프카 내에서 고유하다.
partition
- 하나의 토픽이 한 번에 처리할 수 있는 한계를 높이기 위해 토픽 하나를 여러 개로 나눠 병렬 처리가 가능하게 만든 것
- 토픽은 논리적 개념이고 물리적으로 저장되는 곳은 파티션임. 토픽은 최소 하나의 파티션을 가짐.
- 파티션은 쉽게 확장 가능하지만, 절대 줄일 수 없음
- 2 또는 4 정도로 생성한 후, 메시지 처리량이나 컨슈머의 LAG을 모니터링하면서 조금씩 늘려가는 방법이 좋음.
- LAG은 '프로듀서가 보낸 메시지 수(카프카에 남은 메시지 수) - 컨슈머가 가져간 메시지 수를 나타냄.
- 프로듀서가 5개의 메시지를 카프카로 전송
- 컨슈머가 4개의 메시지를 가져감.
- 이때 LAG은 1.
segment
- 브로커의 로컬 디스크에 로그 파일 형태로 저장된 실제 메시지
- 프로듀서가 브로커로 전송한 메시지는 토픽의 파티션에 저장됨.
- 각 메시지는 세그먼트라는 로그 파일 형태로 브로커의 로컬 디스크에 저장됨..
kafka-logs
디렉터리 내에 파티션 디렉터리에서 확인 가능
replication
- 카프카에서 리플리케이션이란 각 메시지를 여러 개로 복제해서 카프카 클러스터 내 브로커들에 분신시키는 동작이다.
- 여기서 중요한 것은 '토픽'이 리플리케이션되는 것이 아니라, 토픽의 '파티션'이 리플리케이션 되는 것.
- 원본과 리플리케이션을 구분하기 위해 리더(원본)와 팔로워(replica)라는 용어를 사용한다.
- `replication-factor` 옵션으로 카프카 내 몇 개의 리플리케이션을 만들 것인지 설정할 수 있다.
- 안정성만 생각해서 무작정 리플리케이션을 늘리는 것은 좋지 않다. 그만큼 브로커 리소스를 많이 사용하게 되는 것이어서 오버헤드가 발생할 수 있다.
- 팔로워의 수만큼 결국 브로커의 디스크 공간도 소비됨. 따라서 이상적인 팩터 수를 유지해야 함.
- 카프카에서 권장하는 리플리케이션 팩터는 3이다. 여기서 오해하지 말아야 할 것은 "리플리케이션 팩터가 3"이라는 의미는 리플리케이션이 3개라는 의미가 아니다. 아래 테이블 참고.
리플리케이션 팩터 수 | 리더 수 | 팔로워 수 |
---|---|---|
2 | 1 | 1 |
3 | 1 | 2 |
4 | 1 | 3 |
ZooKeeper
- 카프카의 메타데이터 관리 및 브로커의 health check을 담당한다.
'Study > kafka' 카테고리의 다른 글
카프카 기본 개념 (0) | 2024.06.23 |
---|---|
카프카 프로듀서, 컨슈머 기본 동작 (0) | 2023.02.20 |
카프카 기본 (0) | 2023.02.19 |