TIL
kafka를 통한 대규모트래픽 및 동시성 제어
stdio.han
2025. 4. 6. 15:58
✅ 1단계: Consumer 단일 스레드로 제한
기본 전제: 정합성 최우선이라면 동시에 여러 consumer thread가 처리하지 않도록 concurrency = 1
- 💡 이렇게 하면 Consumer는 Kafka Partition 단위로 순서대로 처리하므로 race condition 없이 안전.
- 단점: 처리 속도가 느릴 수 있음.
테스트
✅ 2단계: Partition 전략 활용한 멀티 Consumer 처리
처리량 늘리면서도 정합성 지키려면?
Kafka는 기본적으로 같은 key는 같은 Partition에 들어감
→ 그러니 senderUserId를 key로 설정해 메시지를 Kafka에 보낼 때 지정해줘:
이렇게 하면:
- 같은 유저 ID끼리는 순서대로 처리 (→ 락 충돌 없음)
- 다른 유저들끼리는 동시에 송금 처리 가능 (→ 성능 up)
테스트