[Distrib] Απορίες σχετικά με τη σχεδίαση του συστήματος της εργασίας

Ilias Katsakioris el13004 at central.ntua.gr
Tue Mar 6 18:04:45 EET 2018


Καλησπέρα,

Σχεδιάζοντας το σύστημα που πρέπει να υλοποιηθεί για την εργασία μου
έχουν δημιουργηθεί ορισμένες απορίες.

1) Με ένα πρώτο διάβασμα της εκφώνησης μου έγινε αντιληπτό πως ο tracker
είναι ένας TCP server που απλά ακούει για τα μηνύματα ελέγχου που
στέλνουν οι clients. Διαβάζοντας όμως πιο προσεκτικά το κομμάτι που
αφορά την ανίχνευση αποτυχιών από τον tracker, έχω διάφορες ιδέες.

Μια λύση που χρησιμοποιεί τα υπάρχοντα μηνύματα ελέγχου για την επιτυχία
ή αποτυχία των clients δεν θα ήταν ιδιαίτερα καθαρή, με την έννοια της
διακριτότητας των λειτουργιών κάθε μηνύματος ελέγχου. Έτσι, θα μου
φαινόταν καλή μια λύση μηνυμάτων τύπου heartbeat/keep-alive από τον
client, που όμως θα ήταν καλό να αποτελεί διαφορετικό "μήνυμα ελέγχου"
(που δεν θα στέλνεται χειροκίνητα από τον user αλλά περιοδικά). Θα ήταν
δεκτή μια τέτοια λύση; Αλλιώς, πάλι για να μην μπλεχτούν τα υπάρχοντα
μηνύματα ελέγχου, θα μπορούσε να στέλνονται αντίστοιχα heartbeat
μηνύματα από τον tracker. Αυτό βέβαια θα έκανε το σύστημα peer-to-peer
και όσον αφορά τα μηνύματα ελέγχου, και όχι μόνο όσον αφορά τα μηνύματα
πληροφορίας (chat), το οποίο είναι αντίθετο με την αρχική μου θεώρηση
ότι ο tracker είναι απλά ένας TCP server που ακούει και απαντάει (η
υλοποίησή μου προς το παρόν χρησιμοποιεί HTTP).

Τι θα θεωρούσατε εσείς πιο σωστό ή τι περιμένετε σαν λύση αυτού του
προβλήματος;

2) Μια δεύτερη απορία που μου δημιουργήθηκε αφορά το παρακάτω σενάριο:
Ένας client κάνει join ένα group και ο tracker του απαντά τα στοιχεία
όσων είναι αυτή τη στιγμή στο group (id, ip, port, username). Μετά από
κάποια ώρα αποφασίζει να στείλει κάποιο μήνυμα. Πώς μαθαίνει τα στοιχεία
όσων έχουν μπει στο group μετά από αυτόν; Εύκολα με ένα list_members θα
μπορούσε να μην στείλει σε κάποιον που μπήκε πριν από αυτόν αλλά βγήκε
λίγο μετά, όμως μου φαίνεται πως παρουσιάζεται πρόβλημα σε αυτό που
περιέγραψα.

Μια λύση θα ήταν να ζητάει εκ νέου join κάθε φορά που θέλει να στείλει
μήνυμα στο group ώστε να μαθαίνει τα πάντα για τα μέλη αυτού του group.
Όμως κάτι τέτοιο θα ήταν πολύ βαρύ για το δίκτυο.

Μια άλλη λύση θα ήταν ο tracker να στέλνει σε όσους ήταν στο group κάθε
φορά τα στοιχεία ενός νέου μέλους του group. Αυτό παραπέμπει, όπως και
στο προηγούμενο θέμα, σε ένα peer-to-peer δίκτυο και σε επίπεδο
μηνυμάτων ελέγχου.

Τι από τα δύο θα σας φαινόταν πιο καλό; Υπάρχει κάποια άλλη προτιμότερη
επιλογή;

Ευχαριστώ εκ των προτέρων,
Ηλίας Κατσακιώρης


More information about the Distrib mailing list