Loading…
Loading…
Functional: put(key, value) and get(key), nothing fancier — no queries, no joins.
Non-functional: must survive individual node failure with no data loss; must scale horizontally (adding nodes increases capacity); tunable consistency (this is the classic CAP-theorem discussion question).
Hinted handoff: if a replica node is temporarily down during a write, another node stores the write on its behalf with a "hint" to forward it once the original node recovers — keeps writes succeeding without waiting for the failed node. Read repair / anti-entropy: on reads, if replicas disagree, the newest version (by timestamp or vector clock) is returned and the stale replicas are updated in the background — this is how the system heals inconsistencies over time without a separate repair process.
Gossip-based failure detection: nodes periodically exchange "I'm alive" heartbeats with a few random peers, and a node is marked suspect after missing enough heartbeats, then dead after a further timeout — this avoids a single point of failure in the failure-detection mechanism itself (no central health-check service to go down).
Practice this live with an AI interviewer
Starts a System Design mock interview pre-filled with this problem — you can edit the brief before starting.