Distributed Systems Project 2025
Group A46
Difficulty level: I am Death incarnate!
| Number | Name | User | |
|---|---|---|---|
| 107041 | André Santos | https://github.com/AndreSantos04 | mailto:andre.antunes.santos@tecnico.ulisboa.pt |
| 106147 | Diogo Rodrigues | https://github.com/diogotrodrigues | mailto:diogo.teixeira.rodrigues@tecnico.ulisboa.pt |
| 107052 | Tomás Bernardino | https://github.com/tomasbernardino | mailto:tomas.bernardino@tecnico.ulisboa.pt |
The overall system is made up of several modules. The definition of messages and services is in Contract.
See the Project Statement for a complete domain and system description.
The Project is configured with Java 17 (which is only compatible with Maven >= 3.8), but if you want to use Java 11 you can too -- just downgrade the version in the POMs.
You should have a recent version of Python 3 installed to ensure compatibility with modern features and libraries. If needed, update to the latest stable release.
To confirm that you have them installed and which versions they are, run in the terminal:
javac -version
mvn -version
python3 --versionTo create a python virtual environment run:
python -m venv .venvTo activate it run:
source .venv/bin/activateInstall required packages by running:
python -m pip install grpcio
python -m pip install grpcio-toolsTo deactivate the virtual environment run:
deactivateTo compile and install all modules run on the project directory:
mvn clean installTo generate the grpc files for the Client-Python go to the Contract directory and run:
mvn exec:exec Run each module (Client, Front-end, server) by going into its directory and then running:
For Client-Java and Front-end:
mvn exec:javaFor Servers:
mvn exec:java@server-1
mvn exec:java@server-2
mvn exec:java@server-3And the Client-Python by running:
python3 client_main.py localhost:2001 1Run each module (Client, Front-end, server) by going into its directory and then running.
For Client-Java:
mvn exec:java -Dexec.args="localhost:2001 1 -debug"For Client-Python:
python3 client_main.py localhost:2001 1 -debugFor Front-End:
mvn exec:java -Dexec.args="2001 localhost:3001 localhost:3002 localhost:3003 -debug"For Servers:
mvn exec:java@custom-run -Dexec.args="3001 -debug"
mvn exec:java@custom-run -Dexec.args="3002 -debug"
mvn exec:java@custom-run -Dexec.args="3003 -debug"Optionally, you can customize the given arguments and turn on debug messages (<required>, [optional]):
For Client-Java:
mvn exec:java -Dexec.args="<localhost:port> <client_id> [-debug]"For Client-Python:
python3 client_main.py <localhost:port> <client_id> [-debug]For Front-End:
mvn exec:java -Dexec.args="<port> <localhost:port1> <localhost:port2> <localhost:port3> [-debug]"For SingleServer:
mvn exec:java@custom-run -Dexec.args="<port> [-debug]"