Ця стаття є дзеркальною статтею машинного перекладу, будь ласка, натисніть тут, щоб перейти до оригінальної статті.

Вид: 50989|Відповідь: 2

[Джерело] .NET Core реалізує розподілені блокування на базі Redis Lua [з вихідним кодом]

[Копіювати посилання]
Опубліковано 2021-5-9 21:11:18 | | | |
Сценарії застосування розподілених блокувань: З появою сервісів окремі додатки стають кластерами, розподілені блокування вирішують роботу різних процесів (потоків) на одному ресурсі в одночасних ситуаціях, і деякі сервіси повинні вимагати одного потоку для роботи, наприклад: зміни суми депозитів, зміни запасів товарів тощо.

Огляд:

.NET Core реалізує розподілений принцип блокування на основі Redis
https://www.itsvse.com/thread-9391-1-1.html

.net/c# Реалізація розподіленого блокування Zookeeper [Вихідний код]
https://www.itsvse.com/thread-4651-1-1.html

Redis використовує скрипти Lua для детальних пояснень
https://www.itsvse.com/thread-9634-1-1.html

[Реальний бій] ASP.NET Core базується на розподіленому розпродажі замків Redis
https://www.itsvse.com/thread-9397-1-1.html

У попередній статті «[Практика]ASP.NET Core Based on Redis Distributed Lock Flash Kill» коли ми додали блокування, ми також увімкнули фоновий потік для подовження часу блокування, щоб гарантувати, що блокування, зайняте іншими потоками, не буде випадково видалено.

Після того, як ви навчитеся використовувати Lua-скрипти в Redis, ви легко можете використовувати скрипти для завершення блокування захоплення та розблокування блокувань.


Спершу розглянемо зображення наступного вигляду:



Спочатку ми відкрили 1000 паралельних ниток, щоб змагатися за замок, і замок закінчився на 5 секунд.Ми завершили 1000 потоків за 5 секунд, і лише один потік успішно отримав блокуванняПісля 6 секунд очікування замок автоматично буде відкритий, і ви побачите, що друге завдання успішно отримало замок і одразу його зняло, а наступний код успішно отримав замок.

Скрипт lua для отримання замка виглядає так:

Скрипт lua для звільнення замка виглядає так:

Код інтерфейсу:

Завантаження вихідного коду:Вхід за гіперпосиланням видно.

Модифікація «[Практика] ASP.NET Core на основі розподіленого розпродажу флеш-розпродажу Redis» реалізована з використанням цієї статті, і наш вебсайт це імітує.10000 предметів, а потім написав консоль для імітації часу HTTP-запитуАншлаг завершується за 6 секунд, як показано на рисунку нижче:

[Реальний бій] ASP.NET Core базується на розподіленому розпродажі замків Redis
https://www.itsvse.com/thread-9397-1-1.html



Модифікувати код запиту на тестову симуляцію:



(Кінець)




Попередній:Кафка вручну встановлює зміщення зсуву
Наступний:ASP.NET Core отримує повне посилання на запит
Опубліковано 2021-11-4 13:50:43 |
{:1_1:} {:1_1:} {:1_1:} {:1_1:} {:1_1:} {:1_1:} {:1_1:} {:1_1:} {:1_1:} {:1_1:} {:1_1:} {:1_1:} {:1_1:} {:1_1:} {:1_1:} {:1_1:}
Опубліковано 2022-6-11 13:36:33 |
Дякую, дякую
Застереження:
Усе програмне забезпечення, програмні матеріали або статті, опубліковані Code Farmer Network, призначені лише для навчання та досліджень; Вищезазначений контент не повинен використовуватися в комерційних чи незаконних цілях, інакше користувачі несуть усі наслідки. Інформація на цьому сайті надходить з Інтернету, і спори щодо авторських прав не мають до цього сайту. Ви повинні повністю видалити вищезазначений контент зі свого комп'ютера протягом 24 годин після завантаження. Якщо вам подобається програма, будь ласка, підтримуйте справжнє програмне забезпечення, купуйте реєстрацію та отримайте кращі справжні послуги. Якщо є будь-яке порушення, будь ласка, зв'яжіться з нами електронною поштою.

Mail To:help@itsvse.com