min.insync.repllicas, acks옵션, 그리고 리더 파티션 승급
125
작성한 질문수 9
안녕하세요. 강의 잘 듣고 있습니다.
아래 상황을 가정하고 질문 드립니다.
replication factor : 3
acks옵션 : -1
min.insync.replicas : 2
리더 파티션을 가지고 있던 브로커에서 장애가 발생하였고, 프로듀서는 정상적으로 적재되었다고 응답을 받은 상황이라고 가정하겠습니다.
여기서 리더 파티션으로 승급되는 기준은 acks와 min.insync.replicas옵션에 의해 데이터를 복제받은 파티션일 것 같은데요. 제 생각에 가장 simple하게 승급시키는 기준이 팔로워 파티션 중 offset이 가장 큰 팔로워 파티션을 승급시키는 방법인 것 같은데요. 카프카에서는 어떤 기준으로 팔로워 파티션을 리더로 승급시키는지 궁금합니다.
답변 1
0
안녕하세요!
리더 파티션 1개, 팔로워 파티션 2개가 존재할 때, 팔로워를 승급시키는 기준은 여러가지가 있습니다. ISR에 포함된 팔로워 파티션(브로커)인지, replica가 잘 되고 있는지가 가장 중요할 것 같습니다. 관련 코드는 다음과 같습니다.
object PartitionLeaderElectionAlgorithms {
def offlinePartitionLeaderElection(assignment: Seq[Int], isr: Seq[Int], liveReplicas: Set[Int], uncleanLeaderElectionEnabled: Boolean, controllerContext: ControllerContext): Option[Int] = {
assignment.find(id => liveReplicas.contains(id) && isr.contains(id)).orElse {
if (uncleanLeaderElectionEnabled) {
val leaderOpt = assignment.find(liveReplicas.contains)
if (leaderOpt.isDefined)
controllerContext.stats.uncleanLeaderElectionRate.mark()
leaderOpt
} else {
None
}
}
}
... 생략상기 코드는 실제 카프카 코드로 오프라인이 발생했을 때 리더를 선정하는 코드로 질문에 대한 답이 될 것 같네요!
consume 이후 lag가 줄어들지 않음
0
75
2
안녕하세요. 강의의 카프카 버전과 현재 시점의 카프카의 차이점 문의 드립니다.
0
118
2
멱등성 프로듀서 retries 관련 질문입니다.
0
99
2
채팅 서비스 개발 시 주의점이 있을까요?
0
100
2
충분히 큰 파티션 생성시 궁금증이 존재합니다.
0
88
2
KTable 키가 없는 레코드 처리
0
73
2
컨슈머 테스트 코드 작성
0
94
2
리밸런스 onPartitionRevoked이 필요한 상황
0
74
2
카프카 클러스터에서 감당 가능한 파티션(레플리카) 수 문의
0
120
2
reset offset 질문
0
77
2
KStreamJoinKTable 실행시 오류
0
78
2
auto.commit.interval.ms 옵션 관련 질문 드립니다.
0
142
2
파티션, 컨슈머 그룹, 컨슈머 관련 질문
0
117
1
java, kotlin
0
130
2
shutdownThread 에 대한 문의 입니다.
0
155
2
zookeeper실행시 오류가 발생합니다.
0
271
2
커스텀 소스 커넥터에서 Thread.sleep (1000) 은 왜 하는거에요?
0
153
2
처리량을 늘리기 위해서 파티션을 늘리고 컨슈머를 늘려야한다고 설명하셨는데요
0
181
3
파티션 개수와 컨슈머 개수의 처리량 관련 질문
0
164
2
동영상 및 이미지 처리 관련 문의 드립니다.
0
226
2
주키퍼 없이 사용 문의 드립니다.
0
303
1
kafka 를 띄우니 오류가 발생하고 종료합니다.
0
281
3
zookeeper 실행시 오류 .. 무엇을 해야 할까요?
0
220
2
파티션 추가로 해결할 수 있지만 늘어난 파티션은 줄일 수 없지 않나요?
0
192
2





