【Opis problema】 Ko uporabniki uporabljajo aplikacijo, je stran zelo zataknjena in klikajo naključno, ker vmesnik ne omogoča ponavljajočih se oddaj, je več enakih zahtev; na servisni plasti ena nit ni dokončana, druga pa preverja nit, prazna. Zato sem tudi enega vstavila. Sprva je imel vsak enega, vendar je imel prodajalec tri, kar je povzročalo napake v poslovni logiki. Za obdelavo zlonamernih oddaj je to mogoče opraviti v sprednjem delu, v ozadju pa so lahko tudi zrele rešitve.
【Rešitev】1. Uporaba omejitev enoličnosti za reševanje problema idempotentnosti transakcij, določitev omejitev edinstvenosti, in če pride do ponavljajočih se commitov, se izjeme od omejitev unikatnosti vržejo na raven baze podatkov, poslovna logika pa ne bo uničena. Sprejemljive so tudi omejitve unikatnosti pri sestavi več polj.
Prijava do hiperpovezave je vidna.
Zgoraj navedeno je za nastavitev proti podvajanju na ravni baze podatkov.
2. Spoznajte nastavitve proti podvajanju na ravni kode. Velikokrat se pravi, da omejitev edinstvenosti baze vpliva na učinkovitost vstavljanja podatkov, saj vsako vstavljanje zahteva presojo na ravni baze podatkov. Zato, glede na raven kode, je običajna praksa na ravni kode, da najprej izberejo in nato vstavijo, vendar če pride do scenarija visoke sočasnosti, bodo še vedno ponavljajoče se potrditve. Sinhronizirano lahko dodaš v logično kodo, tako da v scenarijih z veliko sočasnostjo najprej izbereš, nato pa vstavitev začne veljati. A učinkovitost ni visoka in vzporednica postane serijska. Uporablja se lahko mehanizem DCL ključavnice. (Ste ugotovili, da je metoda ustvarjanja enega objekta v načinu kopiranja zelo podobna, najprej presodite, ali objekt obstaja, če ne obstaja, ga ustvarite, sicer ga ne ustvarjajte), naravni DCL zaklepni mehanizem je učinkovitejši.
#分布式锁 Za rešitev problema se lahko uporabijo tudi razpršene ključavnice, ki jih pogosto uporabljata Redis in Zookeeper. Ta razdelek pojasnjuje, kako implementirati porazdeljene zaklepe z uporabo Redis. V Redisu obstaja ukazna operacija setNx, če ne obstaja, je to določena vrednost in vrne se 1. Če obstaja, se ne nastavi in vrne 0. Z uporabo funkcije enonitnega povezovanja v Redisu se prizor z visoko sočasnostjo spremeni v serijsko preko vrste sporočil. Vendar pa obstajajo pasti pri porazdeljenih ključavnicah, zato morate biti pozorni.
Prijava do hiperpovezave je vidna. 3. Mehanizem MVCC?
3.1 Kaj je mehanizem MVCC? MVCC je mehanizem za nadzor sočasnosti z več različicami.
3.2 Katere težave je mogoče rešiti? Mehanizem za zaklepanje lahko nadzoruje sočasne operacije, vendar je njegov sistemski strošek velik, MVCC pa lahko v večini primerov nadomesti zapornice na ravni vrstic, kar lahko zmanjša sistemske stroške in izboljša zmogljivost.
Prijava do hiperpovezave je vidna.
4. Obstaja tudi problem idempotentnosti v sporočilih
Na primer, kako preprečiti ponavljajoče se uživanje sporočil?
V sporočilni vmesni programski opremi v MQ je treba to razumeti in razumeti.
|