Cenários de aplicação de locks distribuídos: Com o desenvolvimento de serviços, aplicações individuais se tornam clusters, locks distribuídos resolvem a operação de diferentes processos (threads) no mesmo recurso em situações simultâneas, e alguns serviços precisam exigir uma única thread para operar, por exemplo: mudanças nos valores dos depósitos, alterações no estoque de mercadorias, etc.
Revisar:
No artigo anterior "[Practice]ASP.NET Core Based on Redis Distributed Lock Flash Kill", quando adicionamos um bloqueio, também ativamos uma thread em segundo plano para estender o tempo do lock, garantindo que, ao ser liberado, o lock ocupado por outras threads não seja excluído por engano.
Depois de aprender o Redis para usar scripts Lua, você pode facilmente usar scripts para completar bloqueios de ocupação e liberar bloqueios.
Primeiro, vamos analisar as renderizações da seguinte forma:
Primeiro abrimos 1000 roscas paralelas para competir pelo cadeado, e o cadeado expirou por 5 segundos.Completamos 1000 threads em 5 segundos, e apenas 1 thread conseguiu obter o bloqueio com sucessoApós esperar 6 segundos, a trava será liberada automaticamente, e você pode ver que a segunda tarefa conseguiu a trava com sucesso, e imediatamente a soltou, e o código subsequente conseguiu a trava com sucesso.
O script lua para obter o bloqueio é o seguinte:
O script lua para liberar o bloqueio é o seguinte:
Código da interface:
Código fonte para download:O login do hiperlink está visível.
Modificar "[Praticar] ASP.NET Núcleo baseado em Redis distributed lock flash sale" é implementado usando este artigo, e nosso site simula isso10.000 itens, e então escreveu um console para simular o tempo de requisição HTTPO esgotamento é concluído em 6 segundos, como mostrado na figura abaixo:
Modificar o código de solicitação de simulação de teste:
(Fim)
|