Izplatīto slēdzeņu piemērošanas scenāriji: Attīstoties pakalpojumiem, atsevišķas lietojumprogrammas kļūst par klasteriem, sadalītās slēdzenes atrisina dažādu procesu (pavedienu) darbību vienā un tajā pašā resursā vienlaicīgās situācijās, un dažiem pakalpojumiem ir nepieciešams viens pavediens, piemēram: noguldījumu summu izmaiņas, preču krājumu izmaiņas utt.
Pārskats:
Iepriekšējā rakstā "[Prakse]ASP.NET kodols, kas balstīts uz Redis Distributed Lock Flash Kill", kad mēs pievienojām slēdzeni, mēs arī iespējojām fona pavedienu, lai pagarinātu bloķēšanas laiku, lai nodrošinātu, ka, atlaižot slēdzeni, citu pavedienu aizņemtā slēdzene netiks kļūdaini izdzēsta.
Pēc tam, kad esat iemācījies Redis izmantot Lua skriptus, varat viegli izmantot skriptus, lai pabeigtu noslogojuma bloķēšanu un atbrīvotu slēdzenes.
Pirmkārt, apskatīsim atveidojumus šādi:
Mēs vispirms atvērām 1000 paralēlus pavedienus, lai sacenstos par slēdzeni, un slēdzene beidzās 5 sekundes.Mēs pabeidzām 1000 pavedienus 5 sekundēs, un tikai 1 pavediens veiksmīgi ieguva slēdzeniPēc 6 sekunžu gaidīšanas slēdzene tiks automātiski atbrīvota, un jūs varat redzēt, ka otrais uzdevums ir veiksmīgi ieguvis slēdzeni un nekavējoties atbrīvojis slēdzeni, un nākamais kods ir veiksmīgi ieguvis slēdzeni.
Lua skripts, lai iegūtu slēdzeni, ir šāds:
Lua skripts, lai atbrīvotu slēdzeni, ir šāds:
Interfeisa kods:
Avota koda lejupielāde:Hipersaites pieteikšanās ir redzama.
Modificēt "[Prakse] ASP.NET Core, pamatojoties uz Redis izplatītās slēdzenes zibspuldzes pārdošanu" tiek īstenots, izmantojot šo rakstu, un mūsu vietne to simulē10000 precesun pēc tam uzrakstīja konsoli, lai simulētu HTTP pieprasījuma laikuIzpārdotais tiek pabeigts 6 sekundēs, kā parādīts attēlā:
Mainīt testa simulācijas pieprasījuma kodu:
(Beigas)
|