The anomaly it fixes
Imagine a user reads a value from a fresh follower, then reads again and lands on a more lagged follower that has not yet applied the change. The value appears to go backward in time. This is deeply confusing, like watching a comment vanish after you saw it.
Monotonic read consistency guarantees that if a user reads a value, every later read returns that value or a newer one, never an older one.
How to provide it
The simplest approach is to ensure each user always reads from the same replica, rather than being load balanced randomly across followers.
- Pick the replica by hashing the user id, not the request, so a user sticks to one follower.
- If that replica fails, the user must be carefully rerouted to one at least as fresh.
This is a weaker guarantee than read after write. It does not promise you see the latest write, only that you never see time run backward.
Key idea
Monotonic reads stop a user from seeing data move backward by keeping their successive reads on a replica that never gets staler.