Class management distributed system for the course of Distributed Systems @IST.
It was originally an updated fork from https://github.com/tecnico-distsys/Turmas as per a class project. I have created this repo so the work done may be kept for posterity in case the original repository is deleted.
This project was implemented using gRPC and gossip for communication protocols, and is designed to be fault-tolerant and coherent.
Group A06
Name | User |
---|---|
Jiaqi Yu | https://github.com/jiaqiyusun |
André Matos | https://github.com/andrem000 |
Alexandra Pato | https://github.com/AlexP-Coding |
The overall system is made up of several modules. The main server is the ClassServer. The clients are the Student, the Professor and the Admin. The definition of messages and services is in the Contract. The future naming server is the NamingServer.
See the Project Statement (PT) 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.
To confirm that you have them installed and which versions they are, run in the terminal:
javac -version
mvn -version
To compile and install all modules:
mvn clean install compile
Turn on debug mode by adding -debug
at the END of the list of args
Debug mode is always on when using the default mvn exec:java
NamingServer should always be set on localhost port 5000
mvn exec:java -Dexec.args="localhost 5000"
mvn exec:java -Dexec.args="host port serverType"
If no serverType is specified, default is P
mvn exec:java -Dexec.args="alunoXXXX StudentName"
mvn exec:java -Dexec.args=""
mvn exec:java -Dexec.args=""