티스토리 뷰

kafka 프로듀서를 사용하면서 데이터가 소실되는 현상이 발생하여 이를 잊지 않고자 기록합니다.

단일 브로커에서의 데이터 소실

제가 사용하던 카프카 환경은 단일 브로커에 클러스터링이 되어있지않은 카프카였으며 해당 카프카 서비스가 알 수 없는 이유로 종료되었다가 다시 켜졌으며 이 중간에 프로듀싱을 하던 서비스가 보낸 데이터가 카프카에 쌓이지 못하고 사라지는 현상이 발생하였습니다.

해결책

이 데이터 소실 문제를 해결하고자 찾아 보았던 방법으로는

1. Kafka 클러스터링

Kafka 클러스터링 기능을 이용하여 3개 이상의 Broker로 이루어진 하나의 클러스터로 Kafka를 운영하는 방법입니다.
이 경우에 3대의 물리적인 서버를 브로커로 이용하는 것이 바람직합니다.

2. 프로듀싱에 실패한 데이터를 보관했다 다시 시도하는 방법

프로듀싱 서비스에서 자체적으로 인 메모리 큐 또는 DB, 파일 등으로 프로듀싱에 실패한 데이터를 임시로 저장하였다가 일정 주기동안 재시도하는 로직을 추가한 후 재시도를 통한 프로듀싱 성공 시 임시 데이터를 삭제하는 방법

 

저의 경우 클러스터링을 하기에는 신규 서버 증성이 여의치 않아 "2"번 해결책을 진행하였습니다.

항상 Kafka를 사용할 경우 데이터 소실에 유의하여야 한다는 것을 알게되었습니다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함