Ten artykuł jest lustrzanym artykułem tłumaczenia maszynowego, kliknij tutaj, aby przejść do oryginalnego artykułu.

Widok: 34174|Odpowiedź: 5

[.NET Core] .NET Core implementuje rozproszone parsowanie zasad blokad oparte na Redis

[Skopiuj link]
Opublikowano 22.09.2020 09:17:22 | | | |
W scenariuszach biznesowych jednoczesne operacje z treścią, takie jak inwentarz towarowy, ten sam plik itp., nie są dozwolone, a aplikacja jest wdrażana na wielu serwerach.
[Rzeczywista walka] ASP.NET Core opiera się na wyprzedaży Redis Distributed Lock Flash Sale
https://www.itsvse.com/thread-9397-1-1.html

Wcześniej zapisany rozproszony zamek oparty na zk wygląda następująco:

.net/c# Implementacja rozproszonego zamka Zookeeper [Kod źródłowy]
https://www.itsvse.com/thread-4651-1-1.html

Co również musisz wiedzieć, aby przeczytać ten artykuł:

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

C# Obliczenia równoległe Parallel.For&Parallel.For
https://www.itsvse.com/thread-3671-1-1.html

.NET Core implementuje rozproszone blokady oparte na RedisieZasada polega na wywołaniu polecenia SETNX w redis, jeśli klucz już istnieje, polecenie SETNX nic nie robi. Polecenie zwraca 1, gdy ustawienie się powiodło, i 0, gdy ustawienie się nie powiedzie.

Logowanie do linku jest widoczne.

Stwórz nowy projekt konsoli .NET Core 3.1, dodaj referencję do StackExchange.Redis i użyj polecenia nuget w następujący sposób:

Metodę StringSet biblioteki wywołujemy przez kod źródłowy StackExchange.Redis, widzimy, że metoda StringSet wywołuje prywatną metodę GetStringSetMessage, aby wykonać różne polecenia zestawu za pomocą wartości enumeracyjnej , a kod wygląda następująco:

Wykonujemy polecenie SETNX 2000 razy poprzez równoległe wywołanie testowe do programu, które odbywa się w 2 częściach, w których ważność pamięci podręcznej klucza wynosi 5 sekund, czyli klucz zostanie automatycznie zwolniony po 5 sekundach, czyli blokada zostanie zwolniona.

Kod jest następujący:


Jak widać, łącznie 2 udane wstawienia i nieudane próby z 1998 roku są dokładnie tym, czego się spodziewaliśmy, a wizualizacje przedstawiają się następująco:


Obecnie zamek nie został jeszcze zwolniony.
(Koniec)









Poprzedni:Nie udało się znaleźć obejścia dla części ścieżki "\bin\roslyn\csc.exe"
Następny:EF Core Series 2 kapsuluje OnModelCreating, tworzy indeksy za pomocą odbić i inne elementy
 Ziemianin| Opublikowano 26.09.2020 15:37:52 |
test123
Opublikowano 20.11.2020 11:18:31 |
Jeśli podczas wdrażania kontenerów istnieje środowisko wielowątkowe i środowisko wieloinstancyjne, czy jest problem z tym obsługą?
 Ziemianin| Opublikowano 20.11.2020 11:29:44 |
qiuyueming Opublikowano 2020-11-20, 11:18
Jeśli podczas wdrażania kontenerów istnieje środowisko wielowątkowe i środowisko wieloinstancyjne, czy jest problem z tym obsługą? ...

Wieloinstancjowe oznacza wielowątkowość, a w kodzie źródłowym wielowątkowość wywołuje redis, a tylko jeden wątek ma blokadę
Opublikowano 22.03.2022 14:32:40 |
Wsparcie, wsparcie
Opublikowano 23.03.2022 11:15:30 |
Nauka jest dobra @
Zrzeczenie się:
Całe oprogramowanie, materiały programistyczne lub artykuły publikowane przez Code Farmer Network służą wyłącznie celom edukacyjnym i badawczym; Powyższe treści nie mogą być wykorzystywane do celów komercyjnych ani nielegalnych, w przeciwnym razie użytkownicy ponoszą wszelkie konsekwencje. Informacje na tej stronie pochodzą z Internetu, a spory dotyczące praw autorskich nie mają z nią nic wspólnego. Musisz całkowicie usunąć powyższą zawartość z komputera w ciągu 24 godzin od pobrania. Jeśli spodoba Ci się program, wspieraj oryginalne oprogramowanie, kup rejestrację i korzystaj z lepszych, autentycznych usług. W przypadku naruszenia praw prosimy o kontakt mailowy.

Mail To:help@itsvse.com