프로듀서와 acks (Producer & acks)
프로듀서는 보낸 메시지가 어디까지 저장됐을 때 '성공'으로 칠지 고를 수 있습니다. acks=0 은 응답을 기다리지 않아 가장 빠르지만 브로커가 받았는지도 모르고, acks=1 은 리더만 저장하면 성공이라 리더가 죽으면 잃을 수 있으며, acks=all 은 복제본까지 저장돼야 성공이라 가장 안전하고 가장 느립니다.
01 개념 한눈에 보기
Interactive Step-by-Stepacks=0 은 메시지를 보내고 곧바로 다음 일을 합니다. 응답을 아예 기다리지 않습니다.
acks=1 은 리더 브로커가 자기 로그에 썼다는 응답까지 기다립니다.
acks=all 은 리더뿐 아니라 따라잡은 복제본(ISR)까지 저장돼야 성공으로 칩니다.
02 쉽게 이해하기
For Everyone편지를 부치는 방식과 같습니다. 우체통에 넣고 뒤도 안 돌아보는 것(acks=0), 접수증만 받는 것(acks=1), 상대가 받았다는 확인까지 기다리는 것(acks=all) — 확신이 커질수록 오래 걸립니다.
acks 는 '언제 성공이라고 답할지'를 정하는 값입니다.
0 은 응답 자체를 안 기다리므로 네트워크가 끊겨도 모릅니다.
1 은 리더 브로커의 저장까지만 확인하므로, 팔로워가 복제하기 전에 리더가 죽으면 그 메시지는 사라집니다.
all 은 ISR(따라잡은 복제본)까지 저장돼야 응답하므로 브로커 하나가 죽어도 남습니다.
속도와 안전 중 무엇을 살지 데이터 성격에 맞춰 고릅니다.
- –로그·메트릭처럼 조금 잃어도 되는 데이터와 결제처럼 잃으면 안 되는 데이터의 설정 분리
- –처리량·지연·내구성 트레이드오프 조정
03 자주 묻는 질문
FAQ프로듀서와 acks (Producer & acks)란 무엇인가요?+
프로듀서는 보낸 메시지가 어디까지 저장됐을 때 '성공'으로 칠지 고를 수 있습니다. acks=0 은 응답을 기다리지 않아 가장 빠르지만 브로커가 받았는지도 모르고, acks=1 은 리더만 저장하면 성공이라 리더가 죽으면 잃을 수 있으며, acks=all 은 복제본까지 저장돼야 성공이라 가장 안전하고 가장 느립니다.
프로듀서와 acks (Producer & acks)은(는) 어디에 사용하나요?+
로그·메트릭처럼 조금 잃어도 되는 데이터와 결제처럼 잃으면 안 되는 데이터의 설정 분리, 처리량·지연·내구성 트레이드오프 조정
프로듀서와 acks (Producer & acks)를 쉽게 비유하면?+
편지를 부치는 방식과 같습니다. 우체통에 넣고 뒤도 안 돌아보는 것(acks=0), 접수증만 받는 것(acks=1), 상대가 받았다는 확인까지 기다리는 것(acks=all) — 확신이 커질수록 오래 걸립니다.
