Предварително написаната zk-базирана разпределена заключваща система е следната:
Redis прилага принципа на разпределено заключване:
Принципът на реализиране на разпределени заключвания в Redis е да се извикне командата SETNX на redis, и ако ключът вече съществува, командата SETNX не прави нищо. Командата връща 1, когато настройката успее, и 0, когато настройката не успее.
Първо, нашият уебсайт симулира 10 000 продукта, след което пише конзолна заявка, симулираща HTTP заявка, която отнема 40 секунди за завършване на покупката, а рендерирането е следното:
Създайте нов уебсайт ASP.NET Core 3.1 и пакетът redis lock е следният:
Видях, че много освобождаващи заключвания в интернет са написани по следния начин:
Въпреки това, изглежда, че може да има проблем – в случай на конкурентност е възможно да се върне true в момента на преценка, това наистина е катинар, добавен сам по себе си, но когато заключването се изтрие, може да е вВ крайни случаи, заключването е получено чрез друга тема, в случай че ключалката на някой друг бъде изтрита.
Затова, при получаване на катинар, трябва да отворите нишка, за да удължите срока на валидност на ключалката.
Интерфейсът на WeatherForecastController е следният:
Можете да стартирате API уебсайта през командния ред, който лесно може да се рестартира, както следва:
Създайте нова HTTP заявка за макет на .NET Core за бърза покупка, кодът е следният:
Ако има нещо нередно, благодаря, че го коригирахте.
Накрая, прикачете изходния код:
Туристи, ако искате да видите скритото съдържание на този пост, моля Отговор
|