[Distrib] Απορία για το linearizability consistency με chain replication

Dimitris Oikonomou dimitris.oik96 at gmail.com
Fri Mar 19 21:09:23 EET 2021


Καλησπέρα,

Έχω μια σεχιτική ερώτηση. Ας υποθέσουμε ότι έχουμε replication factor k=5
και έστω ότι για ένα key-value pair (έστω key=test, value=1234) οι κομβοι
που περιέχουν το δοθεν pair είναι οι Α,Β,Γ,Δ,Ε με "κύριο" κόμβο τον Α
(δηλαδή ο Α είναι ο κόμβος που θα έχει το key ακόμη και χωρίς replication).
Ας υποθέσουμε ότι κάνουμε query το key:test από τον κόμβο Γ τη χρονική
στιγμή t και επίσης ας υποθέσουμε ότι αλλάζουμε τη τιμή του "test" σε
"5678" απευθείας από τον κόμβο Α τη χρονική στιγμη t-ε, όπου ε αρκετά
μικρός χρόνος (πχ ε=0.00001 sec). Τότε με την απάντησή σας το quey θα
απαντήσει την τιμή "1234" που ειναι λάθος, αφού θα έχει ελέγξει τους
κόμβους Γ,Δ,Ε που δεν θα έχουν προλάβει να αλλάξουν οι τιμές των replicas.
Άρα λογικά θα πρέπει να περάσει όλη την αλυσίδα, σωστά? Ή μήπως χάνω κάτι?

Στις Παρ, 19 Μαρ 2021 στις 10:44 π.μ., ο/η Katerina Doka <
katerina at cslab.ece.ntua.gr> έγραψε:

> Το ιδανικό θα ήταν να απαντάει απευθείας, αν τύχει να φτάσει σε αυτόν το
> query χωρίς να έχει περάσει από τον primary, για να γλιτώσεις το overhead
> σε μηνύματα. Αυτό προϋποθέτει βέβαια να γνωρίζει ο κόμβος ότι είναι ο
> τελευταίος της αλυσίδας για το συγκεκριμένο key, που από την άλλη πλευρά
> έχει ένα extra διαχειριστικό κόστος.
>
> Στις Παρ, 19 Μαρ 2021 στις 10:12 π.μ., ο/η Ευσταθία Σταθά <
> fay.statha at gmail.com> έγραψε:
>
>> Καθώς μελετούσα τα αποτελέσματα από τα πειράματα και έγραφα την αναφορά,
>> μου προέκυψε μια απορία για το linearizability consistency με chain
>> replication. Συγκεκριμένα, τόσο στο μάθημα όσο και στην εκφώνηση έγινε
>> σαφές πως ένα read γίνεται πάντα από τον τελευταίο RM στην αλυσίδα. Ωστόσο,
>> εμείς υλοποιήσαμε με τρόπο τέτοιο ώστε το αίτημα να ικανοποιείται μόνο
>> φτάνοντας σε αυτόν έπειτα από "διάσχιση" όλης της αλυσίδας. Αναρωτιέμαι αν
>> αυτή η προσέγγιση είναι η σωστή ή αν θα έπρεπε να απαντάει ο τελευταίος
>> ακόμα κι αν το αίτημα φτάσει απευθείας σε αυτόν πριν περάσει από
>> οποιονδήποτε άλλο κόμβο. Εμείς π.χ. σε αυτή την περίπτωση θα το
>> δρομολογήσουμε σε όλο το Chord εως ότου φτάσει στον υπεύθυνο κόμβο για το
>> κλειδί, ο οποίος και θα το δρομολογήσει στον τελευταίο στην αλυσίδα.
>>
>> Ως εκ τούτου, ήθελα να σας ρωτήσω σχετικά με το ποια από τις δύο
>> προσεγγίσεις είναι η σωστή, καθώς έχω μπερδευτεί λίγο.
>>
>> --
>> Με εκτίμηση,
>> Ευσταθία Σταθά
>> Φοιτήτρια ΗΜΜΥ ΕΜΠ
>> *Α.Μ.* 03116190
>> *Τηλέφωνο* +306978202159
>>
>>
>> _______________________________________________
>> Distrib mailing list
>> Distrib at lists.cslab.ece.ntua.gr
>> http://lists.cslab.ece.ntua.gr/mailman/listinfo/distrib
>>
> _______________________________________________
> 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/20210319/e4803f1e/attachment-0001.htm>


More information about the Distrib mailing list