This repository contains assignments related to the Distributed Systems course at IIIT-Delhi, Winter 2024 🎓
The first assignment focuses on usage of distributed messaging frameworks (gRPC, ZeroMQ, RabbitMQ). It consists of 3 parts:
-
🏪 Online Shopping Platform: Uses gRPC for communication between a central marketplace, sellers, and buyers. It demonstrates the practical application of gRPC in a distributed system.
-
💬 WhatsApp Messaging System: Utilizes ZeroMQ for messaging patterns, providing a simple and efficient way to implement messaging functionalities including group registration, message sending, and retrieval.
-
📹 YouTube Application: Implements a YouTube-like application using RabbitMQ. It allows YouTubers to publish videos and users to subscribe to their favorite YouTubers, facilitating communication through the YouTube server.
The second assignment focuses on implementing a modified version of the Raft consensus algorithm, similar to those used by geo-distributed database clusters such as CockroachDB or YugabyteDB. It aims to build a distributed key-value store that ensures fault tolerance and strong consistency.
The concept of leader lease is used to address the issue of high read latencies in the traditional Raft algorithm.
The third assignment focuses on implementing the K-means clustering algorithm using the MapReduce framework from scratch in a distributed manner. The implementation is done in Python and uses gRPC for communication between the master, mappers, and reducers.
The MapReduce implementation consists of the master, input split, map, partition, shuffle and sort, reduce, and centroid compilation components.