Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Distributed Systems Projects

CA0

Key-Value Server

A concurrent key-value server in Go using goroutines and channels (no locks). Provides CRUD operations (Put, Get, Update, Delete) with async request processing via buffered channels. Achieves lock-free consistency by isolating database access to a single goroutine. Tracks active and disconnected clients.

Squarer Service

A concurrent squaring service using Go channels. Supports asynchronous integer squaring with multiple values, negative numbers, and zero. Provides clean channel close functionality.


CA1

MapReduce

A distributed MapReduce system with a Coordinator and Workers. The Coordinator manages and distributes Map/Reduce tasks, tracks their status (idle/running/completed), and handles fault tolerance by reassigning tasks after a 10-second timeout. Workers request tasks via RPC, execute mapFunc on input files, save intermediate key-value pairs, then execute reduceFunc on the intermediate data.


CA2

Fault-Tolerant KV Store

A linearizable key-value store with at-most-once semantics. The Clerk provides unique request IDs and retry logic to ensure at-most-once Put execution. The KVServer uses mutex-protected operations for linearizability, version-based conditional updates, and duplicate request detection.

Distributed Lock

A fault-tolerant distributed lock built entirely on KV operations. Lock acquisition and release use Get/Put with version comparison for mutual exclusion. Handles ambiguous responses (ErrMaybe) through retry and re-verification.


CA3

Raft Consensus Algorithm

A Go implementation of the Raft consensus algorithm. Provides leader election via a Follower → Candidate → Leader state machine with term-based voting. Implements log replication across the cluster using AppendEntries RPC. Persists currentTerm, votedFor, and log[] to stable storage. Handles node crashes, network partitions, and delayed messages. Commits entries when replicated to a majority and applies them to the state machine in order.

About

Distributed Systems course projects implementing key-value storage, MapReduce, fault-tolerant KV store with distributed locking, and the Raft consensus algorithm in Go.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages