Scenariji uporabe porazdeljenih zaklepov: Z razvojem storitev posamezne aplikacije postanejo grozde, porazdeljene ključavnice rešujejo delovanje različnih procesov (niti) na istem viru v sočasnih situacijah, nekatere storitve pa morajo za delovanje zahtevati eno nit, na primer: spremembe zneska depozitov, spremembe zalog blaga itd.
Pregled:
V prejšnjem članku "[Praksa]ASP.NET jedro na osnovi Redis Distributed Lock Flash Kill" smo ob dodajanju ključavnice omogočili tudi ozadje niti za podaljšanje časa zaklepa, da zagotovimo, da ob sprostitvi ključavnice ne bo pomotoma izbrisana.
Ko se naučiš Redis uporabljati Lua skripte, lahko skripte enostavno uporabiš za dokončanje zasedenosti in sprostitev zaklepov.
Najprej si poglejmo upodobitve takole:
Najprej smo odprli 1000 vzporednih niti, da bi tekmovali za ključavnico, in ključavnica je trajala 5 sekund.V 5 sekundah smo zaključili 1000 niti, in le ena nit je uspešno pridobila ključavnicoPo 6 sekundah čakanja se ključavnica samodejno sprosti in vidite, da je druga naloga uspešno pridobila ključavnico, takoj jo sprostila, nato pa je naslednja koda uspešno pridobila ključavnico.
Lua skripta za pridobitev zaklepa je naslednja:
Lua skripta za sprostitev ključavnice je naslednja:
Uporabniška koda:
Prenos izvorne kode:Prijava do hiperpovezave je vidna.
Sprememba "[Practice] ASP.NET Core na osnovi Redis distributed lock flash sale" je implementirana z uporabo tega članka, naša spletna stran pa jo simulira10000 predmetov, nato pa je napisal konzolo za simulacijo časa HTTP zahteveRazprodan je v 6 sekundah, kot je prikazano na spodnji sliki:
Spremenite kodo zahteve za simulacijo testa:
(Konec)
|