Тази статия е огледална статия за машинен превод, моля, кликнете тук, за да преминете към оригиналната статия.

Изглед: 34174|Отговор: 5

[.NET Core] .NET Core реализира разпределен принцип на заключване, базирано на Redis

[Копирай линк]
Публикувано в 22.09.2020 г. 9:17:22 ч. | | | |
В бизнес сценарии едновременни операции със съдържание, като инвентаризация на стоки, един и същ файл и др., не са позволени, а програмното приложение се разгръща на няколко сървъра.
[Реален бой] ASP.NET Core е базиран на разпродажба на Redis с разпределени ключалки
https://www.itsvse.com/thread-9397-1-1.html

Предварително написаната zk-базирана разпределена заключваща система е следната:

.net/c# Zookeeper разпределена заключваща имплементация [Изходен код]
https://www.itsvse.com/thread-4651-1-1.html

Какво също трябва да знаете, за да прочетете тази статия:

Волатилни срещу блокирани срещу заключени
https://www.itsvse.com/thread-5023-1-1.html

C# Паралелно изчисление Parallel.For&Parallel.For
https://www.itsvse.com/thread-3671-1-1.html

.NET Core реализира разпределени заключвания, базирани на RedisПринципът е да се извиква командата SETNX на redis, ако ключът вече съществува, командата SETNX не прави нищо. Командата връща 1, когато настройката успее, и 0, когато настройката не успее.

Входът към хиперлинк е видим.

Създайте нов конзолен проект за .NET Core 3.1, добавете StackExchange.Redis референция и използвайте командата nuget по следния начин:

Извикваме метода StringSet на библиотеката, чрез изходния код на StackExchange.Redis, виждаме, че методът StringSet ще извика частния метод на GetStringSetMessage, за да изпълни различни команди на множеството чрез стойността на изброяването, когато кодът е следният:

Изпълняваме командата SETNX 2000 пъти чрез паралелно тестово извикване към програмата, което се изпълнява в 2 части, при които кеш валидността на ключа е 5 секунди, тоест ключът се освобождава автоматично след 5 секунди, тоест заключването се освобождава.

Кодът е следният:


Както виждате, общо 2 успешни вмъквания и неуспешни опити през 1998 г. са точно това, което очаквахме, а визуализациите са следните:


Към момента ключалката все още не е освободена.
(Край)









Предишен:Не успях да намеря заобиколно решение за част от пътя "\bin\roslyn\csc.exe".
Следващ:EF Core Series 2 обхваща OnModelCreating, създава индекси чрез отражения и други
 Хазяин| Публикувано в 26.09.2020 г. 15:37:52 ч. |
test123
Публикувано в 20.11.2020 г. 11:18:31 ч. |
Ако при внедряване на контейнери има многопоточна среда и мултиинстанционна среда, има ли проблем с тази обработка?
 Хазяин| Публикувано в 20.11.2020 г. 11:29:44 ч. |
qiuyueming Публикувано на 2020-11-20 11:18
Ако при внедряване на контейнери има многопоточна среда и мултиинстанционна среда, има ли проблем с тази обработка? ...

Мулти-инстанция означава многонишковост, а в изходния код многонишковият се извиква redis, като само една нишка получава заключване
Публикувано в 22.03.2022 г. 14:32:40 ч. |
Подкрепа, подкрепа
Публикувано в 23.03.2022 г. 11:15:30 ч. |
Научи се, че това е добре @
Отричане:
Целият софтуер, програмни материали или статии, публикувани от Code Farmer Network, са само за учебни и изследователски цели; Горното съдържание не трябва да се използва за търговски или незаконни цели, в противен случай потребителите ще понесат всички последствия. Информацията на този сайт идва от интернет, а споровете за авторски права нямат нищо общо с този сайт. Трябва напълно да изтриете горното съдържание от компютъра си в рамките на 24 часа след изтеглянето. Ако ви харесва програмата, моля, подкрепете оригинален софтуер, купете регистрация и получете по-добри услуги. Ако има нарушение, моля, свържете се с нас по имейл.

Mail To:help@itsvse.com