Jump to a problem, path or page
Jump to a problem, path or page
Updates as you edit. Run the review to record it; passing every check completes the problem.
Not yet passed: Client responsibility
Add Client and define its responsibility.
Not yet passed: Load balancer responsibility
Add Load balancer and define its responsibility.
Not yet passed: Coordinator responsibility
Add Coordinator and define its responsibility.
Not yet passed: Storage node responsibility
Add Storage node and define its responsibility.
Not yet passed: Client → Load balancer
A directed path must connect Client to Load balancer. Arrows represent requests, dependencies, or event flow.
Not yet passed: Load balancer → Coordinator
A directed path must connect Load balancer to Coordinator. Arrows represent requests, dependencies, or event flow.
Not yet passed: Coordinator → Storage node
A directed path must connect Coordinator to Storage node. Arrows represent requests, dependencies, or event flow.
Not yet passed: With N = 3, which setting guarantees a read sees the latest acknowledged write?
Not yet passed: What happens to a W = 3 write when one of three replicas is down?
Not yet passed: How does a replica that missed writes catch up?
Not yet passed: API and data model notes
Write at least 80 characters describing concrete operations, inputs, outputs, state and errors. This check measures completeness, not semantic correctness.
Not yet passed: Trade-offs and failure cases
Write at least 80 characters about alternatives, failure handling and edge cases. Review the reasoning yourself using the reference discussion.
Rule-based educational feedback. Notes are checked by length only; topology checks confirm directed reachability. These checks do not validate semantics, latency, reliability or every valid design.
Place keys on a consistent-hash ring, replicate each to N nodes, and let a coordinator succeed a write after W acknowledgements and a read after R answers, repairing divergent replicas in the background. Each node owns many virtual-node tokens on a hash ring; a key's preference list is the next N distinct physical nodes clockwise from its hash. Any node can coordinate: it sends a write to all N replicas and acknowledges the client once W have persisted it, tagging the value with a version vector. A read asks R replicas, returns the newest version, and repairs replicas that answered with older versions. When a replica is unreachable, another node stores a hint and replays it on recovery; periodic Merkle-tree comparison fixes remaining drift.
There is no single correct diagram. Explain where yours differs and which requirement justifies it.