Σε επιχειρηματικά σενάρια, δεν επιτρέπονται ταυτόχρονες λειτουργίες περιεχομένου, όπως απογραφή εμπορευμάτων, το ίδιο αρχείο κ.λπ., και η εφαρμογή προγράμματος αναπτύσσεται σε πολλούς διακομιστές.
Το προηγουμένως γραμμένο κατανεμημένο κλείδωμα που βασίζεται σε zk έχει ως εξής:
Τι πρέπει επίσης να γνωρίζετε για να διαβάσετε αυτό το άρθρο:
Το .NET Core υλοποιεί κατανεμημένα κλειδώματα που βασίζονται στο RedisΗ αρχή είναι να καλέσετε την εντολή SETNX του redis, εάν το κλειδί υπάρχει ήδη, η εντολή SETNX δεν κάνει τίποτα. Η εντολή επιστρέφει 1 όταν η ρύθμιση είναι επιτυχής και 0 όταν η ρύθμιση αποτυγχάνει.
Η σύνδεση με υπερσύνδεσμο είναι ορατή.
Δημιουργήστε ένα νέο έργο κονσόλας .NET Core 3.1, προσθέστε μια αναφορά StackExchange.Redis και χρησιμοποιήστε την εντολή nuget ως εξής:
Καλούμε τη μέθοδο StringSet της βιβλιοθήκης, μέσω του πηγαίου κώδικα StackExchange.Redis, μπορούμε να δούμε ότι η μέθοδος StringSet θα καλέσει την ιδιωτική μέθοδο του GetStringSetMessage για να εκτελέσει διαφορετικές εντολές συνόλου μέσω της τιμής απαρίθμησης του πότε, ο κώδικας έχει ως εξής:
Εκτελούμε την εντολή SETNX 2000 φορές μέσω μιας παράλληλης δοκιμαστικής κλήσης στο πρόγραμμα, η οποία εκτελείται σε 2 δόσεις, στις οποίες η ισχύς της προσωρινής μνήμης του κλειδιού είναι 5 δευτερόλεπτα, δηλαδή το κλειδί θα απελευθερωθεί αυτόματα μετά από 5 δευτερόλεπτα, δηλαδή θα απελευθερωθεί το κλείδωμα.
Ο κωδικός έχει ως εξής:
Όπως μπορείτε να δείτε, συνολικά 2 επιτυχημένες εισαγωγές και 1998 αποτυχημένες προσπάθειες είναι ακριβώς αυτό που περιμέναμε και οι αποδόσεις είναι οι εξής:
Προς το παρόν, η κλειδαριά δεν έχει ακόμη απελευθερωθεί. (Τέλος)
|