티스토리 뷰
연말 발송량이 많아지면서 발송처리 후 처리 작업을 위한 토픽의 컨슈머 랙이 40,000건 기준으로 6시간 이상 처리가 안되는 이슈가 생겨 처리가 필요해 보였음. 이 정도도 처리 못하는건 문제가 있다고 판단.
해결 할 수 있는 방법이 몇 가지 있을듯?
컨슈머 처리 속도를 높인다.
1. 컨슈머 20개 <-> 토픽 20개 맞춰서 처리를 높인다. (확인해보니 토픽이 20개인데, 컨슈머는 3개인 상태로 동작하고 있음.)
- 아예 토픽을 좀 더 늘리는 방법도 고려해볼 수 있을 것 같다. 하지만 컨슈머 3개인 상태로 동작하는게 큰 문제로 보여, 이 부분 부터 해결하고 고려하기로하자.
2. 컨슈머의 비지니스 로직을 개선한다. (비지니스로직이 단건 씩 처리하도록 하는 부분이 많아 DB I/O가 부하가 많이 걸리도록 처리되고 있었음 - 캐시 사용 등.. 처리 방식)
3. 컨슈머 배치 처리 활성화
- 토픽의 목적이 후처리 작업이므로 실시간 처리보다는 대용량의 데이터를 빠르게 처리하는게 중요하다. 따라서 이 부분의 토픽은 배치처리 시킨다. 하지만 하나의 메시지 처리 중 예외가 발생하면 배치 처리에 문제 있으므로 에러처리를 추가해야 한다. 좀 복잡해질 수 있어 보임.
4. 비동기 처리?
- 순서보장할 필요없는 작업이므로 비동기 처리를 도입해도 괜찮을 것 같다.
프로듀서 처리 속도를 높인다?
- 현재 문제에서는 lag을 없애는게 우선이므로 프로듀서 튜닝은 필요없어보임. (이부분도 다쌓이는데 30분이상 걸려서 문제가 있어 보이지만, 비지니스 로직을 손대야 되는 부분이라 추후 개선해야겠다.)
기존 TPS는 얼마나 된거지? - 약 1.85 TPS
어떻게 해결할까?
1번 방법만 사용하여 일단 해결해보자. 개발계 테스트 진행 TPS가 얼마나 나올지 궁금.
'Data > Kafka' 카테고리의 다른 글
[kafka] 프로듀서의 내부 동작 원리와 구현 (0) | 2024.04.14 |
---|---|
Kafka 핵심기능 - 높은 처리량, 빠른 응답 속도, 안정성 (1) | 2024.03.23 |