Scenari applicabili dei lock distribuiti: Con lo sviluppo dei servizi, singole applicazioni diventano cluster, i lock distribuiti risolvono il funzionamento di processi diversi (thread) sulla stessa risorsa in situazioni concorrenti, e alcuni servizi devono richiedere un singolo thread per funzionare, ad esempio: variazioni negli importi dei depositi, modifiche nell'inventario delle merci, ecc.
Recensione:
Nell'articolo precedente "[Practice]ASP.NET Core Based on Redis Distributed Lock Flash Kill", quando abbiamo aggiunto un lock, abbiamo anche attivato un thread in background per estendere il tempo del lock, così da garantire che, quando il lock viene rilasciato, il lock occupato da altri thread non venga cancellato per errore.
Dopo aver imparato Redis a usare gli script Lua, puoi facilmente usare script per completare blocchi di occupazione e liberare blocchi.
Per prima cosa, diamo un'occhiata ai rendering come segue:
Abbiamo prima aperto 1000 filettature parallele per competere per il lucchetto, e il lucchetto è scaduto per 5 secondi.Abbiamo completato 1000 thread in 5 secondi, e solo 1 thread è riuscito ad acquisire il bloccoDopo 6 secondi di attesa, il blocco si sblocca automaticamente e puoi vedere che il secondo compito ha ottenuto con successo il blocchetto, e immediatamente rilasciato il blocco, e il codice successivo ha ottenuto con successo il blocco.
Lo script lua per ottenere il blocco è il seguente:
Lo script lua per liberare il blocco è il seguente:
Codice dell'interfaccia:
Scarica codice sorgente:Il login del link ipertestuale è visibile.
Modifica "[Pratica] ASP.NET Core basato su Redis distributed lock flash sale" è implementato utilizzando questo articolo, e il nostro sito web lo simula10000 articoli, e poi scrisse una console per simulare il tempo della richiesta HTTPIl tutto esaurito si completa in 6 secondi, come mostrato nella figura sottostante:
Modifica il codice della richiesta di simulazione di test:
(Fine)
|