This repository contains a series of practical laboratory exercises focused on distributed systems concepts and implementations.
- Objective: Implementation of basic client-server communication using sockets
- Key Components:
- TCP socket implementation
- Basic client-server architecture
- Message passing between client and server
- Skills Learned:
- Socket programming in Go
- Network communication basics
- Error handling in distributed systems
- Objective: Implementation of RPC mechanism for distributed computing
- Key Components:
- RPC server implementation
- RPC client implementation
- Remote method invocation
- Skills Learned:
- RPC concepts and implementation
- Service registration and discovery
- Remote method calling patterns
- Objective: Building a simple message queue system
- Key Components:
- Message broker implementation
- Publisher/Subscriber pattern
- Queue management
- Skills Learned:
- Asynchronous communication
- Message queue patterns
- Distributed messaging systems
- Objective: Implementation of a basic distributed hash table
- Key Components:
- Consistent hashing
- Node management
- Data distribution
- Skills Learned:
- Distributed data structures
- Consistent hashing algorithm
- Node coordination in distributed systems
- Objective: Implementation of a distributed transaction system using Two-Phase Commit protocol
- Key Components:
- Transaction coordinator
- Participant servers
- Two-Phase Commit (2PC) protocol
- Data consistency management
- Key Features:
- Money transfer between accounts
- Trip booking system
- Concurrent transaction handling
- Skills Learned:
- Distributed transaction management
- Two-Phase Commit protocol
- Data consistency in distributed systems
- Error handling and recovery
- Go (Golang)
- TCP/IP Networking
- JSON for data serialization
- Git for version control
Each lab is contained in its own directory with complete implementation and documentation:
- Source code
- README with instructions
- Test cases
- Documentation
Through these labs, students gain practical experience in:
- Distributed system design and implementation
- Network programming
- Concurrent programming
- Distributed algorithms
- Error handling in distributed environments
- System testing and debugging
Each lab contains its own README with specific instructions for:
- Setup requirements
- Building the project
- Running the implementation
- Testing the system
This project is maintained as part of the Distributed Systems course, with contributions from students and instructors.