IT 삽질기

Kafka Acks 본문

BigData/Kafka

Kafka Acks

화이팅빌런 2021. 6. 8. 22:36

Kafka Acks

Kafka acks 옵션은 프로듀서가 kafka에 데이터를 전달하고 데이터를 잘 받았는지 확인하는 옵션이라고 생각하면 되는데, 옵션에 따라 확인하는 방법이 달라진다.

 

Kafka에서 제공하는 Acks 옵션은 3가지로 다음과 같다.

- 0

- 1

- all(-1)

 

하나씩 살펴보도록 하자.

 

acks 0

ack 0옵션은 프로듀서가 데이터를 전달한 후 확인하지 않는 것이다.

리더 파티션은 데이터가 저장된 이후 몇번째 오프셋에 저장되는지 리턴하게 되는데, 0으로 설정하면 이를 받지 않고 전달만 하게 된다.

이렇게 지정하는 경우 retries 옵션도 무의미하게 되며 데이터 유실이 발생하는 경우가 발생할 수 있지만 속도는 훨씬 빨라진다. 데이터보다 속도에 중점을 두는 경우 사용할 수 있는 옵션이다.

acks 1

ack를 1로 설정하는 경우 데이터를 전달하고 리더 파티션에 정상적으로 적재되었는지를 확인하는 옵션이다.

리더 파티션에 적재가 되었다는 응답을 받지 못하면 정상적으로 전달되었다고 판단하지 않으며, 데이터를 재전송하게 된다. 그렇다고 데이터 유실이 발생하지 않는 것은 아닌데, 리더 파티션으로 데이터를 전달한 직후 팔로워 파티션과 데이터가 동기화되기 전에 리더 파티션에 문제가 발생하면 데이터의 유실이 발생할 수 있다.

acks all(-1)

acks를 all 또는 -1로 설정할 수 있는데 같은 동작을 한다.

리더 파티션과 팔로워 파티션에 데이터가 모두 적재되었는지를 확인하는 옵션으로 당연히 0, 1 옵션을 사용하는 경우보다 속도가 느리지만 그만큼의 안정성을 보장하게 된다. 데이터 유실이 발생하는 경우를 생각해보면 리더 파티션과 팔로워 파티션 모두에 장애가 발생하는 경우인데, 이는 매우 드문 일이기 때문에 고려하지 않는다.

 

'BigData > Kafka' 카테고리의 다른 글

Kafka 멱등성 producer  (0) 2021.07.11
Kafka consumer와 commit  (0) 2021.06.28
Kafka-manager을 이용한 Partition reassign  (0) 2021.06.05
Kafka scale out  (0) 2021.06.01
Kafka ISR(In-Sync-Replicas)  (0) 2021.05.29
Comments