인프런 커뮤니티 질문&답변

돈가스날다님의 프로필 이미지

작성한 질문수

[아파치 카프카 애플리케이션 프로그래밍] 개념부터 컨슈머, 프로듀서, 커넥트, 스트림즈까지!

ISR(In-Sync-Replicas)

unclean.leader.election.enable=false에 대해서

작성

·

427

0

안녕하세요. 강의 중 궁금한 점이 있어 질문 드립니다.

 

리더 파티션 브로커에 장애가 발생했을 때, ISR 상태의 팔로워 파티션을 가지는 브로커가 없는 상황에서

unclean.leader.election.enable=false로 설정할 경우, 

1.

리더 파티션 브로커의 복구를 기다리는 동안 중단된다라고 하셨는데, 여기서 중단된다는 말이

해당 토픽으로 프로듀서의 데이터 쓰기와 컨슈머의 데이터 읽기가 모두 불가능해진다는 뜻인가요?

 

2.

만약 프로듀서가 데이터를 쓰는게 불가능해진다면, 예를 들어 상품 구매 이벤트 발생으로 거래 내역 데이터가 계속 실시간으로 발생하면 이런 데이터는 그동안 어디에 두어야 하나요?

(토픽이 '나 복구될 때 까지 데이터 안받을래' 이렇게 선언하더라도, 소스에서는 계속 새로운 데이터가 생성되면 그 데이터를 유실하지 않기 위해 어떻게 할지가 궁금합니다)

답변 1

6

데브원영 DVWY님의 프로필 이미지
데브원영 DVWY
지식공유자

돈가스날다님, 질문주신 내용 답변드립니다.

1) unclean.leader.election.enable=false로 설정할 경우 쓰기와 읽기가 중단되나요?
네 맞습니다.

2) 프로듀서의 전송이 불가하다면 그동안 생성된 데이터는 어떻게 처리하나요?
비즈니스 요구사항에 따라 다르지만 일반적으로 두가지 방식이 있을 것입니다. 첫번째는 의도적인 유실입니다. 이 경우는 데이터의 중요도가 낮을 경우 사용합니다. 두번째는 정상적은 카프카 클러스터로 데이터를 전송하는 것입니다. 데이터의 중요도가 높을 경우에는 카프카 클러스터를 하나만 사용하는 것이 아니라 DR(disaster-recovery)구성으로 최소 2클러스터를 운영하는 것이 일반적입니다. 그러므로 하나의 클러스터에 장애가 발생하여 정상적으로 데이터 처리가 불가능할 경우에는 프로듀서가 정상동작하는 다른 클러스터로 fail-over하여 데이터 처리를 지속적으로 할 수 있는 구성으로 만드는 것이 좋습니다.