A distributed system implementation using Apache Thrift for communication between Frontend Server, Backend Server, and Client components.
- 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
- Java 8+ (tested with Java 21)
- Apache Thrift compiler
- macOS/Linux environment
-
Install Apache Thrift (macOS):
brew install thrift
-
Build the project:
./build.sh
-
Start the Backend Server:
./run_be_server.sh
-
Start the Frontend Server:
./run_fe_server.sh
./run_client.sh./run_calibrator.shThis 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
This project demonstrates:
- Distributed systems design
- RPC communication using Apache Thrift
- Java networking and concurrency
- Performance optimization techniques
Educational project for ECE751 - Distributed Systems