O bloqueio distribuído baseado em zk previamente escrito é o seguinte:
O Redis implementa o princípio do bloqueio distribuído:
O princípio de implementar bloqueios distribuídos no Redis é chamar o comando SETNX de redis, e se a chave já existir, o comando SETNX não faz nada. O comando retorna 1 quando a configuração é bem-sucedida e 0 quando a configuração falha.
Primeiro, nosso site simula 10.000 produtos e depois escreve um console simulando uma requisição HTTP, que leva 40 segundos para concluir a compra, e a renderização é a seguinte:
Crie um novo site ASP.NET Core 3.1, e o pacote de bloqueio redis é o seguinte:
Vi que muitos bloqueios de liberação na Internet estão escritos da seguinte forma:
No entanto, parece que pode haver um problema, no caso de concorrência, é possível retornar verdadeiro no momento do julgamento, de fato é um bloqueio adicionado por si só, mas quando o bloqueio é excluído, pode estar emEm casos extremos, o bloqueio foi obtido por outro tópico, caso o bloqueio de outra pessoa seja excluído.
Portanto, ao obter um cadeado, é necessário abrir uma rosca para estender o tempo de validade do cadeado.
A interface do WeatherForecastController é a seguinte:
Você pode iniciar o site da API pela linha de comando, que pode ser facilmente reiniciada, da seguinte forma:
Crie uma nova requisição HTTP de mockup .NET Core para compra rápida, o código é o seguinte:
Se houver algo errado, obrigado por corrigir.
Por fim, anexe o código-fonte:
Turistas, se quiserem ver o conteúdo oculto deste post, por favor Resposta
|