Dieser Artikel ist ein Spiegelartikel der maschinellen Übersetzung, bitte klicken Sie hier, um zum Originalartikel zu springen.

Ansehen: 13217|Antwort: 1

Probleme mit der Interface Idempotenz

[Link kopieren]
Veröffentlicht am 04.12.2018 13:29:37 | | |
【Problembeschreibung】
Wenn Nutzer die APP verwenden, ist die Seite stark festgefahren, und sie klicken zufällig, da die Oberfläche keine wiederholten Einreichungen durchführt, es gibt mehrere identische Anfragen in der Service-Schicht, ein Thread wird nicht vollständig eingefügt und der andere Thread als leer. Also habe ich auch einen eingesetzt. Ursprünglich hatte jeder einen, aber ein Verkäufer hatte drei, was zu Logikfehlern führte. Die Verarbeitung bösartiger Einreichungen kann im Frontend-Teil erfolgen, und es kann auch ausgereifte Lösungen im Backend-Teil geben.

【Lösung】1. Verwenden Sie Eindeutigkeitsconstraints, um das Idempotenzproblem von Transaktionen zu lösen, setzen Sie Eindeutigkeitsconstraints, und wenn es ein Szenario wiederholter Comits gibt, werden Ausnahmen von Eindeutigkeitsconstraints auf Datenbankebene geworfen und die Geschäftslogik wird nicht zerstört. Eindeutigkeitsbeschränkungen für die Zusammensetzung mehrerer Körper sind ebenfalls akzeptabel.
Der Hyperlink-Login ist sichtbar.

Das oben Genannte dient dazu, auf Datenbankebene Anti-Duplikat-Einstellungen vorzunehmen.

2. Setzen Sie Anti-Duplikations-Einstellungen auf Codeebene um. Oft wird gesagt, dass die Eindeutigkeitsbedingung der Datenbank die Effizienz der Dateneinfügung beeinflusst, da jede Einfügung auf Datenbankebene ein Urteil erfordert. Daher ist laut Codeebene die übliche Praxis auf Codeebene, zuerst auszuwählen und dann einzufügen, aber bei einem hohen Nebenläufigkeitsszenario gibt es dennoch wiederholte Commits. Du kannst synchronisiert zum Logikcode hinzufügen, sodass in hohen Nebenläufigkeitsszenarien zuerst auswählen und dann einfügen wirken. Aber die Effizienz ist nicht hoch, und die Parallele wird seriellen. Der DCL-Verriegelungsmechanismus kann verwendet werden. (Hast du festgestellt, dass die Methode, ein einzelnes Objekt im Kopierfallmodus zu erstellen, sehr ähnlich ist, beurteile zuerst, ob das Objekt existiert, falls nicht, erstelle es, ansonsten erstelle es nicht), ist der natürliche DCL-Sperrmechanismus effizienter.

#分布式锁
Verteilte Schlösser können ebenfalls verwendet werden, um das Problem zu lösen, das häufig von Redis und Zookeeper verwendet wird. Dieser Abschnitt erklärt, wie verteilte Sperren mit Redis implementiert werden können.
Es gibt eine setNx-Befehlsoperation in Redis, falls sie nicht existiert, ist sie ein Set-Wert, und 1 wird zurückgegeben. Wenn es existiert, setzt es nicht und gibt 0 zurück.
Mit der Single-Threading-Funktion von Redis wird die High-Concurrency-Szene über die Nachrichtenwarteschlange in eine serielle Sequenz umgewandelt.
Allerdings gibt es bei verteilten Schlössern auch Fallstricke, daher sollten Sie aufpassen.
Der Hyperlink-Login ist sichtbar.
3. MVCC-Mechanismus?

3.1 Was ist der MVCC-Mechanismus?
MVCC ist ein mehrversioniger Nebenläufigkeitskontrollmechanismus.

3.2 Welche Probleme können gelöst werden?
Der Verriegelungsmechanismus kann gleichzeitige Operationen steuern, aber der Systemaufwand ist groß, und MVCC kann in den meisten Fällen Reihenschlösser ersetzen, was den Systemaufwand senken und die Leistung verbessern kann.

Der Hyperlink-Login ist sichtbar.

4. Es gibt auch ein Problem der Idempotenz in Botschaften

Zum Beispiel, wie kann man wiederholten Konsum von Nachrichten verhindern?

In der Nachrichten-Middleware in MQ müssen diese verstanden und verstanden werden.




Vorhergehend:Friseur lernen Friseur – komm vorbei und schau dir das an
Nächster:Parenting Story Video Parenting Story Audio Parenting Story Bilderbuch Erziehungswissenssammlung
 Vermieter| Veröffentlicht am 17.03.2021 10:27:09 |
BefugnisseIn der Programmierung zeichnet sich eine idempotente Operation dadurch aus, dass ihre beliebigen mehrfachen Ausführungen denselben Effekt wie eine einzelne Ausführung haben.
Verzichtserklärung:
Alle von Code Farmer Network veröffentlichten Software, Programmiermaterialien oder Artikel dienen ausschließlich Lern- und Forschungszwecken; Die oben genannten Inhalte dürfen nicht für kommerzielle oder illegale Zwecke verwendet werden, andernfalls tragen die Nutzer alle Konsequenzen. Die Informationen auf dieser Seite stammen aus dem Internet, und Urheberrechtsstreitigkeiten haben nichts mit dieser Seite zu tun. Sie müssen die oben genannten Inhalte innerhalb von 24 Stunden nach dem Download vollständig von Ihrem Computer löschen. Wenn Ihnen das Programm gefällt, unterstützen Sie bitte echte Software, kaufen Sie die Registrierung und erhalten Sie bessere echte Dienstleistungen. Falls es eine Verletzung gibt, kontaktieren Sie uns bitte per E-Mail.

Mail To:help@itsvse.com