Cet article est un article miroir de traduction automatique, veuillez cliquer ici pour accéder à l’article original.

Vue: 13217|Répondre: 1

Problèmes d’idempotence de l’interface

[Copié le lien]
Publié sur 04/12/2018 13:29:37 | | |
【Description du problème】
Lorsque les utilisateurs utilisent l’APP, la page est très bloquée et ils cliqueront aléatoirement, car l’interface ne fait pas de soumissions répétées, il y aura plusieurs requêtes identiques dans la couche de service, un thread ne s’insère pas complet, et l’autre thread vérifie, vide. Alors j’en ai aussi inséré un. Au départ, tout le monde en avait un, mais un vendeur en avait trois, ce qui entraînait des erreurs de logique métier. Pour le traitement des soumissions malveillantes, cela peut se faire en front-end, et il peut aussi y avoir des solutions matures en back-end.

【Solution】1. Utiliser des contraintes d’unicité pour résoudre le problème d’idempotence des transactions, définir des contraintes d’unicité, et en cas de commits répétés, des exceptions aux contraintes d’unicité seront lancées au niveau de la base de données, et la logique métier ne sera pas détruite. Les contraintes d’unicité sur la composition de plusieurs champs sont également acceptables.
La connexion hyperlientérée est visible.

Ce qui précède vise à créer des paramètres anti-duplication au niveau de la base de données.

2. Réaliser les réglages anti-duplication au niveau du code. On dit souvent que la contrainte d’unicité de la base de données affectera l’efficacité de l’insertion des données, car chaque insertion nécessite un jugement au niveau de la base de données. Par conséquent, à en juger par le niveau du code, la pratique courante au niveau du code est de sélectionner d’abord puis d’insérer, mais en cas de forte concurrence de la concurrence, il y aura toujours des commits répétés. Vous pouvez ajouter synchronisation au code logique, de sorte que dans les scénarios de forte concurrence, sélectionnez d’abord puis insérez effet. Mais l’efficacité n’est pas élevée, et le parallèle devient sérieux. Un mécanisme de verrouillage DCL peut être utilisé. (Avez-vous constaté que la méthode de création d’un seul objet en mode de copie est très similaire : d’abord juger si l’objet existe, s’il n’existe pas, le créer, sinon ne pas le créer), le mécanisme naturel de verrouillage DCL est plus efficace.

#分布式锁
Les verrous distribués peuvent également être utilisés pour résoudre le problème, couramment utilisés par Redis et Zookeeper. Cette section explique comment implémenter des verrous distribués en utilisant Redis.
Il existe une opération de commande setNx dans Redis, si elle n’existe pas, c’est une valeur fixe, et 1 est retourné. Si elle existe, elle ne se fixe pas et retourne 0.
En utilisant la fonction de threading unique de Redis, la scène à forte concurrence est transformée en série via la file d’attente de messages.
Cependant, il existe des pièges dans les serrures distribuées, il faut donc faire attention.
La connexion hyperlientérée est visible.
3. Mécanisme MVCC ?

3.1 Qu’est-ce que le mécanisme MVCC ?
MVCC est un mécanisme de contrôle de concurrence multi-versions.

3.2 Quels problèmes peuvent être résolus ?
Le mécanisme de verrouillage peut contrôler les opérations simultanées, mais sa surcharge système est importante, et le MVCC peut remplacer les verrous au niveau des rangées dans la plupart des cas, ce qui peut réduire sa surcharge système et améliorer les performances.

La connexion hyperlientérée est visible.

4. Il existe aussi un problème d’idempotence dans les messages

Par exemple, comment éviter la consommation répétée de messages ?

Dans le middleware de message dans MQ, ces éléments doivent être compris et compris.




Précédent:Coiffure Apprenez coiffure, venez voir
Prochain:Vidéo d’histoire parentale Histoire de parentalité Audio Histoire de parentalité Livre illustré de connaissances parentales Collection de connaissances parentales
 Propriétaire| Publié sur 17/03/2021 10:27:09 |
PouvoirsEn programmation, une opération idempotente se caractérise par le fait que ses exécutions multiples arbitraires ont le même effet qu’une seule exécution.
Démenti:
Tous les logiciels, supports de programmation ou articles publiés par Code Farmer Network sont uniquement destinés à l’apprentissage et à la recherche ; Le contenu ci-dessus ne doit pas être utilisé à des fins commerciales ou illégales, sinon les utilisateurs assumeront toutes les conséquences. Les informations sur ce site proviennent d’Internet, et les litiges de droits d’auteur n’ont rien à voir avec ce site. Vous devez supprimer complètement le contenu ci-dessus de votre ordinateur dans les 24 heures suivant le téléchargement. Si vous aimez le programme, merci de soutenir un logiciel authentique, d’acheter l’immatriculation et d’obtenir de meilleurs services authentiques. En cas d’infraction, veuillez nous contacter par e-mail.

Mail To:help@itsvse.com