-
카프카 producer - 확실한 도착 보장을 위한 옵션 설정Web, Server, Cloud 2023. 7. 22. 08:09
확실한 도착 보장을 위한 옵션
delivery.timeout.ms ≥ request.timeout.ms + linger.ms
Kafka에서 delivery.timeout.ms는 프로듀서가 메시지를 브로커에 성공적으로 전달하는 데까지 기다리는 최대 시간을 설정하는 속성이다.
반면에 request.timeout.ms는 프로듀서가 브로커로부터 응답을 기다리는 최대 시간을 설정하는 속성이다.
linger.ms는 프로듀서가 메시지를 배치로 모아서 보내는 데 사용되는 시간이다.
메세지가 전달될 때 까지 기다리는 최대 시간 (delivery.timeout.ms) 을 응답을 기다리는 최대 시간 (request.timeout.ms) 과 새로운 메세지를 보내기 위해 배치로 메세지를 모으는 최대 시간 (linger.ms) 을 더한 값보다 크거나 같게 설정하여 메세지가 확실하게 브로커에 도착할 수 있도록 보장하는 것이다.
그러니까, 이렇게 옵션을 설정하면 적어도 카프카 producer 에 적용된 옵션때문에 브로커로 메세지가 전달되지 못하고 실패하는 경우는 없다는 것을 보장할 수 있다.
전체적으로 이점을 살펴보자.
- 확실한 전달 보장: delivery.timeout.ms를 충분히 크게 설정함으로써, 프로듀서가 메시지를 브로커로 안전하게 전달할 수 있도록 보장한다. 메시지가 전달되지 않으면, 해당 시간이 경과할 때까지 재시도할 수 있도록 한다.
- 배치 처리의 영향 줄이기: linger.ms는 프로듀서가 메시지를 배치로 모으는 시간을 의미한다. 만약 delivery.timeout.ms가 request.timeout.ms + linger.ms보다 작으면, 프로듀서가 배치 처리를 마치기도 전에 메시지 전달이 실패할 수 있다.
- 네트워크 지연 고려: 네트워크 상황에 따라 메시지 전달이 지연될 수 있다. 따라서 프로듀서가 브로커로부터 응답을 받는데 충분한 시간을 주는 것이 중요하다.
- 확장성: Kafka 클러스터는 많은 토픽과 파티션으로 구성될 수 있으며, 처리량이 많을 수 있다. 따라서 request.timeout.ms보다 큰 delivery.timeout.ms를 설정하여 시스템의 확장성을 향상시킬 수 있다.
반응형'Web, Server, Cloud' 카테고리의 다른 글
OSI 7 Layers vs TCP/IP (0) 2022.06.23 URI vs URL (0) 2022.06.21 브라우저에 주소를 적으면 일어나는 일 (0) 2022.06.20 ubuntu 20.4 mongodb 설치 (0) 2022.06.17 gcloud 브라우저 없이 로그인 하기 (0) 2022.06.17