카프카는 분산 시스템으로 서버의 물리적 장애가 발생하더라도 높은 가용성을 보장하기위해 리플리케이션 기능을 제공한다. 리플리케이션(복제)는 토픽 자체를 복제하는 것이 아닌 토픽을 이루는 Partition 자체를 복제하는 것을 의미한다.
1. 리플리케이션 팩터 (Replication Factor)
- 카프카는 Replication Factor 옵션으로 몇개를 복제할 것이지 설정 가능
- 기본값은 1
- config/server/properties 파일에서 default.replication.factor 의 값을 수정
- topic 마다 replication facotr 값을 줄 수 있음
- 운영중에도 변경 가능
- 클러스터내에 모든 broker 동일하게 설정
2. 리더(leader), 팔로워(follower)
- 리더는 모든 읽기 쓰기를 수행하며, 팔로워는 리더에 있는 데이터를 주기적으로 가져오는 역할만 수행
- 리더와 팔로워 모두 저장된 데이터 순서가 일치, 동일한 오프셋과 메시지들을 갖게됨
- 리더 브로커가 죽으면 팔로워가 수행함
- 단점 : Replication Factor 옵션의 숫자 배수만큼 토픽 사이즈가 필요. 예를 들어 Replication Factor 값이 2이면 2배로 topic 사이즈 필요 , 브로커의 리소스 증가
3. ISR (In Sync Replica)
- 리더와 팔로워 데이터 정합성을 보장하기 위해 ISR 개념 도입
- 현재 Replication 되어 있는 Replication Group을 의미
- ISR 그룹 안에 있는 브로커들만 리더의 자격을 가짐, 리더가 주기적으로 팔로워가 데이터를 가져가는지 체크하고 있다가 일정 주기만큼 요청이 안오면 자체 추방함.
참고 문헌 : 카프카, 데이터 플랫폼의 최강자 실시간 비동기 스트리밍 솔루션 Kafka의 기본부터 확장 응용까지
'Programming > Kafka' 카테고리의 다른 글
[kafka] Producer Connection Config (0) | 2020.04.19 |
---|---|
[kafka] 데이터 모델 토픽 파티션 오프셋 (0) | 2020.04.14 |
[kafka] 카프카 디자인 (0) | 2020.04.13 |