Backend
Cache Stempede 알아보기
양글렛
2023. 10. 28. 00:48
728x90
Cache Stempede ?
캐시 만료 시점에 많은 요청이 동시에 올 경우 DB 에 부하를 주는 현상을 말한다.
당연하지만 Hot Key 에서 주로 발생한다.
ex) Redis Cache 사용중에 TTL 로 인해 만료된 데이터에 1000건의 요청이 동시에 온다면 RDB 에 1000건의 READ 가 발생하고
그 이후 Redis 에 1000건의 WRITE 가 발생하게 된다.
간단하게 여러 해결 방법 소개
1. 한 개의 요청만 처리할 수 있도록 한다.
-> 디바운스, Lock 등으로 DB 요청이 한 번만 갈 수 있도록 해준다.
* 단점 : 처리되는 한 개의 요청 외의 요청들의 레이턴시가 증가하면서 일시적인 병목이 생길 수 있다.
2. 키를 더 상세하게 나누기
-> 키 전략을 더 상세하게 가져가면서 부하를 줄이는 방법 = Hot Key 가 아니게 만든다(?)
* 단점 : 캐시 히트율을 낮추게 된다.
3. Cron Job 활용
-> Cron Job 을 만들어 만료되기 전에 갱신해준다.
* 단점 : 별도의 리소스가 필요하다. (서버, 작업 등)
4. Probabilistic Early Expriation(PER) 알고리즘을 활용
-> 확률적 알고리즘을 이용하여 만료되기 전에 갱신해준다.
* 단점 : 적절한 확률을 설정하지 못할 경우 이슈가 생길 수 있다.
5. 지터를 활용 ,, ? ,,
728x90