Dit artikel is een spiegelartikel van machinevertaling, klik hier om naar het oorspronkelijke artikel te gaan.

Bekijken: 13217|Antwoord: 1

Interface-idempotentieproblemen

[Link kopiëren]
Geplaatst op 04-12-2018 13:29:37 | | |
【Probleembeschrijving】
Wanneer gebruikers de APP gebruiken, zit de pagina erg vast en klikken ze willekeurig, omdat de interface geen herhaalde inzendingen doet, er zijn meerdere identieke verzoeken in de servicelaag, één thread voegt niet compleet in en de andere thread controleert leeg. Dus heb ik er ook een geplaatst. Oorspronkelijk had iedereen er één, maar een verkoper had er drie, wat leidde tot fouten in de bedrijfslogica. Voor het verwerken van kwaadaardige inzendingen kan dit in het front-end gedeelte gebeuren, en er kunnen ook volwassen oplossingen zijn in het back-end gedeelte.

【Oplossing】1. Gebruik uniciteitsbeperkingen om het idempotentieprobleem van transacties op te lossen, set uniciteitsbeperkingen, en als er een scenario is van herhaalde commits, worden uitzonderingen op uniciteitsbeperkingen op databaseniveau gegooid en wordt de bedrijfslogica niet vernietigd. Uniekheidsbeperkingen op de samenstelling van meerdere velden zijn ook acceptabel.
De hyperlink-login is zichtbaar.

Bovenstaande is bedoeld om anti-duplicate instellingen op databaseniveau te maken.

2. Realiser anti-duplicatie-instellingen op codeniveau. Vaak wordt gezegd dat de uniciteitsbeperking van de database de efficiëntie van gegevensinvoeging beïnvloedt, omdat elke invoeging een oordeel op databaseniveau vereist. Daarom is de gebruikelijke praktijk op codeniveau om eerst te selecteren en dan in te voegen, maar als er een scenario met hoge gelijktijdigheid is, zullen er nog steeds herhaalde commits zijn. Je kunt gesynchroniseerd toevoegen aan de logicacode, zodat in scenario's met hoge gelijktijdigheid eerst selecteren en dan inserten effect hebben. Maar de efficiëntie is niet hoog, en de parallel wordt seriël. DCL-vergrendelingsmechanisme kan worden gebruikt. (Heb je gemerkt dat de methode om één object te maken in de kopieercase-modus erg vergelijkbaar is, beoordeel eerst of het object bestaat, als het niet bestaat, maak het dan aan, anders maak het niet), het natuurlijke DCL-vergrendelingsmechanisme is efficiënter.

#分布式锁
Gedistribueerde sloten kunnen ook worden gebruikt om het probleem op te lossen, wat vaak wordt gebruikt door Redis en Zookeeper. Deze sectie legt uit hoe gedistribueerde sloten geïmplementeerd kunnen worden met Redis.
Er is een setNx-commandobewerking in Redis; als die niet bestaat, is het een vaste waarde en wordt 1 teruggegeven. Als het bestaat, zet het zich niet en geeft 0 terug.
Met behulp van de single-threading-functie van Redis wordt de high-concurrency scene via de berichtwachtrij omgezet in een seriële versie.
Er zijn echter valkuilen bij gedistribueerde sloten, dus je moet goed opletten.
De hyperlink-login is zichtbaar.
3. MVCC-mechanisme?

3.1 Wat is het MVCC-mechanisme?
MVCC is een multiversie-gelijktijdigheidscontrolemechanisme.

3.2 Welke problemen kunnen worden opgelost?
Het vergrendelingsmechanisme kan gelijktijdige operaties regelen, maar de systeemoverhead is groot, en MVCC kan in de meeste gevallen sloten op rijniveau vervangen, wat de systeemoverhead kan verminderen en de prestaties kan verbeteren.

De hyperlink-login is zichtbaar.

4. Er is ook een probleem van idempotentie in berichten

Hoe voorkom bijvoorbeeld herhaaldelijk het consumeren van berichten?

In de berichtmiddleware in MQ moeten deze begrepen en begrepen worden.




Vorig:Kappersleer kaps, kom binnen en kijk eens
Volgend:Ouderverhaal Video Ouderverhaal Audio Ouderverhalen Prentenboek Verzameling Ouderkennis Verzameling
 Huisbaas| Geplaatst op 17-03-2021 10:27:09 |
BevoegdhedenIn programmeren wordt een idempotente operatie gekenmerkt door het feit dat willekeurige meervoudige uitvoeringen hetzelfde effect hebben als een enkele uitvoering.
Disclaimer:
Alle software, programmeermaterialen of artikelen die door Code Farmer Network worden gepubliceerd, zijn uitsluitend bedoeld voor leer- en onderzoeksdoeleinden; De bovenstaande inhoud mag niet worden gebruikt voor commerciële of illegale doeleinden, anders dragen gebruikers alle gevolgen. De informatie op deze site komt van het internet, en auteursrechtconflicten hebben niets met deze site te maken. Je moet bovenstaande inhoud volledig van je computer verwijderen binnen 24 uur na het downloaden. Als je het programma leuk vindt, steun dan de echte software, koop registratie en krijg betere echte diensten. Als er sprake is van een inbreuk, neem dan contact met ons op via e-mail.

Mail To:help@itsvse.com