Skip to content

UnknownRandomBeast/Distributed-Systems-Spring2025

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Fundamentals of Distributed Systems (Spring 2025)

This repository contains the complete collection of assignments and documentation for the Fundamentals of Distributed Systems course at the University of Tehran. The projects progress from basic concurrent programming in Go to building complex, fault-tolerant distributed consensus protocols.

Repository Contents

CA0: Introduction to Go & Concurrency

  • Objective: Build a concurrent, thread-safe Key-Value database server.
  • Key Concept: State management and synchronization using Go's Goroutines and Channels (select statements), strictly without traditional locks or mutexes. Includes test-driven development for a secondary server implementation.

CA1: Distributed MapReduce

  • Objective: Implement a distributed MapReduce execution engine inspired by the OSDI '04 paper.
  • Key Concept: Managing parallel Map and Reduce tasks across distributed worker processes via RPC. Features robust fault tolerance to detect worker crashes and safely reassign stalled tasks using atomic file operations.

CA2: Reliable Key-Value Server

  • Objective: Build a Key-Value server that guarantees strict consistency over an unreliable network.
  • Key Concept: Ensuring "exactly-once" execution semantics. Implements client retry logic and server-side duplicate detection using monotonic identifiers to prevent duplicate state modifications during network disconnects or packet loss.

CA3: Raft Consensus Algorithm

  • Objective: Implement a fault-tolerant, replicated state machine using the Raft consensus protocol.
  • Key Concept: Achieving distributed consensus through robust Leader Election and Log Replication. Features persistent state management for crash recovery and snapshotting for efficient log compaction.

Bonus HW: Paxos Algorithm Visualization

  • Objective: An interactive Jupyter Notebook demonstrating the inner workings of the Paxos consensus algorithm.
  • Key Concept: Visualizing the interactions between Proposers, Acceptors, and Learners under various conditions, including proposer collisions, message loss, and acceptor node crashes, to prove the algorithm's safety and liveness properties.

About

Implementations and documentation for the Fundamentals of Distributed Systems course at the University of Tehran. Includes a thread-safe KV store, distributed MapReduce, a reliable KV server with exactly-once semantics, and the Raft consensus algorithm.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors