Skip to content

Repository files navigation

Tuplespaces-2025

Distributed Systems Project 2025

Group A46

Difficulty level: I am Death incarnate!

Team Members

Number Name User Email
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

Getting Started

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.

Prerequisites

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 --version

To create a python virtual environment run:

python -m venv .venv

To activate it run:

source .venv/bin/activate

Install required packages by running:

python -m pip install grpcio
python -m pip install grpcio-tools

To deactivate the virtual environment run:

deactivate

Installation

To compile and install all modules run on the project directory:

mvn clean install

To generate the grpc files for the Client-Python go to the Contract directory and run:

mvn exec:exec         

Running

Run each module (Client, Front-end, server) by going into its directory and then running:

For Client-Java and Front-end:

mvn exec:java

For Servers:

mvn exec:java@server-1
mvn exec:java@server-2
mvn exec:java@server-3

And the Client-Python by running:

python3 client_main.py localhost:2001 1

Running in debug mode

Run 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 -debug

For 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"

Customize Running

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]"

Built With

  • Maven - Build and dependency management tool;
  • gRPC - RPC framework.

About

Distributed shared memory system implementing the Linda tuple space model over gRPC, with three replicated servers, a front-end proxy, and Maekawa's voting algorithm for mutual exclusion on take operations.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages