- 과도하게 읽기/쓰기 요청이 집둥되게 되는 Key를 의미한다.
- 해당 Key의 접근으로 인해 Storage(DB, Cache) 성능 저하가 발생하게 된다.
문제 상황
Cache Server의 최대 성능은 100,000 TPS라고 가정한다.
API Server로 부터 A Key에 대한 요청이 150,000개가 발생한다면, Cache Server에 해당 Key가 존재하지만 서버 부하가 높아져 응답할 수 없어 Timeout이 발생하고 50,000 개의 요청은 DB Server로 보내지게 된다.
Hot Key에 대한 일반적인 해결책
- Query Off (Read From Secondry)
- Read Replica를 여러 개 생성해두고 요청을 나누어 처리한다.
- Write는 Primary, Read는 Secondary를 사용해서 Read의 부하를 줄인다.
- Local Cache
- API Server 내에서 특정 Key에 대한 Value를 캐시해두고 응답한다.
- 데이터가 변경되었을 때, 이를 통지 받는 메커니즘이 필요하다.
- 변경 통지가 없다면, TTL이 끝날 때까지 데이터의 불일치가 발생한다. -> Client-Side Caching을 사용해서 해결할 수 있다.
- Multiple Write And Read From One
- Hot Key를 여러 Server에 저장하고 요청을 나누어 처리하며, Update 가 발생 시 여러 Server 전부를 Update한다.
'DB' 카테고리의 다른 글
[DB] 문자열 데이터 타입에 글자(한글) 수 제한하기 (0) | 2023.07.29 |
---|---|
[DB] 정규화 (0) | 2022.12.15 |
[DB] MySQL (0) | 2022.12.08 |
[DB] MySQL vs PostgreSQL (0) | 2022.11.19 |