모든 트래픽을 하나의 key로 몰아넣는 것을 멈추십시오: hot key를 N개의 서브 key(sharded counter)로 나누고, 중복 read를 병합(coalesce)하며, 로컬 캐시에서 제공하고, write를 batch하여 한 row가 매 요청마다 업데이트되지 않게 하십시오. 바이럴 게시물의 단일 "좋아요" 카운터는 초당 5만 write를 받을 수 있습니다 — 모든 트랜잭션이 같은 lock을 두고 다투면서 한 row가 직렬화 병목이 됩니다.
하나의 경합 row 대신 팬아웃
50k inc/sec on post:123
│
hash(request) % N (split the key)
┌────────┬────────┬────────┬────────┐
▼ ▼ ▼ ▼ ▼
likes:123:0 :123:1 :123:2 :123:3 :123:4 ← sharded counters
└────────┴───┬────┴────────┴────────┘
▼
SUM on read = total (read fans in)
