Skip to content

Repository files navigation

ECE751 Assignment 1 - Distributed Mining Pool System

A distributed system implementation using Apache Thrift for communication between Frontend Server, Backend Server, and Client components.

Project Structure

  • FEServer.java - Frontend server that handles client requests
  • BEServer.java - Backend server that manages mining operations
  • Client.java - Client application for interacting with the system
  • Calibrator.java - Performance calibration utility
  • MiningPoolServiceHandler.java - Thrift service implementation
  • a1.thrift - Thrift IDL definition

Prerequisites

  • Java 8+ (tested with Java 21)
  • Apache Thrift compiler
  • macOS/Linux environment

Installation

  1. Install Apache Thrift (macOS):

    brew install thrift
  2. Build the project:

    ./build.sh

Usage

Running the Servers

  1. Start the Backend Server:

    ./run_be_server.sh
  2. Start the Frontend Server:

    ./run_fe_server.sh

Running the Client

./run_client.sh

Performance Calibration

./run_calibrator.sh

Architecture

This system implements a distributed mining pool with the following components:

  • Frontend Server: Handles client connections and forwards requests to backend
  • Backend Server: Manages mining operations and maintains system state
  • Client: Provides user interface for mining operations
  • Thrift Communication: Enables type-safe RPC between components

Development

This project demonstrates:

  • Distributed systems design
  • RPC communication using Apache Thrift
  • Java networking and concurrency
  • Performance optimization techniques

License

Educational project for ECE751 - Distributed Systems

About

Distributed Mining Pool System using Apache Thrift RPC

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages