Przestań kierować cały ruch do jednego klucza: podziel gorący klucz na N sub-kluczy (shardowane liczniki), scalaj duplikaty odczytów, serwuj z lokalnego cache i buforuj zapisy, aby jeden wiersz nie był aktualizowany przy każdym żądaniu. Pojedynczy licznik „polubień" na wiralowym poście może przyjąć 50 tys. zapisów/s — jeden wiersz staje się wąskim gardłem serializacji, gdy każda transakcja walczy o tę samą blokadę.
Fan-out zamiast jednego rywalizowanego wiersza
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)
