Scenariusze zastosowań rozproszonych blokad: Wraz z rozwojem usług pojedyncze aplikacje stają się klastrami, rozproszone blokady rozwiązują działanie różnych procesów (wątków) na tym samym zasobu w równoległych sytuacjach, a niektóre usługi muszą wymagać jednego wątku do działania, na przykład: zmiany w kwotach depozytów, zmiany w zapasach towarowych itd.
Recenzja:
W poprzednim artykule "[Practice]ASP.NET Core Based on Redis Distributed Lock Flash Kill", gdy dodaliśmy blokadę, włączyliśmy także wątek w tle, aby wydłużyć czas blokady, aby zapewnić, że po zwolnieniu blokady blokada zajmowana przez inne wątki nie zostanie przypadkowo usunięta.
Po nauczeniu się Redis korzystania ze skryptów Lua, możesz łatwo używać skryptów do zamykania blokad i odblokowywania blokad.
Najpierw przyjrzyjmy się tym wizualizacjom w następujący sposób:
Najpierw otworzyliśmy 1000 równoległych gwintów, by konkurować o zamek, a zamek wygasł na 5 sekund.Ukończyliśmy 1000 wątków w 5 sekund i tylko jeden wątek skutecznie zdobył zamekPo 6 sekundach zamek zostanie automatycznie zwolniony i zobaczysz, że drugie zadanie pomyślnie zdobyło zamek i natychmiast go zwolniło, a następny kod skutecznie go uzyskał.
Skrypt lua do uzyskania blokady wygląda następująco:
Skrypt lua do zwalniania blokady wygląda następująco:
Kod interfejsu:
Pobranie kodu źródłowego:Logowanie do linku jest widoczne.
Modyfikacja "[Practice] ASP.NET Core based on Redis distributed lock flash sale" jest implementowana na podstawie tego artykułu, a nasza strona internetowa to symuluje10000 przedmiotów, a następnie napisał konsolę symulującą czas żądania HTTPWyprzedanie trwa 6 sekund, jak pokazano na poniższym rysunku:
Zmodyfikuj kod żądania symulacji testu:
(Koniec)
|