🧠 Implemented ABD (non-blocking) and Blocking (lock-based) quorum protocols
⚙️ Python-based client–server architecture using TCP sockets
📊 Metrics: throughput, median & P95 latency for GET/PUT operations
🧪 Fault-injection experiments with client crash scenarios
🛠 Tooling: automated benchmarking + offline CSV analysis (pandas, NumPy)
Demonstrated that ABD consistently outperforms Blocking in throughput and latency under high concurrency
Showed earlier saturation in Blocking protocol due to lock contention and serialized updates
Quantified scalability impact of increasing replica count (N = 1, 3, 5) on quorum overhead
Exposed the true failure behavior of lock-based systems by modifying lock persistence after client crashes
Built complete replica servers and client libraries for both protocols
Implemented quorum reads/writes with versioned tags for correctness
Designed benchmarking framework supporting variable workloads and crash timing
Analyzed peak-load behavior at saturation (128 concurrent clients)
Representative Results (128 clients, 90% GET workload):
ABD (N=1): ~205 ops/s, lower GET/PUT latency
Blocking (N=1): ~80 ops/s, higher latency due to locking
After crash with persistent locks: Blocking throughput dropped to ~18 ops/s, while ABD remained stable
Distributed systems and cloud storage design
Consistency protocol evaluation and benchmarking
Understanding trade-offs in lock-free vs lock-based replication
Fault-tolerant system design under partial failures
This project provides a clear, experimental comparison between non-blocking and blocking quorum protocols, illustrating why modern distributed storage systems favor lock-free designs like ABD for scalability and fault tolerance. The results offer practical insight into consistency, performance, and failure behavior in real-world distributed systems.