Σενάρια εφαρμογής κατανεμημένων κλειδαριών: Με την ανάπτυξη υπηρεσιών, οι μεμονωμένες εφαρμογές γίνονται συμπλέγματα, οι κατανεμημένες κλειδαριές επιλύουν τη λειτουργία διαφορετικών διεργασιών (νημάτων) στον ίδιο πόρο σε ταυτόχρονες καταστάσεις και ορισμένες υπηρεσίες πρέπει να απαιτούν ένα μόνο νήμα για να λειτουργήσουν, για παράδειγμα: αλλαγές στα ποσά των καταθέσεων, αλλαγές στο απόθεμα εμπορευμάτων κ.λπ.
Αναθεώρηση:
Στο προηγούμενο άρθρο "[Practice]ASP.NET Core Based on Redis Distributed Lock Flash Kill", όταν προσθέσαμε μια κλειδαριά, ενεργοποιήσαμε επίσης ένα νήμα φόντου για να παρατείνουμε τον χρόνο κλειδώματος, έτσι ώστε να διασφαλίσουμε ότι όταν απελευθερωθεί η κλειδαριά, η κλειδαριά που καταλαμβάνεται από άλλα νήματα δεν θα διαγραφεί κατά λάθος.
Αφού μάθετε το Redis να χρησιμοποιεί σενάρια Lua, μπορείτε εύκολα να χρησιμοποιήσετε σενάρια για να ολοκληρώσετε κλειδώματα πληρότητας και να απελευθερώσετε κλειδαριές.
Αρχικά, ας ρίξουμε μια ματιά στις αποδόσεις ως εξής:
Πρώτα ανοίξαμε 1000 παράλληλα νήματα για να ανταγωνιστούμε για την κλειδαριά και η κλειδαριά έληξε για 5 δευτερόλεπτα.Ολοκληρώσαμε 1000 νήματα σε 5 δευτερόλεπτα και μόνο 1 νήμα απέκτησε με επιτυχία την κλειδαριάΑφού περιμένετε 6 δευτερόλεπτα, η κλειδαριά θα απελευθερωθεί αυτόματα και μπορείτε να δείτε ότι η δεύτερη εργασία έλαβε με επιτυχία την κλειδαριά και απελευθέρωσε αμέσως την κλειδαριά και ο επόμενος κωδικός έλαβε με επιτυχία την κλειδαριά.
Το σενάριο lua για να αποκτήσετε το κλείδωμα είναι το εξής:
Το σενάριο lua για την απελευθέρωση της κλειδαριάς είναι το εξής:
Κωδικός διεπαφής:
Λήψη πηγαίου κώδικα:Η σύνδεση με υπερσύνδεσμο είναι ορατή.
Τροποποίηση Το "[Practice] ASP.NET Core based on Redis distributed lock flash sale" υλοποιείται χρησιμοποιώντας αυτό το άρθρο και ο ιστότοπός μας το προσομοιώνει10000 είδηκαι, στη συνέχεια, έγραψε μια κονσόλα για να προσομοιώσει τον χρόνο αίτησης HTTPΤο sold-out ολοκληρώνεται σε 6 δευτερόλεπτα, όπως φαίνεται στο παρακάτω σχήμα:
Τροποποιήστε τον κωδικό αιτήματος προσομοίωσης δοκιμής:
(Τέλος)
|