티스토리 뷰
kafka 프로듀서를 사용하면서 데이터가 소실되는 현상이 발생하여 이를 잊지 않고자 기록합니다.
단일 브로커에서의 데이터 소실
제가 사용하던 카프카 환경은 단일 브로커에 클러스터링이 되어있지않은 카프카였으며 해당 카프카 서비스가 알 수 없는 이유로 종료되었다가 다시 켜졌으며 이 중간에 프로듀싱을 하던 서비스가 보낸 데이터가 카프카에 쌓이지 못하고 사라지는 현상이 발생하였습니다.
해결책
이 데이터 소실 문제를 해결하고자 찾아 보았던 방법으로는
1. Kafka 클러스터링
Kafka 클러스터링 기능을 이용하여 3개 이상의 Broker로 이루어진 하나의 클러스터로 Kafka를 운영하는 방법입니다.
이 경우에 3대의 물리적인 서버를 브로커로 이용하는 것이 바람직합니다.
2. 프로듀싱에 실패한 데이터를 보관했다 다시 시도하는 방법
프로듀싱 서비스에서 자체적으로 인 메모리 큐 또는 DB, 파일 등으로 프로듀싱에 실패한 데이터를 임시로 저장하였다가 일정 주기동안 재시도하는 로직을 추가한 후 재시도를 통한 프로듀싱 성공 시 임시 데이터를 삭제하는 방법
저의 경우 클러스터링을 하기에는 신규 서버 증성이 여의치 않아 "2"번 해결책을 진행하였습니다.
항상 Kafka를 사용할 경우 데이터 소실에 유의하여야 한다는 것을 알게되었습니다.
'Kafka' 카테고리의 다른 글
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 람다함수
- 람다
- coordinate system
- double free
- LambdaFunction
- rotator
- Lambda
- bug
- unrealengine
- UE4
- UE5
- c++
- c++11
- C
- Trouble shooting
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함