P2PDocs: Un Editor Collaborativo Decentralizzato
Progetto per il corso di Sistemi Distribuiti all’Università di Udine
Corso: Sistemi Distribuiti
Team: Alessandro De Biasi, Alessandro Minisini, Nazareno Piccin
GitHub: Repository | Stack: Elixir, Node.js, Docker
📚 Panoramica del Progetto
Progettato per il corso di Sistemi Distribuiti, P2PDocs è un editor di testo collaborativo peer-to-peer che implementa:
- CRDT (Conflict-Free Replicated Data Types) per risolvere conflitti
- Broadcast Causale per l’ordinamento dei messaggi
🔍 Contributi Tecnici
1. Implementazione CRDT LSEQ
Per preservare l’intenzione degli utenti (intention preservation):
- Vettori di posizione come numeri razionali
- Tagging con ID peer per gestire modifiche concorrenti
- Albero statistico AVL per inserimenti/cancellazioni in O(log n)
2. Livello di Rete
- Protocollo Echo-Wave: Propagazione affidabile delle operazioni
- Neighbor Handshake: Sincronizzazione dello stato per nuovi peer
- Crash Recovery: Persistenza con ETS (Erlang Term Storage)
3. Validazione
- Unit Test: ExUnit per verificare i moduli
- Test Multi-Nodo: Simulazioni con Docker:
./start_n_instances_for_tests.sh 5 # Avvia 5 peer ./disconnect.sh 2 # Simula un guasto
🔮 Sviluppi Futuri
Dal nostro rapporto finale:
- Supporto per Markdown
- Tracciamento cursori in tempo reale
- Ottimizzazione del vector clock
📚 Approfondimenti
Per dettagli tecnici completi su:
- Implementazione CRDT
- Scelte progettuali dei protocolli di rete
- Metodologia di validazione
Leggi il Rapporto Tecnico nel repository.