<div dir="ltr"><div dir="ltr">Καλή χρονιά με υγεία,<div>λίγο καθυστερημένα λόγω των ημερών, απαντάω in line</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Jan 1, 2021 at 6:18 PM Jason Milionis &lt;<a href="mailto:jasonmili.ece@gmail.com">jasonmili.ece@gmail.com</a>&gt; wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div dir="auto"><div dir="ltr">Καλησπέρα σας, και καλή χρονιά! Ήθελα να ρωτήσω τα εξής συνολικά για την εργασία:<br><br>1) Την πληροφορία του προηγούμενου κόμβου την χρειαζόμαστε και θα την αξιοποιήσουμε μόνο για το depart για να δώσουμε τα κατάλληλα κλειδιά, ή και αλλού σε άλλες λειτουργίες;<br><br></div></div></div></blockquote><div>Ναι, δε νομίζω ότι θα σας χρειαστεί κάπου αλλού.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div dir="auto"><div dir="ltr">2) Σαν παράδειγμα για το παραπάνω, για ένα query όταν θα έχουμε replication, ένας κόμβος που δεν είναι ούτε primary ούτε replica manager για ένα δεδομένο πρέπει να πάει να ψάξει για τον primary και να κάνει route το request του από τη συντομότερη διαδρομή (μέσω του προηγούμενου/επόμενου node) ή πάντοτε από τον επόμενο και όποιον βρει πρώτο; (ρωτάω διότι σε αυτή την περίπτωση πάντα θα &quot;χτυπάμε&quot; τον primary ή τον τελευταίο replica manager στο chain, και κανέναν από τους άλλους RMs)<br></div></div></div></blockquote><div> 

το routing των inserts/queries γίνεται πάντα προς την ίδια φορά, προς τον επόμενο κόμβο δλδ. Ναι, αν υλοποιήσετε chain replication για linearizability τότε χτυπάτε μόνο τον πρώτο ή τελευταίο στη σειρά. Σε eventual consistency όμως όποιον βρείτε πρώτο. </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div dir="auto"><div dir="ltr"><br>3) Επειδή δε θα κρατάμε τη σύνδεση ανοικτή, πχ όταν γίνει query και πάει στο δακτύλιο, ο κόμβος που έκανε το request θα κλείσει το socket και θα περιμένει μια απάντηση, αν έχουν γίνει δύο ταυτόσημα (ως προς key) requests (πχ insert κάτι και μετά ξανά insert κάτι με άλλο value πχ), τότε προκύπτει θέμα ο κόμβος που έκανε το request πώς θα αναγνωρίσει σε ποιο request αναφέρεται η απάντηση του (το ίδιο θέμα προκύπτει και αν σταλεί ακριβώς το ίδιο request δεύτερη φορά πχ). Για να το αντιμετωπίσουμε αυτό πχ στα queries, ο τρόπος που εμείς σκεφτόμαστε να τα υλοποιήσουμε έχει να κάνει με την ανάθεση ενός μοναδικού αριθμού ανά κόμβο (requestNumber) για κάθε request που στέλνει ώστε να μπορεί να το ταυτοποιήσει μετά στην απάντηση. Αυτό είναι αποδεκτό, ή υπάρχει κάποιος άλλος καλύτερος τρόπος/εναλλακτική;</div></div></div></blockquote><div><br></div><div>Συνήθως στα requests δίνεται κάποιο id για να ξεχωρίζουν, οπότε μπορεί να χρησιμοποιηθεί αυτό. </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div dir="auto"><div dir="ltr"> </div></div></div></blockquote><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div dir="auto"><div dir="ltr"><br>4) Θεωρούμε ότι τα ονόματα αρχείων/keys είναι μοναδικά, έτσι;<br></div></div></div></blockquote><div>ναι </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div dir="auto"><div dir="ltr"><br>5) Στην περίπτωση του replication, αν πάει και γίνει insert σε &quot;ενδιάμεσο&quot; RM της αλυσίδας (ούτε στην αρχή ούτε στο τέλος του chain), τότε το μήνυμα πρέπει να φύγει και προς τις δύο διευθύνσεις (προς τον προηγούμενο και τον επόμενο) για να φτάσει σε όλους τους RMs; Ή πάντα θα φεύγει προς τον επόμενο και θα πρέπει να κάνει όλο τον γύρο του ring για να φτάσει στον προηγούμενο;<br></div></div></div></blockquote><div><br></div><div>Μπορείτε να το υλοποιήσετε όπως θέλετε. </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div dir="auto"><div dir="ltr"><br>6) Αν έχουμε δύο διαφορετικούς node Α και Β με ίση απόσταση από έναν άλλο node C (που είναι υπεύθυνος έστω για το κλειδί Χ) και ο Α τρέξει insert για το X ενώ ο Β ταυτόχρονα τρέξει query για το X, τότε το αποτέλεσμα εξαρτάται προφανώς από το ποιο request θα φτάσει πρώτο στον C. Η περίπτωση αυτή είναι έγκυρη (και μπορεί να συμβεί) για τα CLIs/nodes της εφαρμογής μας ή να υποθέσουμε ότι δε θα γίνει κάτι τέτοιο ή κάτι γενικότερο (περιπλέκεται με την ύπαρξη replicas);<br></div></div></div></blockquote><div>Ναι, θα μπορούσε να συμβεί αυτό.  </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div dir="auto"><div dir="ltr"><br>7) Είναι εντάξει για την εργασία εάν για κάθε node που θέλουμε να ξεκινήσουμε πρέπει να τρέξουμε ένα κατάλληλο script στο συγκεκριμένο μηχάνημα που θέλουμε να ξεκινήσουμε και να δίνει ο χρήστης το port που θέλει να μπει αυτός ο node; (δηλαδή χρειάζεται να τρέξουμε στο συγκεκριμένο μηχάνημα κώδικα, όχι απομακρυσμένα)<br></div></div></div></blockquote><div>ναι </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div dir="auto"><div dir="ltr"><br>8) Σχετικά με το overlay, θα το υλοποιήσουμε και αυτό ως μήνυμα που θα περνάει σε όλο το δακτύλιο, σωστά; Οπότε αν μπορεί να το στείλει οποιαδήποτε κόμβος (και όχι μόνο ο bootstrap), τότε η σειρά που θα εμφανιστούν οι κόμβοι δε θα είναι μοναδική στο output. Αυτό είναι σωστό για την εργασία;<br></div></div></div></blockquote><div>σωστά. </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div dir="auto"><div dir="ltr"><br>Σας ευχαριστώ για το χρόνο σας,<br>Ιάσων</div></div></div>
_______________________________________________<br>
Distrib mailing list<br>
<a href="mailto:Distrib@lists.cslab.ece.ntua.gr" target="_blank">Distrib@lists.cslab.ece.ntua.gr</a><br>
<a href="http://lists.cslab.ece.ntua.gr/mailman/listinfo/distrib" rel="noreferrer" target="_blank">http://lists.cslab.ece.ntua.gr/mailman/listinfo/distrib</a><br>
</blockquote></div></div>