Questo articolo è un articolo speculare di traduzione automatica, clicca qui per saltare all'articolo originale.

Vista: 13217|Risposta: 1

Problemi di idempotenza dell'interfaccia

[Copiato link]
Pubblicato su 04/12/2018 13:29:37 | | |
【Descrizione del problema】
Quando gli utenti usano l'APP, la pagina è molto bloccata e cliccheranno casualmente, poiché l'interfaccia non gestisce invii ripetuti, ci saranno diverse richieste identiche, nel livello di servizio, un thread non inserisce completato e l'altro thread controlla, vuoto. Così ne ho inserita anche una. Inizialmente, tutti ne avevano uno, ma un venditore ne aveva tre, causando errori di logica aziendale. Per l'elaborazione di sottomissioni dannose, può essere fatto nella parte front-end, e possono esserci soluzioni mature anche nella parte back-end.

【Soluzione】1. Utilizzare vincoli di unicità per risolvere il problema dell'idempotenza delle transazioni, impostare vincoli di unicità e, se si verifica uno scenario di commit ripetuti, le eccezioni ai vincoli di unicità verranno lanciate a livello di database e la logica di business non verrà distrutta. Sono accettabili anche vincoli di unicità sulla composizione di più campi.
Il login del link ipertestuale è visibile.

Quanto sopra serve a creare impostazioni anti-duplicazione a livello di database.

2. Realizzare le impostazioni anti-duplicazione a livello di codice. Molte volte si dice che il vincolo di unicità del database influenzerà l'efficienza dell'inserimento dei dati, perché ogni inserimento richiede un giudizio a livello di database. Pertanto, a giudicare dal livello di codice, la pratica comune a livello di codice è selezionare prima e poi inserire, ma se si verifica uno scenario di concorrenza elevata, ci saranno comunque commit ripetuti. Puoi aggiungere sincronizzato al codice logico, così che in scenari ad alta concorrenza selezionare prima e poi inserire avrà effetto. Ma l'efficienza non è elevata, e il parallelo diventa seriale. Può essere utilizzato il meccanismo di blocco DCL. (Hai riscontrato che il metodo per creare un singolo oggetto in modalità copia del caso è molto simile, prima giudicare se l'oggetto esiste, se non esiste, crearlo, altrimenti non crearlo), il meccanismo naturale di blocco DCL è più efficiente.

#分布式锁
Le serrature distribuite possono essere utilizzate anche per risolvere il problema, comunemente utilizzate da Redis e Zookeeper. Questa sezione spiega come implementare i blocchi distribuiti utilizzando Redis.
C'è un'operazione di comando setNx in Redis, se non esiste, è un valore set, e 1 viene restituito. Se esiste, non si imposta e restituisce 0.
Utilizzando la funzione single-threading di Redis, la scena ad alta concorrenza viene trasformata in una serie tramite la coda dei messaggi.
Tuttavia, ci sono delle insidie nelle serrature distribuite, quindi devi prestare attenzione.
Il login del link ipertestuale è visibile.
3. Meccanismo MVCC?

3.1 Cos'è il meccanismo MVCC?
MVCC è un meccanismo di controllo della concorrenza multi-versione.

3.2 Quali problemi si possono risolvere?
Il meccanismo di bloccaggio può controllare operazioni concorrenti, ma il suo sovraccarico di sistema è elevato, e MVCC può sostituire i blocchi a livello di riga nella maggior parte dei casi, il che può ridurre il sovraccarico di sistema e migliorare le prestazioni.

Il login del link ipertestuale è visibile.

4. C'è anche un problema di idempotenza nei messaggi

Ad esempio, come prevenire il consumo ripetuto di messaggi?

Nel middleware dei messaggi in MQ, questi devono essere compresi e compresi.




Precedente:Parrucchiera Impara parrucchiere, vieni a dare un'occhiata
Prossimo:Video di Storia di Genitorialità Storia di Genitorialità Audio Libro illustrato di Storie di Genitorialità Collezione di Conoscenze sulla Genitorialità
 Padrone di casa| Pubblicato su 17/03/2021 10:27:09 |
PoteriIn programmazione, un'operazione idempotente è caratterizzata dal fatto che le sue esecuzioni multiple arbitrarie hanno lo stesso effetto di una singola esecuzione.
Disconoscimento:
Tutto il software, i materiali di programmazione o gli articoli pubblicati dalla Code Farmer Network sono destinati esclusivamente all'apprendimento e alla ricerca; I contenuti sopra elencati non devono essere utilizzati per scopi commerciali o illegali, altrimenti gli utenti dovranno sostenere tutte le conseguenze. Le informazioni su questo sito provengono da Internet, e le controversie sul copyright non hanno nulla a che fare con questo sito. Devi eliminare completamente i contenuti sopra elencati dal tuo computer entro 24 ore dal download. Se ti piace il programma, ti preghiamo di supportare software autentico, acquistare la registrazione e ottenere servizi autentici migliori. In caso di violazione, vi preghiamo di contattarci via email.

Mail To:help@itsvse.com