|
|
Publicerad på 2018-12-04 13:29:37
|
|
|

【Problembeskrivning】 När användare använder APPEN fastnar sidan mycket och de klickar slumpmässigt, eftersom gränssnittet inte gör upprepade inlämningar, det kommer att finnas flera identiska förfrågningar, i servicelagret infogas inte en tråd fullständig, och den andra tråden kontrollerar tom. Så jag satte också in en. Ursprungligen hade alla en, men en försäljare hade tre, vilket resulterade i affärslogikfel. För hantering av skadliga inskickade inlägg kan det göras i front-end-delen, och det kan även finnas mogna lösningar i backend-delen.
【Lösning】1. Använd unikhetsbegränsningar för att lösa idempotensproblemet för transaktioner, sätt unikhetsbegränsningar, och om det finns ett scenario med upprepade commits, kommer undantag från unikhetsbegränsningar att läggas till på databasnivå, och affärslogiken kommer inte att förstöras. Unikhetsbegränsningar för sammansättningen av flera fält är också acceptabla.
Inloggningen med hyperlänken är synlig.
Ovanstående är för att göra anti-dupliceringsinställningar på databasnivå.
2. Uppnå anti-dupliceringsinställningar på kodnivå. Många gånger sägs det att databasens unikhetsbegränsning påverkar effektiviteten i datainsättning, eftersom varje insättning kräver en bedömning på databasnivå. Därför, utifrån kodnivån, är den vanliga praxisen på kodnivå att först välja och sedan infoga, men om det finns ett scenario med hög samtidighet kommer det ändå att förekomma upprepade commits. Du kan lägga till synkroniserat i logikkoden, så att i scenarier med hög samtidighet träder först och sedan insättning i kraft. Men effektiviteten är inte hög, och parallellen blir seriel. DCL-låsmekanism kan användas. (Har du märkt att metoden att skapa ett enda objekt i kopieringsfallet är mycket lik, först bedöm om objektet existerar, om det inte finns, skapa det, annars skapa det inte), den naturliga DCL-låsmekanismen är mer effektiv.
#分布式锁 Distribuerade lås kan också användas för att lösa problemet, vilket ofta används av Redis och Zookeeper. Detta avsnitt förklarar hur man implementerar distribuerade lås med hjälp av Redis. Det finns en setNx-kommandooperation i Redis, om den inte finns är det ett setvärde, och 1 returneras. Om den existerar, sätter den sig inte, och returnerar 0. Genom att använda Redis enkeltrådningsfunktion omvandlas högsamtidighetsscenen till en seriell via meddelandekön. Det finns dock fallgropar med distribuerade lås, så du måste vara uppmärksam.
Inloggningen med hyperlänken är synlig. 3. MVCC-mekanism?
3.1 Vad är MVCC-mekanismen? MVCC är en multiversions-samtidskontrollmekanism.
3.2 Vilka problem kan lösas? Låsmekanismen kan styra samtidiga operationer, men dess systemöverhead är stor, och MVCC kan i de flesta fall byta ut radnivålås, vilket kan minska systemöverhuvudet och förbättra prestandan.
Inloggningen med hyperlänken är synlig.
4. Det finns också ett problem med idempotens i budskapen
Till exempel, hur förhindrar man upprepad konsumtion av meddelanden?
I meddelandemellanvaran i MQ måste dessa vara förstådda och förstodliga.
|
Föregående:Frisörutbildning, lär dig frisör, kom in och tittaNästa:Föräldraberättelse Video Föräldraberättelse Ljud Föräldraberättelse Bilderbok Samling av föräldrakunskap
|