Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/danielangelo1/ring-mutex
Python implementation of Ring Election Algorithm and Mutex in Distributed Systems.
https://github.com/danielangelo1/ring-mutex
Last synced: about 1 month ago
JSON representation
Python implementation of Ring Election Algorithm and Mutex in Distributed Systems.
- Host: GitHub
- URL: https://github.com/danielangelo1/ring-mutex
- Owner: danielangelo1
- Created: 2024-01-20T13:39:26.000Z (12 months ago)
- Default Branch: main
- Last Pushed: 2024-02-06T22:30:22.000Z (11 months ago)
- Last Synced: 2024-02-08T22:44:35.310Z (11 months ago)
- Language: Python
- Size: 21.5 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# TP 2 - Sistemas distribuidos
Este projeto implementa um sistema distribuído para a gestão de eleições e exclusão mútua utilizando algoritmos de eleição do anel e exclusão mútua centralizada.
## Funcionalidades
- **Exclusão Mútua Centralizada**: Garante que apenas um cliente por vez possa acessar o recurso compartilhado.
- **Algoritmo de Eleição do Anel**: Define dinamicamente um coordenador (líder) entre os dispositivos no sistema distribuído.
- **Recuperação de Falhas**: Inicia automaticamente uma nova eleição caso o coordenador atual falhe ou se desconecte.
- **Acesso ao Recurso Compartilhado**: Modifica um arquivo centralizado no servidor com o hostname e o timestamp do acesso.## Configuração
### Dependências
- Python 3.x
- Bibliotecas Python: `socket`, `threading`, `time`, `os`, `random`### Execução
1. Tenha o Docker e o Docker Compose instalados.
2. Execute o comando `docker-compose up --build` na raiz do projeto.
3. O servidor e os clientes serão inicializados.## Estrutura do Projeto
- `client.py`: Lógica do cliente, incluindo solicitação de acesso ao recurso e participação na eleição.
- `server.py`: Servidor que gerencia o acesso ao recurso compartilhado.
- `resource.txt`: Arquivo de recurso compartilhado que os clientes modificam.
- `Dockerfile` e `docker-compose.yml`: Configurações para containerização e simulação de ambiente distribuído.## Autores
- [Daniel Ângelo](https://github.com/danielangelo1)
- [Arthur Feu](https://github.com/ArthurFeu)