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

Katerina Doka katerina at cslab.ece.ntua.gr
Wed Mar 7 10:45:30 EET 2018


Καλημέρα,


On 06/03/2018 06:04 μμ, Ilias Katsakioris wrote:
> Καλησπέρα,
>
> Σχεδιάζοντας το σύστημα που πρέπει να υλοποιηθεί για την εργασία μου
> έχουν δημιουργηθεί ορισμένες απορίες.
>
> 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 δίκτυο και σε επίπεδο
> μηνυμάτων ελέγχου.
>
> Τι από τα δύο θα σας φαινόταν πιο καλό; Υπάρχει κάποια άλλη προτιμότερη
> επιλογή;
Ισχύει επίσης ό,τι παραπάνω. Γενικώς θες μια εύκολη λύση (που δεν 
απαιτεί TCP server στην πλευρά του client, οπότε ας πούμε ότι η λύση #2 
απορρίπτεται) αλλά και lightweight για το δίκτυο (οπότε δε θες να 
στέλνεις μήνυμα στον tracker πριν απο *κάθε* μήνυμα στο group).
>
> Ευχαριστώ εκ των προτέρων,
> Ηλίας Κατσακιώρης
> _______________________________________________
> Distrib mailing list
> Distrib at lists.cslab.ece.ntua.gr
> http://lists.cslab.ece.ntua.gr/mailman/listinfo/distrib

-- 
Katerina Doka, PhD
Senior Researcher, Computing Systems Laboratory
National Technical University of Athens
phone: +30 2107721175
Web: http://www.cslab.ntua.gr/~doka



More information about the Distrib mailing list