High concurrency counters without sharding
Our solution has three major components:
- A ‘permanent’ count, stored in the datastore.
- A ‘current’ count, stored in memcache.
- A task queue task that updates the datastore with the total from memcache.