Toepassingsscenario's van gedistribueerde sloten: Met de ontwikkeling van services worden losse applicaties clusters, lossen gedistribueerde sloten de werking van verschillende processen (threads) op dezelfde resource in gelijktijdige situaties op, en sommige services moeten één thread vereisen om te functioneren, bijvoorbeeld: wijzigingen in depositobedragen, wijzigingen in voorraad grondstoffen, enzovoort.
Recensie:
In het vorige artikel "[Practice]ASP.NET Core Based on Redis Distributed Lock Flash Kill", hebben we, toen we een lock toevoegden, ook een achtergronddraad ingeschakeld om de locktime te verlengen, zodat bij het loslaten van de lock de lock die door andere threads wordt bezet niet per ongeluk wordt verwijderd.
Nadat je Redis hebt geleerd Lua-scripts te gebruiken, kun je gemakkelijk scripts gebruiken om bezettingssloten te voltooien en vergrendelingen te ontgrendelen.
Laten we eerst naar de renderings als volgt kijken:
We openden eerst 1000 parallelle schroefdraadjes om te concurreren om het slot, en het slot liep 5 seconden af.We voltooiden 1000 threads in 5 seconden, en slechts één thread kreeg de lock succesvolNa 6 seconden wachten wordt het slot automatisch losgelaten, en je kunt zien dat de tweede taak het slot succesvol heeft gekregen, het slot direct heeft vrijgegeven, en de volgende code het slot succesvol heeft bereikt.
Het lua-script om het slot te krijgen is als volgt:
Het lua-script om het slot te openen is als volgt:
Interfacecode:
Broncode downloaden:De hyperlink-login is zichtbaar.
Modify "[Practice] ASP.NET Core based on Redis distributed lock flash sale" is geïmplementeerd met dit artikel, en onze website simuleert dit10.000 items, en schreef vervolgens een console om de HTTP-verzoektijd te simulerenDe uitverkochte wedstrijd is in 6 seconden voltooid, zoals getoond in de onderstaande figuur:
Pas de testsimulatie-verzoekcode aan:
(Einde)
|