すべてのトラフィックを1つのキーに集めるのをやめます:ホットキーをNサブキー(シャード化カウンター)に分割し、重複した読み取りを束ね、ローカルキャッシュから提供し、書き込みをバッチ化して1行がリクエストごとに更新されないようにします。 バズった投稿の単一の「いいね」カウンターは5万書き込み/秒を受けえます。すべてのトランザクションが同じロックを奪い合うので、1行が直列化のボトルネックになります。
1つの競合行の代わりにファンアウト
text
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)
