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

Vista: 13217|Resposta: 1

Problemas de idempotência de interface

[Copiar link]
Publicado em 04/12/2018 13:29:37 | | |
【Descrição do Problema】
Quando os usuários usam o APP, a página fica muito travada, e eles clicam aleatoriamente, porque a interface não faz envios repetidos, haverá várias solicitações idênticas; na camada de serviço, uma thread não insere complet, e a outra thread verifica, vazia. Então também coloquei um. Originalmente, todos tinham um, mas um vendedor tinha três, resultando em erros de lógica de negócios. Para o processamento de submissões maliciosas, isso pode ser feito na parte front-end, e também podem existir soluções maduras na parte back-end.

【Solução】1. Use restrições de unicidade para resolver o problema de idempotência das transações, defina restrições de unicidade e, se houver um cenário de commits repetidos, exceções às restrições de unicidade serão lançadas no nível do banco de dados, e a lógica de negócio não será destruída. Restrições de unicidade na composição de múltiplos campos também são aceitáveis.
O login do hiperlink está visível.

O que foi dito acima é para criar configurações anti-duplicação no nível do banco de dados.

2. Realizar configurações anti-duplicação no nível do código. Muitas vezes, diz-se que a restrição de unicidade do banco de dados afetará a eficiência da inserção de dados, pois cada inserção requer um julgamento no nível do banco de dados. Portanto, julgando pelo nível do código, a prática comum no nível do código é selecionar primeiro e depois inserir, mas se houver um cenário de alta concorrência, ainda haverá commits repetidos. Você pode adicionar sincronizado ao código lógico, de modo que, em cenários de alta concorrência, selecione primeiro e depois inserir efeito. Mas a eficiência não é alta, e o paralelo torna-se seriado. O mecanismo de travamento DCL pode ser utilizado. (Você já percebeu que o método de criar um único objeto no modo de cópia do caso é muito semelhante, primeiro julgue se o objeto existe, se não existe, crie-o, caso contrário não o crie), o mecanismo natural de bloqueio DCL é mais eficiente.

#分布式锁
Fechaduras distribuídas também podem ser usadas para resolver o problema, comumente usadas por Redis e Zookeeper. Esta seção explica como implementar bloqueios distribuídos usando Redis.
Existe uma operação de comando setNx no Redis, se ela não existir, é um valor fixo, e 1 é retornado. Se existir, não se define e retorna 0.
Utilizando o recurso de single-threading do Redis, a cena de alta concorrência é convertida em uma série através da fila de mensagens.
No entanto, existem armadilhas nas fechaduras distribuídas, então você precisa prestar atenção.
O login do hiperlink está visível.
3. Mecanismo MVCC?

3.1 O que é o mecanismo MVCC?
MVCC é um mecanismo de controle de concorrência com múltiplas versões.

3.2 Quais problemas podem ser resolvidos?
O mecanismo de travamento pode controlar operações simultâneas, mas sua sobrecarga do sistema é grande, e o MVCC pode substituir travas em nível de fileira na maioria dos casos, o que pode reduzir a sobrecarga do sistema e melhorar o desempenho.

O login do hiperlink está visível.

4. Há também um problema de idempotência nas mensagens

Por exemplo, como evitar o consumo repetido de mensagens?

No middleware de mensagens no MQ, esses devem ser compreendidos e compreendidos.




Anterior:Cabeleireiro Aprenda cabeleireiro, venha dar uma olhada
Próximo:Vídeo de História de Paternidade Áudio História de Paternidade Livro de Histórias de Paternidade Coleção de Conhecimento sobre Parentalidade
 Senhorio| Publicado em 17/03/2021 10:27:09 |
PoderesEm programação, uma operação idempotente é caracterizada pelo fato de que suas múltiplas execuções arbitrárias têm o mesmo efeito que uma única execução.
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