Database
아파치 카프카(Apache Kafka) - 브로커
TedDev
2025. 1. 3. 15:07
728x90
Apache Kafka에서 브로커(Broker), 복제(Replication), ISR(In-Sync Replicas)는 데이터의 안정성과 가용성을 보장하기 위한 중요한 구성 요소이다.
1. 브로커(Broker)
브로커는 카프카 클러스터에서 데이터를 저장하고 관리하는 개별 서버(노드)이다.
- 역할
- 데이터를 저장 및 제공
- 프로듀서로부터 데이터를 받아 파티션에 저장
- 컨슈머 요청에 따라 데이터를 전달
- 클러스터 내에서 파티션 리더와 복제를 관리
- 특징
- 하나의 카프카 클러스터는 여러 브로커로 구성된다.
- 각 브로커는 고유 ID를 가지고 있다.
- 데이터의 파티션을 분산 저장하여 확장성과 병렬 처리 성능을 높인다.
브로커의 주요 구성 요소
- 리더(Leader) : 특정 파티션의 읽기/쓰기 요청을 처리하는 주 노드
- 팔로워(Follower) : 리더의 데이터를 복제(replication)하여 장애 복구에 대비
2. 복제(Replication)
복제는 데이터 안정성과 내결함성을 보장하기 위해 동일한 데이터를 여러 브로커에 저장하는 방식이다.
- 복제 계수(Replication Factor)
- 각 파티션은 여러 복제본(replica)을 가질 수 있다.
- 예를 들어, 복제 계수가 3이면 3개의 브로커에 데이터가 복제된다.
- 복제 계수는 파티션별로 설정 가능하다.
- 역할
- 하나의 복제본은 리더로 작동하고 나머지는 팔로워로 작동
- 리더가 장애가 발생하면 클러스터가 팔로워 중 하나를 새로운 리더로 승격
복제 시 고려 사항
- 복제 계수는 클러스터의 브로커 수를 초과할 수 없다.
- 최소 2 이상의 복제 계수를 사용하는 것이 데이터 안정성 측면에서 권장된다.
3. ISR(In-Sync Replicas)
ISR(In-Sync Replicas)은 리더와 동기화된 복제본 집합을 말한다.
- 특징
- ISR은 리더와 동일한 데이터를 가진 복제본만 포함
- 클러스터는 ISR 목록을 모니터링하여 복제본 상태를 관리
- 역할
- 데이터의 안정성과 가용성을 유지
- 데이터가 모든 ISR에 기록되었을 때만 "성공"으로 간주(ACK 설정에 따라 다름)
ISR 동작 방식
- 리더는 데이터를 받으면 ISR에 포함된 모든 복제본으로 데이터를 전송
- ISR 내 복제본은 데이터를 리더로부터 복제한 후 이를 확인(ACK)한다.
- 모든 ISR 복제본이 데이터를 확인하면 메시지는 커밋(commit) 상태로 전환된다.
ISR 구성의 동적 관리
- 팔로워가 리더와 일정 시간 동안 동기화를 유지하지 못하면 ISR에서 제외
- 다시 동기화되면 ISR에 재포함
장애 복구
- 리더가 다운되면 클러스터는 ISR 내 다른 복제본 중 하나를 새로운 리더로 승격
- ISR을 통해 리더 복구가 빠르게 이루어져 데이터 손실 가능성을 최소화
복제와 ACK
카프카는 데이터 쓰기의 안정성을 조절하기 위해 ACK 설정을 제공한다.
- acks=0 : 프로듀서는 데이터를 브로커에 전송한 직후 확인 없이 반환
- acks=1 : 리더만 데이터를 수신하면 프로듀서에 성공 응답을 보냄
- acks=all : ISR 내 모든 복제본이 데이터를 수신해야 성공 응답을 보냄
복제와 ISR의 시각화
토픽: user-logs
- 파티션 수: 3
- 복제 계수: 2
파티션 | 리더 | 팔로워 | ISR |
P0 | Broker 1 | Broker 2 | Broker 1, Broker 2 |
P1 | Broker 2 | Broker 3 | Broker 2, Broker 3 |
P2 | Broker 3 | Broker 1 | Broker 3, Broker 1 |
- 만약 Broker 1이 다운되면:
- P0의 새로운 리더: Broker 2
- P2의 새로운 리더: Broker 3
복제와 ISR의 장점
- 데이터 안정성
- 리더 장애 시에도 팔로워 데이터를 이용하여 복구 가능
- 높은 가용성
- 클러스터 내의 다른 브로커가 요청을 처리하도록 빠르게 전환
- 확장성
- 복제를 통해 높은 읽기 성능과 확장성을 제공
정리
- 브로커는 데이터를 저장하고 관리하는 서버
- 복제는 데이터 안정성을 위해 데이터를 여러 브로커에 복사
- ISR은 리더와 동기화된 복제본 집합으로, 데이터 쓰기 성공 여부를 판단하는 기준
반응형