Scenarii de aplicare ale blocajelor distribuite: Odată cu dezvoltarea serviciilor, aplicațiile individuale devin clustere, blocările distribuite rezolvă funcționarea diferitelor procese (fire) pe aceeași resursă în situații concurente, iar unele servicii trebuie să necesite un singur fir pentru a funcționa, de exemplu: modificări ale sumelor depozitelor, modificări ale stocurilor de mărfuri etc.
Recenzie:
În articolul anterior "[Practice]ASP.NET Core Based on Redis Distributed Lock Flash Kill", când am adăugat o blocare, am activat și un fir de legătură în fundal pentru a prelungi timpul de blocare, astfel încât atunci când blocarea este eliberată, blocarea ocupată de alte fire nu va fi ștearsă din greșeală.
După ce înveți Redis să folosești scripturi Lua, poți folosi ușor scripturi pentru a completa blocajele de ocupare și a elibera blocaje.
Mai întâi, să aruncăm o privire la randări astfel:
Mai întâi am deschis 1000 de fire paralele pentru a concura pentru lacăt, iar lacătul a expirat timp de 5 secunde.Am finalizat 1000 de fire în 5 secunde și doar un fir a reușit să obțină blocajulDupă așteptarea de 6 secunde, încuietoarea se eliberează automat, iar tu poți vedea că a doua sarcină a obținut cu succes încuietoarea, a eliberat-o imediat, iar codul ulterior a obținut cu succes blocarea.
Scriptul lua pentru a obține blocajul este următorul:
Scriptul lua pentru eliberarea lacătului este următorul:
Cod de interfață:
Descărcare cod sursă:Autentificarea cu hyperlink este vizibilă.
Modifică "[Practice] ASP.NET Core bazat pe lock-ul distribuit Redis este implementat folosind acest articol, iar site-ul nostru o simulează10000 de articole, și apoi a scris o consolă pentru a simula timpul cererii HTTPEmisiunea cu casa închisă este finalizată în 6 secunde, așa cum se arată în figura de mai jos:
Modificați codul cererii de simulare a testului:
(Sfârșit)
|