Kafka Producer acks
Kafka Producer acks
카프카 프로듀서는 카프카 클러스터에 얼마나 신뢰성있게 데이터를 저장할 것인지 ack 옵션을 선택하여 지정할 수 있다. 카프카 프로듀서는 acks옵션으로 0,1,all(-1) 을 가질 수 있다. 파티션의 복제 개수가 1인 경우에는 데이터 복제가 일어나지 않기 때문에 acks옵션이 크게 중요하지 않다. 다만 복제 개수가 2개 이상일 때문 데이터 복제가 일어나기 때문에 acks옵션이 데이터 저장에서 중요한 역할을 한다.
acks가 0인경우 프로듀서가 리더 파티션으로 데이터를 전송한 후에 제대로 저장이 되었는지 확인하지 않고 저장이 되었다고 가정하는 것이다. 이는 리더 파티션으로 부터 데이터 저장 확인 응답을 받지 않기 때문에 빠르지만 데이터가 제대로 저장이 안되어있는 경우 재 발송을 하지 않기 때문에 문제가 생길 수 있고, 해당 데이터가 몇번째 오프셋에 저장되었는지에 대해 알 수 없다.
acks가 1인경우에 프로듀서는 데이터가 리더 파티션에 제대로 저장되었는지만 확인한다. 그 결과 데이터가 저장 된 후 몇번째 offset을 가지는지, 데이터가 유실되었는지 확인 할 수 있고 만약 유실되었다면 retries 옵션 값에서 설정한 만큼 다시 보내는 작업을 수행할 수 있다. 다만 acks가 0일때 만큼 빠르지는 않다.
acks가 all 이나 -1인경우에는 데이터가 리더파티션 뿐만 아니라 팔로워 파티션에서 데이터가 저장되었는지도 확인한다. 그렇기 때문에 느리다는 단점이 있다만 안전하다. 이렇게 acks가 all인 경우 ISR 설정값도 중요하다. min.insync.replicas 옵션은 ISR에서 데이터가 제대로 저장되었다고 승인하는 최소한의 파티션 개수이다. 즉 해당 옵션값이 2이라면 ISR중 최소 2개 이상의 파티션에 데이터가 적재되어있다는 의미이다. acks가 all일경우 2개 이상의 파티션에 데이터가 적재되어 있어야지 프로듀서가 데이터가 제대로 저장되어있음을 인지한다.
출처:
아파치카프카 애플리케이션 프로그래밍 with 자바
카프카, 데이터 플랫폼의 최강자
Leave a comment