Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/gabryv00/p2p_streamingapp
Streaming system based on a Peer-to-Peer network
https://github.com/gabryv00/p2p_streamingapp
distributed-systems erlang ghs-algorithm graph-algorithms p2p-network widest-path-problem
Last synced: 4 days ago
JSON representation
Streaming system based on a Peer-to-Peer network
- Host: GitHub
- URL: https://github.com/gabryv00/p2p_streamingapp
- Owner: GabryV00
- Created: 2024-03-05T11:01:30.000Z (11 months ago)
- Default Branch: main
- Last Pushed: 2024-04-16T14:27:04.000Z (9 months ago)
- Last Synced: 2024-11-19T21:33:56.721Z (2 months ago)
- Topics: distributed-systems, erlang, ghs-algorithm, graph-algorithms, p2p-network, widest-path-problem
- Language: Erlang
- Homepage:
- Size: 2.53 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Peer-to-Peer Streaming App
This repository contains the code and documentation of a simple streaming system, based on a Peer-to-Peer network, created as a project for the Distributed Systems exam.
The main feature that the system wants to implement is to guarantee that each communication takes place using the best available channel, i.e. the channel with the greatest minimum bandwidth.
This problem, in the graph domain, is known as the Widest Path Problem, which can be solved by calculating the Maximum Spanning Tree. Wanting to develop a distributed application, such as a real streaming system, to solve this problem, we used a slightly modified version of the Gallagher- Humblet-Spira algorithm.
The complete project report is available in the appropriate folder. It contains requirements analysis, system design, system implementation, system validation and future developments.
## How to use it
To run the system with minimal effort, first install the essential tools which are:
- Erlang
- Rebar3 (Erlang build system)
- Python
- PipThen, you can install the needed dependencies executing the following command:
```console
pip install -r src/webgui/requirements.txt
```At this point the wrapper scripts `launch_p2p.sh` and `launch_server.sh` can be executed from two different terminals to start respectively the Erlang backend and the Python web application.