Questo articolo è un articolo speculare di traduzione automatica, clicca qui per saltare all'articolo originale.

Vista: 34174|Risposta: 5

[.NET Core] .NET Core implementa la parsing distribuita del principio dei lock-uri basata su Redis

[Copiato link]
Pubblicato su 22/09/2020 09:17:22 | | | |
Negli scenari aziendali, operazioni simultanee di contenuti, come l'inventario di merci, lo stesso file, ecc., non sono consentite, e l'applicazione del programma viene distribuita su più server.
[Combattimento reale] ASP.NET Core si basa sulla vendita flash di lucchetto distribuita di Redis
https://www.itsvse.com/thread-9397-1-1.html

Il blocco distribuito basato su zk scritto in precedenza è il seguente:

Implementazione di blocco distribuito .net/c# Zookeeper [codice sorgente]
https://www.itsvse.com/thread-4651-1-1.html

Cosa devi sapere anche per leggere questo articolo:

Volatile vs. Interlock vs. lock
https://www.itsvse.com/thread-5023-1-1.html

C# Calcolo Parallelo Parallelo.For&Parallel.For
https://www.itsvse.com/thread-3671-1-1.html

.NET Core implementa locks distribuiti basati su RedisIl principio è chiamare il comando SETNX di redis, 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.

Il login del link ipertestuale è visibile.

Crea un nuovo progetto console .NET Core 3.1, aggiungi un riferimento a StackExchange.Redis e usa il comando nuget come segue:

Chiamiamo il metodo StringSet della libreria, tramite il codice sorgente StackExchange.Redis possiamo vedere che il metodo StringSet chiamerà il metodo privato di GetStringSetMessage per eseguire diversi comandi set tramite il valore di enumerazione di quando, il codice è il seguente:

Eseguiamo il comando SETNX 2000 volte tramite una chiamata di test parallela al programma, che viene eseguita in 2 punte, in cui la validità della cache della chiave è di 5 secondi, cioè la chiave verrà rilasciata automaticamente dopo 5 secondi, cioè il blocco verrà rilasciato.

Il codice è il seguente:


Come potete vedere, un totale di 2 inserimenti riusciti e 1998 tentativi falliti sono esattamente ciò che ci aspettavamo, e i rendering sono i seguenti:


Al momento, la serratura non è ancora stata liberata.
(Fine)









Precedente:Non sono riuscito a trovare una soluzione per una parte del percorso "\bin\roslyn\csc.exe"
Prossimo:EF Core Series 2 racchiude OnModelCreating, crea indici usando riflessi e altro ancora
 Padrone di casa| Pubblicato su 26/09/2020 15:37:52 |
test123
Pubblicato su 20/11/2020 11:18:31 |
Se c'è un ambiente multithread e un ambiente multi-istanza durante il deployment dei container, c'è un problema con questa gestione?
 Padrone di casa| Pubblicato su 20/11/2020 11:29:44 |
qiuyueming Pubblicato il 20-11-2020 alle 23:18
Se c'è un ambiente multithread e un ambiente multi-istanza durante il deployment dei container, c'è un problema con questa gestione? ...

Multi-istanza significa multi-threading, e nel codice sorgente, multi-threaded chiama redis, e solo un thread ottiene un lock
Pubblicato su 22/03/2022 14:32:40 |
Supporto, supporto
Pubblicato su 23/03/2022 11:15:30 |
Impara che questo è buono @
Disconoscimento:
Tutto il software, i materiali di programmazione o gli articoli pubblicati dalla Code Farmer Network sono destinati esclusivamente all'apprendimento e alla ricerca; I contenuti sopra elencati non devono essere utilizzati per scopi commerciali o illegali, altrimenti gli utenti dovranno sostenere tutte le conseguenze. Le informazioni su questo sito provengono da Internet, e le controversie sul copyright non hanno nulla a che fare con questo sito. Devi eliminare completamente i contenuti sopra elencati dal tuo computer entro 24 ore dal download. Se ti piace il programma, ti preghiamo di supportare software autentico, acquistare la registrazione e ottenere servizi autentici migliori. In caso di violazione, vi preghiamo di contattarci via email.

Mail To:help@itsvse.com