/SDPrac1

Distributed System - Redis, RabbitMQ, GRPC

Primary LanguagePython

1st assignment Distributed Systems

1st assignment ot the subject SD (Distributed Systems) of the degree in Computer Science of the Rovira i Virgili University. Consists of the implementation of a distributed system using Python.

Content

Introduction

To implement this system, we've decided to make use of a remote server to simulate a real case where, RabbitMQ and Redis would be running in a remote server. To do so, we're using two docker containers, one for each, hosted at:

Both containers are always running in detach mode, and containers aren't removed when stopped.
Data in RabbitMQ is set to be kept even if there's a node failure to make sure that any message gets lost. We've decided to make this implementation to have access to the same data and make a more realistic system.
When it comes to the RPC implementation, we first started using XMLRPC, but ended implementing GRPC due to its safety and speed.

Direct

  • Sensors
  • Load balancer
  • Server
  • Redis storage
  • Proxy
  • Terminal

Indirect

  • Sensors
  • RabbitMQ ( sensor - server communication )
  • Server
  • Redis storage
  • Proxy
  • RabbitMQ ( proxy - terminal communication )
  • Terminal

Run

When running the project, we recommend running the terminal file using PyCharm, as it has SciView installed and it's quite convenient to visualize plots. Every other file can be run using the terminal by running the run.sh or run.bat file, depending on the OS you're using.

Linux

pip install -r requirements.txt
./run.sh

Windows

pip install -r requirements.txt
./run.bat

Authors