Skip to content

Un sistema de archivos distribuido peer-to-peer con interoperabilidad entre múltiples servicios DNS personalizados, implementado en Python.

Notifications You must be signed in to change notification settings

AxelT456/dist-fs-interop

Repository files navigation

Sistema de Archivos Distribuido P2P con Interoperabilidad DNS

Este proyecto implementa un sistema de archivos distribuido (DFS) resiliente y descentralizado en Python. Cuenta con una arquitectura personalizada que incluye servidores de nombres (DNS) locales y generales, mecanismos de bloqueo de archivos (locking) para consistencia en escrituras, y descubrimiento de pares.

🚀 Características

  • Arquitectura Híbrida: Combina un DNS General (Coordinador) con DNS Locales para resolución de nombres distribuida.
  • Interoperabilidad: Sistema de traducción (Translator) para comunicar diferentes protocolos de nodos.
  • Consistencia de Datos: Implementación de bloqueos (Locks) y Check-in/Check-out para evitar condiciones de carrera.
  • Persistencia: Almacenamiento local en cada nodo servidor.
  • Cliente Interactivo: CLI basada en prompt_toolkit con autocompletado y menús.

📋 Requisitos

  • Python 3.8+
  • Dependencias listadas en requirements.txt

🛠️ Instalación

1. Clonar el repositorio

git clone https://github.com/tu-usuario/dist-fs-interop.git
cd dist-fs-interop

2. Crear y activar entorno virtual (opcional pero recomendado)

python -m venv venv

# En Windows:
venv\Scripts\activate

# En Unix/MacOS:
source venv/bin/activate

3. Instalar dependencias

pip install -r requirements.txt

⚙️ Configuración

El sistema se configura a través de network_config.json. Define las IPs y puertos de:

  • DNS General: El orquestador central.
  • Peers: Cada nodo con su servidor de archivos y su DNS local asociado.

▶️ Ejecución

El proyecto incluye un lanzador maestro que coordina todos los procesos necesarios para una simulación local completa.

Iniciar el Sistema Completo

python system_launcher.py

Selecciona la Opción 4 (Iniciar sistema completo) para levantar el DNS General, los DNS Locales y los Servidores de Archivos automáticamente.

Iniciar Cliente

En una nueva terminal (o usando la opción 5 del lanzador), ejecuta:

python src/client_distributed.py

🏗️ Arquitectura del Proyecto

├── network_config.json       # Configuración global de la topología
├── system_launcher.py        # Script maestro de orquestación
├── dns_general.py            # Servidor de nombres principal
├── dns_local_service.py      # Servicio de DNS Local (Instanciable)
├── server_distributed.py     # Nodo servidor de archivos
├── src/
│   ├── client_distributed.py # Cliente CLI
│   ├── core/                 # Lógica de manejo de archivos
│   └── network/              # Capa de transporte y seguridad
└── archivos_server*/         # Directorios de almacenamiento (GitIgnored)

🤝 Contribución

Proyecto académico realizado colaborativamente.

About

Un sistema de archivos distribuido peer-to-peer con interoperabilidad entre múltiples servicios DNS personalizados, implementado en Python.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •