Wcześniej zapisany rozproszony zamek oparty na zk wygląda następująco:
Redis wdraża zasadę rozproszonego blokowania:
Zasada implementacji rozproszonych zamków w Redis polega na wywołaniu pokomendy SETNX w redis, a jeśli klucz już istnieje, polecenie SETNX nie robi nic. Polecenie zwraca 1, gdy ustawienie się powiodło, i 0, gdy ustawienie się nie powiedzie.
Najpierw nasza strona symuluje 10 000 produktów, a następnie pisze konsolę symulującą żądanie HTTP, które zajmuje 40 sekund na zakończenie zakupu, a renderowanie wygląda następująco:
Stwórz nową stronę internetową ASP.NET Core 3.1, a pakiet blokady Redis wygląda następująco:
Widziałem, że wiele blokad wypuszczających w Internecie jest napisanych następująco:
Jednak wydaje się, że może istnieć problem, w przypadku współbieżności możliwe jest zwrócenie wartości true w momencie wyroku, jest to faktycznie zamek dodany samodzielnie, ale gdy blokada zostanie usunięta, może być wW skrajnych przypadkach, blokada została uzyskana przez inny wątek, na wypadek usunięcia blokady kogoś innego.
Dlatego przy uzyskiwaniu zamka trzeba otworzyć gwint, aby wydłużyć jej czas ważności.
Interfejs WeatherForecastController wygląda następująco:
Możesz uruchomić stronę API przez linię poleceń, którą można łatwo zrestartować, w następujący sposób:
Stwórz nową makętę HTTP .NET Core do zakupu snap, a kod wygląda następująco:
Jeśli coś jest nie tak, dziękuję za poprawkę.
Na koniec dołącz kod źródłowy:
Turyści, jeśli chcecie zobaczyć ukrytą zawartość tego wpisu, proszę Odpowiedź
|