【Problemos aprašymas】 Kai vartotojai naudojasi APP, puslapis yra labai įstrigęs, ir jie spustelės atsitiktinai, nes sąsaja neatlieka pakartotinių pateikimų, bus kelios identiškos užklausos, paslaugų sluoksnyje viena gija neįterpiama baigta, o kita gija patikrinama, tuščia. Taigi aš taip pat įterpiau vieną. Iš pradžių visi turėjo vieną, bet pardavėjas turėjo tris, todėl atsirado verslo logikos klaidų. Kenkėjiškų pateikimų apdorojimas gali būti atliekamas priekinėje dalyje, o galinėje dalyje taip pat gali būti brandžių sprendimų.
【Sprendimas】1. Naudokite unikalumo apribojimus, kad išspręstumėte sandorių idempotencijos problemą, nustatykite unikalumo apribojimus, o jei yra pakartotinių įsipareigojimų scenarijus, unikalumo apribojimų išimtys bus išmestos duomenų bazės lygiu, o verslo logika nebus sunaikinta. Taip pat priimtini kelių laukų sudėties unikalumo apribojimai.
Hipersaito prisijungimas matomas.
Aukščiau pateikta informacija yra nustatyti apsaugos nuo dublikatų nustatymus duomenų bazės lygiu.
2. Realizuokite apsaugos nuo dubliavimo nustatymus kodo lygiu. Daug kartų sakoma, kad duomenų bazės unikalumo apribojimas turės įtakos duomenų įterpimo efektyvumui, nes kiekvienam įterpimui reikalingas sprendimas duomenų bazės lygiu. Todėl, sprendžiant iš kodo lygio, įprasta praktika kodo lygyje yra pirmiausia pasirinkti, o tada įterpti, tačiau jei yra didelis sutapimo scenarijus, vis tiek bus kartojami įsipareigojimai. Galite įtraukti sinchronizuotą į loginį kodą, kad didelio sutapimo scenarijuose pirmiausia pasirinktumėte, o tada įsigaliotų įterpimas. Tačiau efektyvumas nėra didelis, o paralelė tampa nuosekli. Galima naudoti DCL užrakto mechanizmą. (Ar pastebėjote, kad vieno objekto kūrimo būdas kopijavimo dėklo režimu yra labai panašus, pirmiausia spręskite, ar objektas egzistuoja, jei jo nėra, sukurkite jį, kitaip jo nekurkite), natūralus DCL užrakto mechanizmas yra efektyvesnis.
#分布式锁 Problemai išspręsti taip pat gali būti naudojamos paskirstytos spynos, kurias dažniausiai naudoja "Redis" ir "Zookeeper". Šiame skyriuje paaiškinama, kaip įdiegti paskirstytus užraktus naudojant Redis. "Redis" yra komandos operacija setNx, jei jos nėra, tai yra nustatyta reikšmė ir grąžinama 1. Jei jis yra, jis nenustatomas ir grąžina 0. Naudojant vienos gijos funkciją Redis, didelio sutapimo scena paverčiama serija per pranešimų eilę. Tačiau paskirstytose spynose yra spąstų, todėl reikia atkreipti dėmesį.
Hipersaito prisijungimas matomas. 3. MVCC mechanizmas?
3.1 Kas yra MVCC mechanizmas? MVCC yra kelių versijų lygiagrečios kontrolės mechanizmas.
3.2 Kokias problemas galima išspręsti? Užrakinimo mechanizmas gali valdyti vienu metu vykdomas operacijas, tačiau jo sistemos pridėtinės išlaidos yra didelės, o MVCC daugeliu atvejų gali pakeisti eilės lygio spynas, o tai gali sumažinti sistemos pridėtines išlaidas ir pagerinti našumą.
Hipersaito prisijungimas matomas.
4. Taip pat yra idempotencijos problema pranešimuose
Pavyzdžiui, kaip išvengti pakartotinio pranešimų vartojimo?
MQ pranešimo tarpinėje programinėje įrangoje jie turi būti suprantami ir suprantami.
|