Сценарии на приложение на разпределени заключвания: С развитието на услугите отделните приложения се превръщат в клъстери, разпределените заключвания решават работата на различни процеси (нишки) върху един и същ ресурс в паралелни ситуации, а някои услуги трябва да изискват една нишка, за да функционират, например: промени в сумите на депозитите, промени в запасите на стоките и др.
Преглед:
В предишната статия "[Практика]ASP.NET ядро базирано на Redis Distributed Lock Flash Kill", когато добавихме заключване, също така активирахме фонова нишка, за да удължим времето за заключване, така че при освобождаването на заключването заключването няма да бъде изтрито по погрешка.
След като научиш Redis да използва Lua скриптове, лесно можеш да използваш скриптове за завършване на заключвания за заетост и освобождаване на заключвания.
Първо, нека разгледаме визуализациите по следния начин:
Първо отворихме 1000 паралелни нишки, за да се състезаваме за заключването, и заключването изтече за 5 секунди.Завършихме 1000 нишки за 5 секунди и само една нишка успешно получи заключванетоСлед 6 секунди изчакване ключалката се освобождава автоматично и можете да видите, че втората задача успешно е получила ключалката и веднага е освободила ключалката, а следващият код успешно е получил ключалката.
Lua скриптът за получаване на заключването е следният:
Lua скриптът за освобождаване на заключването е следният:
Код на интерфейса:
Изтегляне на изходния код:Входът към хиперлинк е видим.
Модифициране на "[Практика] ASP.NET Core базирано на Redis distributed lock flash sale" е реализирано чрез тази статия, а нашият уебсайт я симулира10000 артикула, и след това написа конзола, която симулира времето за HTTP заявкаРазпродаденият билет е завършен за 6 секунди, както е показано на фигурата по-долу:
Модифицирайте кода за заявка за тестова симулация:
(Край)
|