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에 보낼 때 지정해줘:

kafka 메시지 생성할 때

 

이렇게 하면:

  • 같은 유저 ID끼리는 순서대로 처리 (→ 락 충돌 없음)
  • 다른 유저들끼리는 동시에 송금 처리 가능 (→ 성능 up)

테스트