Παράλληλα αρχίσαμε τη δημιουργία του γραφικού περιβάλλοντος και τη σύνδεση των δημιουργημένων μεθόδων με αυτό.
Τρίτη 30 Δεκεμβρίου 2008
debugging & GUI
Παράλληλα αρχίσαμε τη δημιουργία του γραφικού περιβάλλοντος και τη σύνδεση των δημιουργημένων μεθόδων με αυτό.
Δευτέρα 29 Δεκεμβρίου 2008
επικοινωνία κόμβων
Ύστερα φτιάξαμε τη συνάρτηση με την οποία οι κόμβοι θα φτιάχνουν τους πίνακες τους όταν συνδεθούν στο σύστημα, επικοινωνώντας με τους ήδη συνδεδεμένους κόμβους. Για να συμβεί αυτό αλλά και για την επικοινωνία των κόμβων οι κόμβοι ύστερα από τη σύνδεσή τους ανοίγουν ένα socket στο port που έχουν δηλώσει.
Τετάρτη 24 Δεκεμβρίου 2008
SHA-1 Class
Τρίτη 23 Δεκεμβρίου 2008
Node & Credentials & SHA-1
Τέλος αρχίσαμε να δουλεύουμε τη συνάρτηση SHA-1.
Σάββατο 20 Δεκεμβρίου 2008
server & client
Επίσης αρχίσαμε τη δημιουργία του client φτιάχνοντας την σύνδεσή του με τον server και τον υλοποιήσαμε σαν thread.
Συναντήσαμε δυσκολίες στην σύνδεση αρχικά, ενώ δεν καταφέραμε να δημιουργήσουμε σύνδεση εκτός του localhost (μέσω Internet)
Δευτέρα 15 Δεκεμβρίου 2008
ΠΕΡΙΓΡΑΦΗ ΕΡΓΑΣΙΑΣ ΣΤΑ ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ
Η εργασία μας θα αφορά ένα Κατανεμημένο Σύστημα το οποίο θα βασίζεται στο πρωτόκολλο Pastry, και πάνω σε αυτό θα φτιάξουμε ένα πρόγραμμα ανταλλαγής αρχείων, μεταξύ των κόμβων του συστήματος.
Αναλυτικότερα, στο κατανεμημένο σύστημα θα συνδέονται κόμβοι οι οποίοι θα μπορούν να ανταλλάζουν μεταξύ τους αρχεία, όσο αυτοί είναι συνδεμένοι στο σύστημα, ενώ όταν κάποιος από αυτούς αποσυνδεθεί από το σύστημα (εξαγωγή κόμβου) θα γίνονται αλλαγές των πινάκων των κόμβων (στους οποίους γίνεται αντιληπτή η αλλαγή) στα σημεία που υπήρχε ο πεσμένος κόμβος.
Αντίστοιχα σε κάθε σύνδεση ενός κόμβου στο σύστημα (εισαγωγή κόμβου),ο ίδιος ο κόμβος θα δημιουργεί τους δικούς του πίνακες και θα εισέρχεται στο σύστημα.
Τέλος, ο κάθε κόμβος θα έχει μια λίστα από αρχεία τα οποία θα μπορούν να βρουν και να πάρουν οι άλλοι κόμβοι από αυτόν ως αντίγραφα στον υπολογιστή τους.
Αρχικά θα υπάρχει ένας server ο οποίος θα κρατάει τους κόμβους για να μπορεί να δείνει bootstrap κόμβους κάθε φορά που θα εισέρχεται ένας κόμβος στο σύστημα, ώστε να βρεί τους κοντινούς κόμβους και παράλληλα να φτιάξει τα routing table, leaf set, neighborhood set.
Ο αρχικός κόμβος θα επιλέγεται με βάση τον ταχύτερο κόμβο που θα επιστρέψει κάποιο αποτέλεσμα στην εντολή ping.
Αν δεν υπάρχει κανένας κόμβος στο server, σημαίνει ότι ο κόμβος που προσπαθεί να μπει εκείνη τη δεδομένη στιγμή, θα είναι ο πρώτος κόμβος στο σύστημα.
Για κάθε κόμβο που δημιουργείται (δηλαδή όταν ένας χρήστης ανοίξει την εφαρμογή και αρχίσει η σύνδεση του στο σύστημα) θα ισχύει η παρακάτω διαδικασία:
Έτσι η ΑΡΧΙΚΟΠΟΙΗΣΗ ΚΟΜΒΟΥ θα περιλαμβάνει:
- Αρχικά το άνοιγμα του GUI στο χρήστη
- στη συνέχεια τη μετατροπή της διεύθυνσης IP του κόμβου σε κλειδί χρησιμοποιώντας hashing και
- τέλος την αρχικοποίηση των πινάκων routing table, leaf set, neighbourhood set
Η διαδικασία ΣΥΝΔΕΣΗ ΣΤΟ ΣΥΣΤΗΜΑ θα αποτελείται από τα εξής βήματα:
- Ο κόμβος που θέλει να συνδεθεί θα παίρνει όλους τους ενεργούς κόμβους από το server και θα ψάχνει για τον bootstrap κόμβο, με βάση τα αποτελέσματα που θα επιστρέφονται από την εντολή ping.
- Στη συνέχεια, θα βρίσκει τους κοντινότερους κόμβους ενώ παράλληλα,
- θα γεμίζει τους πίνακες routing table, leaf set και neighborhood set
- και τέλος θα στέλνει ένα μήνυμα σύνδεσης στους κόμβους του συστήματος.
Οι λειτουργίες που θα μπορεί να πραγματοποιεί ένας κόμβος, εφόσον συνδεθεί στο σύστημα θα είναι οι εξής:
- ROUTING : Κάθε φορά που μπαίνει ένας κόμβος ή κάποιος δεν ανταποκρίνεται σωστά(έχει βγει από το σύστημα) θα γίνεται ανανέωση των: routing table, leaf set, neighborhood set.
- SEARCH : Θα γίνεται αναζήτηση για το ζητούμενο αρχείο στους κόμβους, μέσω των πινάκων των κόμβων, ώστε να βρεθεί σε ποιόν κόμβο(-ους) υπάρχει το ζητούμενο αρχείο.
- ΑΝΤΑΛΛΑΓΗ ΑΡΧΕΙΩΝ : Θα δημιουργείται μια σύνδεση των κόμβων που έχουν το αρχείο, με αυτόν που το ζητάει, με άνοιγμα ενός port και στη συνέχεια θα αρχίζει η ανταλλαγή των αρχείων με κάποιο πρωτόκολλο ftp.
Τέλος αναφέρουμε ότι οι λειτουργίες των κόμβων θα τρέχουν με τη βοήθεια των αντίστοιχων threads.

