Das zuvor geschriebene zk-basierte verteilte Schloss ist wie folgt:
Redis setzt das Prinzip der verteilten Sperrung um:
Das Prinzip der Implementierung verteilter Schlösser in Redis besteht darin, den SETNX-Befehl redis aufzurufen, und wenn der Schlüssel bereits existiert, bewirkt der SETNX-Befehl nichts. Der Befehl gibt 1 zurück, wenn die Einstellung erfolgreich ist, und 0, wenn die Einstellung fehlschlägt.
Zuerst simuliert unsere Website 10.000 Produkte und schreibt dann eine Konsole, die eine HTTP-Anfrage simuliert, die 40 Sekunden zum Abschluss des Kaufs benötigt; die Darstellung sieht wie folgt aus:
Erstelle eine neue Website ASP.NET Core 3.1, und das Redis-Lock-Paket sieht wie folgt aus:
Ich habe gesehen, dass viele Release-Locks im Internet wie folgt geschrieben sind:
Allerdings scheint es ein Problem zu geben; im Fall von Nebenläufigkeit ist es möglich, zum Zeitpunkt des Urteils true zurückzugeben, es handelt sich tatsächlich um eine von sich selbst hinzugefügte Sperre, aber wenn die Sperre gelöscht wird, könnte sie inIn extremen Fällen, die Sperre wurde von einem anderen Thread erhalten, falls das Schloss eines anderen gelöscht wird.
Daher muss man beim Erlangen eines Schlosses einen Thread öffnen, um die Ablaufzeit des Schlosses zu verlängern.
Die WeatherForecastController-Schnittstelle ist wie folgt:
Sie können die API-Website über die Kommandozeile starten, die leicht neu gestartet werden kann, wie folgt:
Erstellen Sie eine neue .NET Core-Mockup-HTTP-Anfrage für den Snap-Kauf, der Code lautet wie folgt:
Falls etwas nicht stimmt, danke ich für die Korrektur.
Zum Schluss fügen Sie den Quellcode an:
Touristen, wenn ihr den versteckten Inhalt dieses Beitrags sehen wollt, bitte Antwort
|