Il blocco distribuito basato su zk scritto in precedenza è il seguente:
Redis implementa il principio del blocco distribuito:
Il principio per implementare i blocchi distribuiti in Redis è chiamare il comando SETNX di redis, e se la chiave esiste già, il comando SETNX non fa nulla. Il comando restituisce 1 quando l'impostazione ha successo e 0 quando l'impostazione fallisce.
Innanzitutto, il nostro sito simula 10.000 prodotti, poi scrive una console che simula la richiesta HTTP, che impiega 40 secondi per completare l'acquisto, il rendering è il seguente:
Crea un nuovo sito web ASP.NET Core 3.1, e il pacchetto lock-uri redis è il seguente:
Ho visto che molti lucchetti di rilascio su Internet sono scritti come segue:
Tuttavia, sembra che possa esserci un problema: nel caso di concorrenza, è possibile restituire il vero al momento della sentenza, è effettivamente un blocco aggiunto da solo, ma quando il blocco viene cancellato, può essere inIn casi estremi, il blocco è stato ottenuto da un altro thread, nel caso in cui il blocco di qualcun altro venga cancellato.
Pertanto, quando si ottiene una serratura, è necessario aprire un filo per estendere il tempo di scadenza della serratura.
L'interfaccia di WeatherForecastController è la seguente:
Puoi avviare il sito API tramite la riga di comando, che può essere facilmente riavviata, come segue:
Crea una nuova richiesta HTTP mockup .NET Core per l'acquisto rapido, il codice è il seguente:
Se c'è qualcosa che non va, grazie per averlo corretto.
Infine, allega il codice sorgente:
Turisti, se volete vedere il contenuto nascosto di questo post, vi prego Risposta
|