리밸런싱 시, 메시지 중복 처리 문제
1058
19 câu hỏi đã được viết
안녕하세요, 수업 잘 듣고 있습니다!
카프카 리밸런싱에 대해 수업을 들었습니다.
그런데 리밸런싱시 메시지를 중복 컨슘할 수 있을것 같은 생각이 들어서 문의드려요!
예를들어 하나의 토픽에 파티션 2개가 있고
하나의 컨슈머그룹에 컨슈머 2개가 각 파티션에 연결되어 동작하고 있는 상황입니다.
1번 컨슈머가 1번 파티션에 연결되어 있고
2번 컨슈머는 2번 파티션에 연결되어 있습니다.
1번 컨슈머가 1번 파티션에 들어있는 1번 레코드를 처리하는 도중, 장애가 나서 죽었습니다.
2번 컨슈머는 이를 감지하고 1번 파티션에 리밸런싱 되었습니다.
그리고 처리되지 못한 1번 레코드를 읽어서 처리하기 시작했습니다. 그러던 도중에 1번 컨슈머가 살아나서 다시 리밸런싱이 되어 1번 파티션으로 예전과 같이 연결되었습니다.
1번 레코드는 아직 커밋되지 않은 상태여서 1번 컨슈머는 1번 레코드를 읽었습니다. 그리고 1번 레코드를 처리하기 시작하여 동시에 1번 컨슈머와 2번 컨슈머가 1번 레코드를 처리하는 일이 벌어졌습니다.
이런 일이 발생할 수 있는걸까요?
혹시 이런 경우 어떻게 하면 중복처리를 막을 수 있을까요?
아니면 혹시 오프셋이 컨슈머 그룹기준이라서 1번 레코드를 컨슈머 2번이 읽고 '처리중' 이라면 1번 컨슈머가 다시 1번 파티션에 연결됐을 때 1번 레코드를 polling 하지 않게 될까요?
Câu trả lời 1
0
안녕하세요!
말씀대로 컨슈머가 데이터를 처리하고 커밋하기 직전에 죽는다면 데이터가 중복 처리될 가능성이 있습니다. 그렇기 때문에 최종적으로 처리되는 데이터의 중복을 막으시려면 멱등성 동작을 수행하시는 것이 가장 좋습니다. 여러번 동일 레코드가 오더라도 결과는 동일하게 처리하게 로직을 짜는 것이죠.
카프카 ISR 개념 부분 질문
0
479
1
카프카 커넥터를 두가지 사용하는 이유
0
896
1
브로커, 토픽, 파티션관계
0
674
1
커넥트(소스), 커넥트(싱크)
1
531
1
카프카 isr 질문 있어요
0
325
1
파티션 질문 있어요
0
385
1
명령어 관련 문의드립니다.
0
422
2
토픽의 레코드가 라운드로빈으로 배정되는 방식 질문있습니다.
0
421
2
레코드에 json 형태의 데이터 넣는법 질문
0
427
2
카프카 도커로 실행
1
436
1
CCDAK 질문입니다!
0
1344
1
스트림즈 조인에 관련해서 질문드립니다.
0
299
1
min.insync.replicas에서 설정값만큼의 브로커 다운시
0
252
1
브로커로 메시지를 보낼때 null값인 경우
0
461
1
zookeeper 실행시 에러
1
781
1
온프레미스 환경 설치에 대해 질문있습니다.
0
347
1
강사님, Idempotence / transaction의 차이가 궁금합니다.
0
367
1
브로커 장애 발생시 질문
0
329
1
에러 핸들링과 관련하여 질문 드립니다
0
308
1
토픽 생성시 파티션이 배치되는 방법
0
351
1
질문있습니다!
0
133
1
카프카 스트림즈 에러 핸들링 질문 드립니다
0
391
1
카프카 클러스터 질문이 있습니다.
0
176
1
현재 kafka stable 버전이 3.3.1이라고 되어 있습니다.
0
411
1

