Este artigo é um artigo espelhado de tradução automática, por favor clique aqui para ir para o artigo original.

Vista: 34174|Resposta: 5

[.NET Core] O .NET Core implementa análise sintática distribuída do princípio de trava baseada no Redis

[Copiar link]
Publicado em 22/09/2020 09:17:22 | | | |
Em cenários de negócios, operações simultâneas de conteúdo, como inventário de mercadorias, o mesmo arquivo, etc., não são permitidas, e o aplicativo do programa é implantado em múltiplos servidores.
[Combate real] ASP.NET Core é baseado na venda flash de bloqueio distribuída da Redis
https://www.itsvse.com/thread-9397-1-1.html

O bloqueio distribuído baseado em zk previamente escrito é o seguinte:

.net/c# Implementação do Lock-Lock Distribuído do Zookeeper [Código-Fonte]
https://www.itsvse.com/thread-4651-1-1.html

O que você também precisa saber para ler este artigo:

Volátil vs. Intertravado vs. travado
https://www.itsvse.com/thread-5023-1-1.html

C# Computação Paralela Paralela.Para&Paralela.Para
https://www.itsvse.com/thread-3671-1-1.html

O .NET Core implementa locks distribuídos baseados no RedisO princípio é chamar o comando SETNX de redis, 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.

O login do hiperlink está visível.

Crie um novo projeto de console .NET Core 3.1, adicione uma referência ao StackExchange.Redis e use o comando nuget da seguinte forma:

Chamamos o método StringSet da biblioteca, através do código-fonte StackExchange.Redis, podemos ver que o método StringSet chamará o método privado GetStringSetMessage para executar diferentes comandos de conjunto através do valor de enumeração de quando, o código é o seguinte:

Executamos o comando SETNX 2000 vezes por meio de uma chamada de teste paralela ao programa, que é executada em 2 fases, nas quais a validade do cache da chave é de 5 segundos, ou seja, a chave será liberada automaticamente após 5 segundos, ou seja, o bloqueio será liberado.

O código é o seguinte:


Como você pode ver, um total de 2 inserções bem-sucedidas e 1998 tentativas fracassadas são exatamente o que esperávamos, e as renderizações são as seguintes:


No momento, a fechadura ainda não foi liberada.
(Fim)









Anterior:Não consegui encontrar uma solução alternativa para parte do caminho "\bin\roslyn\csc.exe"
Próximo:A EF Core Series 2 encapsula o OnModelCreating, cria índices usando reflexos e muito mais
 Senhorio| Publicado em 26/09/2020 15:37:52 |
test123
Publicado em 20/11/2020 11:18:31 |
Se houver um ambiente multithreaded e um ambiente multi-instância ao implantar containers, há algum problema com esse manejo?
 Senhorio| Publicado em 20/11/2020 11:29:44 |
qiuyueming Postado em 20-11-2020 11:18
Se houver um ambiente multithreaded e um ambiente multi-instância ao implantar containers, há algum problema com esse manejo? ...

Multi-instância significa multithreading, e no código-fonte, multi-threaded chama redis, e apenas uma thread recebe um lock
Publicado em 22/03/2022 14:32:40 |
Apoie, suporte
Publicado em 23/03/2022 11:15:30 |
Aprenda que isso é bom @
Disclaimer:
Todo software, material de programação ou artigos publicados pela Code Farmer Network são apenas para fins de aprendizado e pesquisa; O conteúdo acima não deve ser usado para fins comerciais ou ilegais, caso contrário, os usuários terão todas as consequências. As informações deste site vêm da Internet, e disputas de direitos autorais não têm nada a ver com este site. Você deve deletar completamente o conteúdo acima do seu computador em até 24 horas após o download. Se você gosta do programa, por favor, apoie um software genuíno, compre o registro e obtenha serviços genuínos melhores. Se houver qualquer infração, por favor, entre em contato conosco por e-mail.

Mail To:help@itsvse.com