0
AI 요약
이 글은 AI가 원문을 분석하여 핵심 내용을 요약한 것입니다.
이 게시물은 급증하는 트래픽을 안정적으로 처리하기 위해 Redis 기반 벌크액션 서버에 논리적 파티셔닝과 Coordinator 기반 Partition별 독립 스케일링을 적용한 과정을 다룹니다.
문제
- 단일 Ready Queue 공유로 인해 대량 TaskGroup이 큐를 점유하며 다른 요청이 지연되는 HOL Blocking 발생
- 인스턴스 단위 스케일링은 Worker 수가 불필요하게 크게 점프해 비효율 유발
해결
- 같은 Redis 안에서 키스페이스를 prefix로 분리해 Partition별 Queue를 구성하는 논리적 파티셔닝 적용
- taskGroupID를 기준으로 hash(taskGroupID) % N 라우팅하여 같은 TaskGroup이 특정 Partition에만 배치되도록 설계
- Partition마다 Consumer-Worker 파이프라인을 독립 운영하고, Coordinator가 Partition 부하를 관찰해 각 Partition의 Worker 수를 독립적으로 조절
- Consumer 재시작 시 Worker 수 복구를 위해 Partition별 checkpoint을 Redis에 저장하여 수렴 지연 완화
효과 및 운영 포인트
- 10만 건 기준 처리 시간이 25분에서 4분으로 84% 단축
- Partition 간 간섭이 줄어 HOL Blocking이 해소되고, Worker는 부하에 따라 최대 8배까지 자동으로 증감
- Partition 수는 설정 시점에 고정되며, Hot Partition 가능성과 물리적 파티셔닝 전환 기준은 향후 과제로 남김