[Distrib] Απορίες ToyChord

Katerina Doka katerina at cslab.ece.ntua.gr
Tue Jan 5 09:46:34 EET 2021


Καλή χρονιά με υγεία,
λίγο καθυστερημένα λόγω των ημερών, απαντάω in line

On Fri, Jan 1, 2021 at 6:18 PM Jason Milionis <jasonmili.ece at gmail.com>
wrote:

> Καλησπέρα σας, και καλή χρονιά! Ήθελα να ρωτήσω τα εξής συνολικά για την
> εργασία:
>
> 1) Την πληροφορία του προηγούμενου κόμβου την χρειαζόμαστε και θα την
> αξιοποιήσουμε μόνο για το depart για να δώσουμε τα κατάλληλα κλειδιά, ή και
> αλλού σε άλλες λειτουργίες;
>
> Ναι, δε νομίζω ότι θα σας χρειαστεί κάπου αλλού.


> 2) Σαν παράδειγμα για το παραπάνω, για ένα query όταν θα έχουμε
> replication, ένας κόμβος που δεν είναι ούτε primary ούτε replica manager
> για ένα δεδομένο πρέπει να πάει να ψάξει για τον primary και να κάνει route
> το request του από τη συντομότερη διαδρομή (μέσω του προηγούμενου/επόμενου
> node) ή πάντοτε από τον επόμενο και όποιον βρει πρώτο; (ρωτάω διότι σε αυτή
> την περίπτωση πάντα θα "χτυπάμε" τον primary ή τον τελευταίο replica
> manager στο chain, και κανέναν από τους άλλους RMs)
>
  το routing των inserts/queries γίνεται πάντα προς την ίδια φορά, προς τον
επόμενο κόμβο δλδ. Ναι, αν υλοποιήσετε chain replication για
linearizability τότε χτυπάτε μόνο τον πρώτο ή τελευταίο στη σειρά. Σε
eventual consistency όμως όποιον βρείτε πρώτο.

>
> 3) Επειδή δε θα κρατάμε τη σύνδεση ανοικτή, πχ όταν γίνει query και πάει
> στο δακτύλιο, ο κόμβος που έκανε το request θα κλείσει το socket και θα
> περιμένει μια απάντηση, αν έχουν γίνει δύο ταυτόσημα (ως προς key) requests
> (πχ insert κάτι και μετά ξανά insert κάτι με άλλο value πχ), τότε προκύπτει
> θέμα ο κόμβος που έκανε το request πώς θα αναγνωρίσει σε ποιο request
> αναφέρεται η απάντηση του (το ίδιο θέμα προκύπτει και αν σταλεί ακριβώς το
> ίδιο request δεύτερη φορά πχ). Για να το αντιμετωπίσουμε αυτό πχ στα
> queries, ο τρόπος που εμείς σκεφτόμαστε να τα υλοποιήσουμε έχει να κάνει με
> την ανάθεση ενός μοναδικού αριθμού ανά κόμβο (requestNumber) για κάθε
> request που στέλνει ώστε να μπορεί να το ταυτοποιήσει μετά στην απάντηση.
> Αυτό είναι αποδεκτό, ή υπάρχει κάποιος άλλος καλύτερος τρόπος/εναλλακτική;
>

Συνήθως στα requests δίνεται κάποιο id για να ξεχωρίζουν, οπότε μπορεί να
χρησιμοποιηθεί αυτό.

>
>

> 4) Θεωρούμε ότι τα ονόματα αρχείων/keys είναι μοναδικά, έτσι;
>
ναι

>
> 5) Στην περίπτωση του replication, αν πάει και γίνει insert σε "ενδιάμεσο"
> RM της αλυσίδας (ούτε στην αρχή ούτε στο τέλος του chain), τότε το μήνυμα
> πρέπει να φύγει και προς τις δύο διευθύνσεις (προς τον προηγούμενο και τον
> επόμενο) για να φτάσει σε όλους τους RMs; Ή πάντα θα φεύγει προς τον
> επόμενο και θα πρέπει να κάνει όλο τον γύρο του ring για να φτάσει στον
> προηγούμενο;
>

Μπορείτε να το υλοποιήσετε όπως θέλετε.

>
> 6) Αν έχουμε δύο διαφορετικούς node Α και Β με ίση απόσταση από έναν άλλο
> node C (που είναι υπεύθυνος έστω για το κλειδί Χ) και ο Α τρέξει insert για
> το X ενώ ο Β ταυτόχρονα τρέξει query για το X, τότε το αποτέλεσμα εξαρτάται
> προφανώς από το ποιο request θα φτάσει πρώτο στον C. Η περίπτωση αυτή είναι
> έγκυρη (και μπορεί να συμβεί) για τα CLIs/nodes της εφαρμογής μας ή να
> υποθέσουμε ότι δε θα γίνει κάτι τέτοιο ή κάτι γενικότερο (περιπλέκεται με
> την ύπαρξη replicas);
>
Ναι, θα μπορούσε να συμβεί αυτό.

>
> 7) Είναι εντάξει για την εργασία εάν για κάθε node που θέλουμε να
> ξεκινήσουμε πρέπει να τρέξουμε ένα κατάλληλο script στο συγκεκριμένο
> μηχάνημα που θέλουμε να ξεκινήσουμε και να δίνει ο χρήστης το port που
> θέλει να μπει αυτός ο node; (δηλαδή χρειάζεται να τρέξουμε στο συγκεκριμένο
> μηχάνημα κώδικα, όχι απομακρυσμένα)
>
ναι

>
> 8) Σχετικά με το overlay, θα το υλοποιήσουμε και αυτό ως μήνυμα που θα
> περνάει σε όλο το δακτύλιο, σωστά; Οπότε αν μπορεί να το στείλει
> οποιαδήποτε κόμβος (και όχι μόνο ο bootstrap), τότε η σειρά που θα
> εμφανιστούν οι κόμβοι δε θα είναι μοναδική στο output. Αυτό είναι σωστό για
> την εργασία;
>
σωστά.

>
> Σας ευχαριστώ για το χρόνο σας,
> Ιάσων
> _______________________________________________
> Distrib mailing list
> Distrib at lists.cslab.ece.ntua.gr
> http://lists.cslab.ece.ntua.gr/mailman/listinfo/distrib
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.cslab.ece.ntua.gr/pipermail/distrib/attachments/20210105/5e0429ca/attachment.htm>


More information about the Distrib mailing list