Skip to content

QuocHuannn/Distributed_System

Repository files navigation

Distributed System Practice Labs

This repository contains a series of practical laboratory exercises focused on distributed systems concepts and implementations.

Lab Overview

Lab 01: Basic Socket Programming

  • 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

Lab 02: Remote Procedure Call (RPC)

  • 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

Lab 03: Message Queue System

  • 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

Lab 04: Distributed Hash Table (DHT)

  • 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

Lab 05: Distributed Transaction System

  • 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

Technologies Used

  • Go (Golang)
  • TCP/IP Networking
  • JSON for data serialization
  • Git for version control

Project Structure

Each lab is contained in its own directory with complete implementation and documentation:

  • Source code
  • README with instructions
  • Test cases
  • Documentation

Learning Outcomes

Through these labs, students gain practical experience in:

  1. Distributed system design and implementation
  2. Network programming
  3. Concurrent programming
  4. Distributed algorithms
  5. Error handling in distributed environments
  6. System testing and debugging

Getting Started

Each lab contains its own README with specific instructions for:

  • Setup requirements
  • Building the project
  • Running the implementation
  • Testing the system

Contributors

This project is maintained as part of the Distributed Systems course, with contributions from students and instructors.

About

Practice Lab for Distributed System

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •  

Languages