Το προηγουμένως γραμμένο κατανεμημένο κλείδωμα που βασίζεται σε zk έχει ως εξής:
Το Redis εφαρμόζει την αρχή του κατανεμημένου κλειδώματος:
Η αρχή της υλοποίησης κατανεμημένων κλειδαριών στο Redis είναι να καλέσετε την εντολή SETNX του redis, και εάν το κλειδί υπάρχει ήδη, η εντολή SETNX δεν κάνει τίποτα. Η εντολή επιστρέφει 1 όταν η ρύθμιση είναι επιτυχής και 0 όταν η ρύθμιση αποτυγχάνει.
Αρχικά, ο ιστότοπός μας προσομοιώνει 10.000 προϊόντα και, στη συνέχεια, γράφει μια κονσόλα που προσομοιώνει το αίτημα HTTP, το οποίο διαρκεί 40 δευτερόλεπτα για να ολοκληρωθεί η αγορά, η απόδοση έχει ως εξής:
Δημιουργήστε έναν νέο ιστότοπο ASP.NET Core 3.1 και το πακέτο κλειδώματος redis έχει ως εξής:
Είδα ότι πολλές κλειδαριές απελευθέρωσης στο Διαδίκτυο είναι γραμμένες ως εξής:
Ωστόσο, φαίνεται ότι μπορεί να υπάρχει πρόβλημα, στην περίπτωση του συγχρονισμού, είναι δυνατό να επιστραφεί true τη στιγμή της κρίσης, είναι πράγματι μια κλειδαριά που προστέθηκε από μόνη της, αλλά όταν διαγραφεί η κλειδαριά, μπορεί να είναι μέσαΣε ακραίες περιπτώσεις, η κλειδαριά έχει ληφθεί από άλλο νήμα, σε περίπτωση που διαγραφεί η κλειδαριά κάποιου άλλου.
Επομένως, όταν αποκτάτε μια κλειδαριά, πρέπει να ανοίξετε ένα νήμα για να παρατείνετε τον χρόνο λήξης της κλειδαριάς.
Η διεπαφή WeatherForecastController έχει ως εξής:
Μπορείτε να ξεκινήσετε τον ιστότοπο API μέσω της γραμμής εντολών, η οποία μπορεί εύκολα να επανεκκινηθεί, ως εξής:
Δημιουργήστε ένα νέο αίτημα HTTP μακέτας .NET Core για γρήγορη αγορά, ο κώδικας έχει ως εξής:
Αν υπάρχει κάτι λάθος, σας ευχαριστώ που το διορθώσατε.
Τέλος, επισυνάψτε τον πηγαίο κώδικα:
Τουρίστες, αν θέλετε να δείτε το κρυφό περιεχόμενο αυτής της ανάρτησης, παρακαλώ Απάντηση
|